anchor.diff:              end;
             end else
             begin
  +            // hexagonal
               X := X - ((Mask xor PNativeInt(@Store.Info.FinishPoint)^) and Y and 1) - (Y shr 1);
               ChildNode.SortValue := {$ifdef CPUX86}ChildNode.{$endif}Path +
                  Cardinal(Store.Info.HeuristicsLine * (Y + (X and ((X shr HIGH_NATIVE_BIT) - 1))));
  
positive.code:           X := X xor Mask;
            Dec(X, Mask);
  
            // calculate
            if (Store.MapKindFlags = 2{hexagonal}) then
            begin
              if (X <= Y) then
              begin
                ChildNode.SortValue := {$ifdef CPUX86}ChildNode.{$endif}Path +
  
negative.code:       Point.Y := Word(N);
        Point.X := N shr 16;
      {$endif}
  
      // counters
      N := Node.NodeInfo;
      X := (N shr 23) and -2;
      {$ifdef CPUX86}
        Inc(Buffer.Values[X + Store.LastLine]);
        Store.LastLine := N and 1;
        Inc(Buffer.Values[X + (N and 1)]);
      {$else}
        _Buffer := @Buffer;
        Inc(_Buffer.Values[X + Store.LastLine]);
        Store.LastLine := N and 1;
        Inc(_Buffer.Values[X + (N and 1)]);
      {$endif}
    until ({$ifdef CPUX86}Store.{$endif}StartNode = Node);
  
    // correction
    {$ifdef CPUX86}
      Dec(Buffer.Values[X + (N and 1)]);
    {$else}
      Dec(_Buffer.Values[X + (N and 1)]);
    {$endif}
  
    // distance
  