anchor.diff:            Path := TileWeights[NodeInfo shr 24];
             Inc(Path, TileWeights[ParentBits shr 24]);
             if (Path > PATHLESS_TILE_WEIGHT) then goto nextchild_continue;
  -          Path := Store.Current.Path + (Path shr 1);
  +          Path := (Path shr 1) + Store.Current.Path;
   
             // heuristed flag
             {$ifdef CPUX86}
  
positive.code: 
            // Way
            Mask := 2*Byte(dY > 0) + (dY shr HIGH_NATIVE_BIT);
            Mask := (Mask * 3) + 2*Byte(dX > 0) + (dX shr HIGH_NATIVE_BIT);
            ChildNode.NodeInfo := ChildNode.NodeInfo or Cardinal(Mask);
  
            // Y := Abs(dY)
            Mask := -(dY shr HIGH_NATIVE_BIT);
            Y := (dY xor Mask) - Mask;
  
            // X := Abs(dY)
            Mask := -(dX shr HIGH_NATIVE_BIT);
            X := (dX xor Mask) - Mask;
  
            // calculate
            if (Store.HexagonalFlag and 1 = 0) then
  
negative.code:         ChildNode.NodeInfo := ParentBits;
  
          // sort value as hot knownpath node marker
          ParentBits{ChildSortValue} := ChildNode.SortValue;
  
          // new Path and SortValue
          ChildNode.Path := Path;
          ChildNode.SortValue := Path + {heuristics}(ParentBits{ChildSortValue} - ChildPath);
  
          // remove from opened list
          if (ParentBits{ChildSortValue} < NATTANABLE_LENGTH_LIMIT) then
          begin
            Node{Left} := ChildNode.Prev;
            Child{Right} := NativeUInt(ChildNode.Next);
            NativeUInt(Node{Left}.Next) := Child{Right};
            PCPFNode(Child{Right}).Prev := Node{Left};
          end;
        end;
  
        // add child node to buffer
  