anchor.diff:    TCPFNodeBuffers = array[0..31] of NativeUInt;
     PCPFNodeBuffers = ^TCPFNodeBuffers;
   
  -  TCPFStart = record
  +  TCPFStart = packed record
       X: Integer;
       Y: Integer;
       Node: PCPFNode;
  
positive.code:   Inc(StartPoint);
    for i := Params.StartsCount downto 2 do
    begin
      // todo: fast comparison
      if (StartPoint.DistanceAsInt64 < BestStartPoint.DistanceAsInt64) then
        BestStartPoint := StartPoint;
  
      Inc(StartPoint);
  
negative.code:   end;
  
    // test finish point coordinates
    FinishX := Params.Finish.X;
    {$ifNdef CPUX86}
    FinishY := Params.Finish.Y;
    {$endif}
    if (Cardinal(FinishX) >= MapWidth) or (Cardinal({$ifdef CPUX86}Params.Finish.Y{$else}FinishY{$endif}) >= MapHeight) then
    begin
      RaiseCoordinates(Params.Finish.X, Params.Finish.Y, 'finish');
      Exit;
    end;
  
    // pathless finish tile
    Cell := @FInfo.CellArray[Integer(MapWidth) * {$ifdef CPUX86}Params.Finish.Y{$else}FinishY{$endif} + FinishX];
    CellInfo := Cell.NodePtr;
    if (CellInfo and NODEPTR_FLAG_ALLOCATED <> 0) then
  