Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / example.tasm
Size: Mime:
€]q(cpygments.token
_TokenType
qXCommentqXSingleq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXPreprocq†q…qq}q(hh	]q…qRqh
hubhhXMultiq†q…qq}q(hh	]q …q!Rq"h
hubhhXHashbangq#†q$…q%q&}q'(hh	]q(…q)Rq*h
hubhhhX
SingleLineq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhXDocq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhX	Directiveq;†q<…q=q>}q?(hh	]q@…qARqBh
hubhhX	MultilineqC†qD…qEqF}qG(hh	]qH…qIRqJh
hubhhX
SinglelineqK†qL…qMqN}qO(hh	]qP…qQRqRh
hubhhXPreprocFileqS†qT…qUqV}qW(hh	]qX…qYRqZh
hubhhXSpecialq[†q\…q]q^}q_(hh	]q`…qaRqbh
hube…qcRqdh
h)…qeqf}qg(hh	]qh(hXEscapeqi…qj…qkql}qm(hh	]qn…qoRqph
hfubhXOperatorqq…qr…qsqt}qu(hh	]qv(hhqXDBSqw†qx…qyqz}q{(hh	]q|…q}Rq~h
htubhhqXWordq†q€…qq‚}qƒ(hh	]q„…q…Rq†h
htube…q‡Rqˆh
hfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh	]qŽ(hh‰XTagq†q…q‘q’}q“(hh	]q”…q•Rq–h
hŒubhh‰XEntityq—†q˜…q™qš}q›(hh	]qœhh‰h—hw‡q…qžqŸ}q (hh	]q¡…q¢Rq£h
hšuba…q¤Rq¥h
hŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh	]q«…q¬Rq­h
hŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh	]q³…q´Rqµh
hŒubhh‰XClassq¶†q·…q¸q¹}qº(hh	]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh	]qqÁRqÂh
h¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh	]qȅqÉRqÊh
h¹ube…qËRqÌh
hŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh	]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh	]q؅qÙRqÚh
hÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh	]q߅qàRqáh
hÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh	]qç…qèRqéh
hÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh	]qï…qðRqñh
hÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh	]q÷…qøRqùh
hÐube…qúRqûh
hŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh	]rhh‰hüh͇r…rr}r(hh	]r…rRrh
hÿuba…r	Rr
h
hŒhÍjubhh‰X	Namespacer†r…r
r}r(hh	]r…rRrh
hŒubhh‰XPropertyr†r…rr}r(hh	]r…rRrh
hŒubhh‰XSymbolr†r…rr}r(hh	]r …r!Rr"h
hŒubhh‰XClassesr#†r$…r%r&}r'(hh	]r(…r)Rr*h
hŒubhh‰XPseudor+†r,…r-r.}r/(hh	]r0…r1Rr2h
hŒubhh‰XLabelr3†r4…r5r6}r7(hh	]r8…r9Rr:h
hŒubhh‰hq†r;…r<r=}r>(hh	]r?…r@RrAh
hŒubhh‰XBuiltinrB†rC…rDrE}rF(hh	]rG(hh‰jBj+‡rH…rIrJ}rK(hh	]rL…rMRrNh
jEubhh‰jBXTyperO‡rP…rQrR}rS(hh	]rT…rURrVh
jEube…rWRrXh
hŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh	]r^…r_Rr`h
hŒubhh‰XOtherra†rb…rcrd}re(hh	]rfhh‰jaXMemberrg‡rh…rirj}rk(hh	]rl…rmRrnh
jduba…roRrph
hŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh	]rvhh‰jqhâ‡rw…rxry}rz(hh	]r{…r|Rr}h
jtuba…r~Rrh
hŒhâjyubhh‰jO†r€…rr‚}rƒ(hh	]r„…r…Rr†h
hŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh	]rŒ…rRrŽh
hŒube…rRrh
hfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh	]r–(hj‘ja†r—…r˜r™}rš(hh	]r›…rœRrh
j”ubhj‘XCharrž†rŸ…r r¡}r¢(hh	]r£…r¤Rr¥h
j”ubhj‘XDater¦†r§…r¨r©}rª(hh	]r«…r¬Rr­h
j”ubhj‘XScalarr®†r¯…r°r±}r²(hh	]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh	]r¹…rºRr»h
j±uba…r¼Rr½h
j”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh	]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh	]rÉ…rÊRrËh
jÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
jÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh	]rØ…rÙRrÚh
jÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh	]rß…ràRráh
jÁubhj‘j¾h‡râ…rãrä}rå(hh	]ræ…rçRrèh
jÁubhj‘j¾ja‡ré…rêrë}rì(hh	]rí…rîRrïh
jÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh	]rõ…röRr÷h
jÁubhj‘j¾hi‡rø…rùrú}rû(hh	]rü…rýRrþh
jÁubhj‘j¾XRegexrÿ‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾XMomentr‡r…r	r
}r(hh	]r…r
Rrh
jÁubhj‘j¾XBooleanr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Characterr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh	]r$…r%Rr&h
jÁubhj‘j¾h3‡r'…r(r)}r*(hh	]r+…r,Rr-h
jÁubhj‘j¾h‰‡r.…r/r0}r1(hh	]r2…r3Rr4h
jÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh	]r:…r;Rr<h
jÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh	]rB…rCRrDh
jÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh	]rJ…rKRrLh
jÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh	]rR…rSRrTh
jÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh	]rZ…r[Rr\h
jÁube…r]Rr^h
j”j5j8jðjójžjÖjj"h3j)jEjHhijúj=j@jÄjÇjajëjÿjhjäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh	]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh	]rj…rkRrlh
jbubhj‘j_XDecrm‡rn…rorp}rq(hh	]rr…rsRrth
jbubhj‘j_XRadixru‡rv…rwrx}ry(hh	]rz…r{Rr|h
jbubhj‘j_XOctr}‡r~…rr€}r(hh	]r‚…rƒRr„h
jbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jbubhj‘j_hü‡r…rށr}r(hh	]r‘…r’Rr“h
jbubhj‘j_XHexr”‡r•…r–r—}r˜(hh	]r™…ršRr›h
jbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh	]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh	]r§…r¨Rr©h
jŸuba…rªRr«h
jbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh	]r±…r²Rr³h
jbube…r´Rrµh
j”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·h
hfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh	]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh	]rË…rÌRrÍh
j»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh	]rÓ…rÔRrÕh
j»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh	]rÛ…rÜRrÝh
j»ubhj¸XPromptrÞ†rß…ràrá}râ(hh	]rã…räRråh
j»ubhj¸XDeletedræ†rç…rèré}rê(hh	]rë…rìRríh
j»ubhj¸XInsertedrî†rï…rðrñ}rò(hh	]ró…rôRrõh
j»ubhj¸XHeadingrö†r÷…rørù}rú(hh	]rû…rüRrýh
j»ubhj¸XStrongrþ†rÿ…rr}r(hh	]r…rRrh
j»ubhj¸XEmphr†r…rr	}r
(hh	]r…rRr
h
j»ube…rRrh
hfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh	]r…rRrh
hfubhXKeywordr…r…rr}r(hh	]r(hjh†r…rr}r (hh	]r!…r"Rr#h
jubhjj†r$…r%r&}r'(hh	]r(…r)Rr*h
jubhjjO†r+…r,r-}r.(hh	]r/…r0Rr1h
jubhjXPreProcr2†r3…r4r5}r6(hh	]r7…r8Rr9h
jubhjXControlr:†r;…r<r=}r>(hh	]r?…r@RrAh
jubhjj‡†rB…rCrD}rE(hh	]rF…rGRrHh
jubhjj†rI…rJrK}rL(hh	]rM…rNRrOh
jubhjj+†rP…rQrR}rS(hh	]rT…rURrVh
jubhjXDeclarationrW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jubhjXReservedr_†r`…rarb}rc(hh	]rd…reRrfh
jube…rgRrhh
hfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh	]rm…rnRroh
hfubhXTextrp…rq…rrrs}rt(hh	]ru(hjpXRootrv†rw…rxry}rz(hh	]r{…r|Rr}h
jsubhjpj†r~…rr€}r(hh	]r‚…rƒRr„h
jsubhjpXRagr…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jsubhjpX
Whitespacer†rŽ…rr}r‘(hh	]r’…r“Rr”h
jsubhjpXBeerr•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jsubhjpXPunctuationr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jsube…r¥Rr¦h
hfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh	]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
hfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubh#h&hChFhhhShVhhh[h^h;h>h+h.h3h6hhhKhNububXN;----------------------------------------------------------------------------;r¹†rºjsX
r»†r¼hX2; Does A* pathfinding for rockraiders and vehiclesr½†r¾jsj»†r¿hX;rÀ†rÁjsj»†rÂhX; Copyright 2015 Ruben De SmetrÆrÄjsj»†rÅhjÀ†rÆjsj»†rÇhXD; Redistribution and use in source and binary forms, with or withoutrȆrÉjsj»†rÊhXH; modification, are permitted provided that the following conditions arerˆrÌjsj»†rÍhX; met:rΆrÏjsj»†rÐhX; rцrÒjsj»†rÓhXH;     (1) Redistributions of source code must retain the above copyrightrÔ†rÕjsj»†rÖhXH;         notice, this list of conditions and the following disclaimer. r׆rØjsj»†rÙhX; rÚ†rÛjsj»†rÜhXK;     (2) Redistributions in binary form must reproduce the above copyrightr݆rÞjsj»†rßhXI;         notice, this list of conditions and the following disclaimer inrà†rájsj»†râhXD;         the documentation and/or other materials provided with therã†räjsj»†råhX;         distribution.  ræ†rçjsj»†rèhX
;         ré†rêjsj»†rëhX3;     (3) The name of the author may not be used torì†ríjsj»†rîhXH;         endorse or promote products derived from this software withoutrï†rðjsj»†rñhX,;         specific prior written permission.rò†rójsj»†rôhX; rõ†röjsj»†r÷hXF; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS ORrø†rùjsj»†rúhX@; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDrû†rüjsj»†rýhXH; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARErþ†rÿjsj»†rhXD; DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,r†rjsj»†rhXD; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGESr†rjsj»†rhXD; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORr†rjsj»†r	hXD; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)r
†rjsj»†rhXE; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,r
†rjsj»†rhXG; STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGr†rjsj»†rhXD; IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEr†rjsj»†rhX; POSSIBILITY OF SUCH DAMAGE.r†rjsj»†rhjÀ†rjsj»†rhXN;----------------------------------------------------------------------------;r†rjsj»†rjsj»†rjXIDEALr†r jsj»†r!jXP386r"†r#jsj»†r$jXMODELr%†r&jsX r'†r(hÐXFLATr)†r*j©X,r+†r,jsj'†r-hÐXCr.†r/jsj»†r0jXASSUMEr1†r2jsj'†r3jEXcsr4†r5j©X:r6†r7hÐX_TEXTr8†r9j©j+†r:jEXdsr;†r<j©j6†r=hÐXFLATr>†r?j©j+†r@jEXesrA†rBj©j6†rChÐXFLATrD†rEj©j+†rFjEXfsrG†rHj©j6†rIhÐXFLATrJ†rKj©j+†rLjEXgsrM†rNj©j6†rOhÐXFLATrP†rQjsX

rR†rSjXINCLUDErT†rUjsj'†rVjÁX"ASTAR.INC"rW†rXjsj»†rYjXINCLUDErZ†r[jsj'†r\jÁX
"READLVL.INC"r]†r^jsj»†r_jXINCLUDEr`†rajsj'†rbjÁX"DEBUG.INC"rc†rdjsX

re†rfjXSTRUCrg†rhjsj'†rihÐXTPriorityFieldrj†rkjsj»†rljsX    rm†rnjŠX	heuristicro†rpjZj'†rqjZXddrr†rsjsj'†rthÐX?ru†rvjsj»†rwjsX    rx†ryjŠXdistancerz†r{jZj'†r|jZXddr}†r~jsj'†rhÐju†r€jsj»†rjsX    r‚†rƒjŠXxr„†r…jZj'†r†jZXdbr‡†rˆjsj'†r‰hÐju†rŠjsj»†r‹jsX    rŒ†rjŠXyrކrjZj'†rjZXdbr‘†r’jsj'†r“hÐju†r”jsj»†r•jsX    r–†r—jŠXfromxr˜†r™jZj'†ršjZXdbr›†rœjsj'†rhÐju†ržjsj»†rŸjsX    r †r¡jŠXfromyr¢†r£jZj'†r¤jZXdbr¥†r¦jsj'†r§hÐju†r¨jsj»†r©jXENDSrª†r«jsX

r¬†r­jXSTRUCr®†r¯jsj'†r°hÐXTFieldr±†r²jsj»†r³jsX    r´†rµjŠXdistancer¶†r·jZj'†r¸jZXddr¹†rºjsj'†r»hÐju†r¼jsj»†r½jsX    r¾†r¿jŠj„†rÀjZj'†rÁjZXdbr†rÃjsj'†rÄhÐju†rÅjsj»†rÆjsX    rdžrÈjŠjކrÉjZj'†rÊjZXdbrˆrÌjsj'†rÍhÐju†rÎjsj»†rÏjXENDSrІrÑjsX

rÒ†rÓjXCODESEGrÔ†rÕjsj'†rÖjsX

r׆rØjXPROCrÙ†rÚjsj'†rÛhÐXgetPathr܆rÝjsj»†rÞjsX        r߆ràjXUSESrá†râjsj'†rãjEXecxrä†råjsj»†ræjsX        rç†rèjXARGré†rêjsj'†rëhÐX@@tgtxrì†ríj©j6†rîj-Xdwordrï†rðj©j+†rñjsj'†ròjsX\
ró†rôjsX            rõ†röhÐX@@tgtyr÷†røj©j6†rùj-Xdwordrú†rûjsj'†rüjsX\
rý†rþjsX        rÿ†rhÐXRETURNSr†rjsj'†rjEXeaxr†rj©j+†rjsj'†rjEXebxr†r	jsj'†r
hX ; eax contains x, ebx contains yr†rjsX

r
†rjsX        r†rjtXcallr†rjsj'†rhÐX
getLevelWidthr†rjsj»†rjsX        r†rjtXimulr†rjsj'†rjEXeaxr†rj©j+†rjsj'†rj©X[r †r!hÐX@@tgtyr"†r#j©X]r$†r%jsj»†r&jsX        r'†r(jtXaddr)†r*jsj'†r+jEXeaxr,†r-j©j+†r.jsj'†r/j©j †r0hÐX@@tgtxr1†r2j©j$†r3jsj»†r4jsX        r5†r6jtXimulr7†r8jsj'†r9jEXeaxr:†r;j©j+†r<jsj'†r=jEXSIr>†r?hÐXZEr@†rAjsj'†rBhÐXTFieldrC†rDjsj»†rEjsX        rF†rGjtXaddrH†rIjsj'†rJjEXeaxrK†rLj©j+†rMjsj'†rNhÐXoffsetrO†rPjsj'†rQhÐXbacktraceGraphrR†rSjsX        rT†rUjsj»†rVjsX        rW†rXjtXmovrY†rZjsj'†r[jEXecxr\†r]j©j+†r^jsj'†r_jEXeaxr`†rajsX

rb†rcjsX        rd†rejtXxorrf†rgjsj'†rhjEXeaxri†rjj©j+†rkjsj'†rljEXeaxrm†rnjsj»†rojsX        rp†rqjtXxorrr†rsjsj'†rtjEXebxru†rvj©j+†rwjsj'†rxjEXebxry†rzjsX

r{†r|jsX        r}†r~jtXmovr†r€jsj'†rjEXalr‚†rƒj©j+†r„jsj'†r…j©X[(r††r‡hÐXTFieldrˆ†r‰jsj'†rŠhÐXptrr‹†rŒjsj'†rjEXecxrކrj©X)r†r‘hÐX.xr’†r“j©j$†r”jsj»†r•jsX        r–†r—jtXmovr˜†r™jsj'†ršjEXblr›†rœj©j+†rjsj'†ržj©X[(rŸ†r hÐXTFieldr¡†r¢jsj'†r£hÐXptrr¤†r¥jsj'†r¦jEXecxr§†r¨j©j†r©hÐX.yrª†r«j©j$†r¬jsX

r­†r®jsX        r¯†r°jtXretr±†r²jsj»†r³jXENDPr´†rµjsj'†r¶hÐXgetPathr·†r¸jsX

r¹†rºjXPROCr»†r¼jsj'†r½hÐXfindPathr¾†r¿jsj»†rÀjsX        rÁ†rÂhX1; eax will contain a 1 when a path has been foundrÆrÄjsj»†rÅjsX        rƆrÇhX!;                    0 otherwise.rȆrÉjsj»†rÊjsX        rˆrÌjXARGr͆rÎjsj'†rÏhÐX@@srcxrІrÑj©j6†rÒj-XdwordrÓ†rÔj©j+†rÕjsj'†rÖjsX\
r׆rØjsX            rÙ†rÚhÐX@@srcyrÛ†rÜj©j6†rÝj-XdwordrÞ†rßj©j+†ràjsj'†rájsX\
râ†rãjsX            rä†råhÐX@@tgtxræ†rçj©j6†rèj-Xdwordré†rêj©j+†rëjsj'†rìjsX\
rí†rîjsX            rï†rðhÐX@@tgtyrñ†ròj©j6†rój-Xdwordrô†rõj©j+†röjsj'†r÷jsX\
rø†rùjsX            rú†rûhÐX@@typerü†rýj©j6†rþj-Xdwordrÿ†rjsj'†rjsX\
r†rjsX            r†rhÐXRETURNSr†rjsj'†rjEXeaxr	†r
jsX

r†rjsX        r
†rhX1; Check whether the target field is "allowed" forr†rjsj»†rjsX        r†rhX%; the selected vehicle or rock raiderr†rjsj»†rjsX        r†rjtXcallr†rjsj'†rhÐXgetFieldr†rj©j+†rjsj'†rj©j †r hÐX@@tgtxr!†r"j©X],r#†r$jsj'†r%j©j †r&hÐX@@tgtyr'†r(j©j$†r)jsj»†r*jsX        r+†r,jtXmovr-†r.jsj'†r/jEXalr0†r1j©j+†r2jsj'†r3j©j †r4j-Xbyter5†r6jsj'†r7hÐXptrr8†r9jsj'†r:jEXeaxr;†r<j©j$†r=jsj»†r>jsX        r?†r@jtXandrA†rBjsj'†rCjEXeaxrD†rEj©j+†rFjsj'†rGj—X0FFhrH†rIjsX

rJ†rKjsX        rL†rMjtXaddrN†rOjsj'†rPjEXeaxrQ†rRj©j+†rSjsj'†rThÐXoffsetrU†rVjsj'†rWhÐXactionTablerX†rYjsj»†rZjsX        r[†r\jtXmovr]†r^jsj'†r_jEXeaxr`†raj©j+†rbjsj'†rcj©j †rdjEXeaxre†rfj©j$†rgjsj»†rhjsX        ri†rjjtXandrk†rljsj'†rmjEXeaxrn†roj©j+†rpjsj'†rqj©j †rrhÐX@@typers†rtj©j$†rujsX               rv†rwhX*; TODO: for now, rock raider is hard codedrx†ryjsj»†rzjsX        r{†r|jtXjnzr}†r~jsj'†rhÐX@canGoToTargetr€†rjsX

r‚†rƒjsX        r„†r…jtXmovr††r‡jsj'†rˆjEXeaxr‰†rŠj©j+†r‹jsj'†rŒjŸX0r†rŽjsj»†rjsX        r†r‘jtXretr’†r“jsj»†r”j6X@canGoToTarget:r•†r–jsj»†r—jsj»†r˜jsX        r™†ršjtXcallr›†rœjsj'†rjEXclrž†rŸhÐXeanDatar †r¡jsj»†r¢jsX        r£†r¤jtXmovr¥†r¦jsj'†r§jEXeaxr¨†r©j©j+†rªjsj'†r«j©j †r¬hÐX@@typer­†r®j©j$†r¯jsj»†r°jsX        r±†r²jtXmovr³†r´jsj'†rµj©j †r¶hÐXcurrentTyper·†r¸j©X],r¹†rºjsj'†r»jEXeaxr¼†r½jsX

r¾†r¿jsX        rÀ†rÁjtXmovr†rÃjsj'†rÄjEXeaxrņrÆj©j+†rÇjsj'†rÈj©j †rÉhÐX@@srcxrʆrËj©j$†rÌjsj»†rÍjsX        rΆrÏjtXmovrІrÑjsj'†rÒj©j †rÓhÐX
currentOpen.xrÔ†rÕj©X],rÖ†r×jsj'†rØjEXalrÙ†rÚjsj»†rÛjsX        r܆rÝjtXmovrÞ†rßjsj'†ràjEXeaxrá†râj©j+†rãjsj'†räj©j †råhÐX@@srcyræ†rçj©j$†rèjsj»†réjsX        rê†rëjtXmovrì†ríjsj'†rîj©j †rïhÐX
currentOpen.yrð†rñj©X],rò†rójsj'†rôjEXalrõ†röjsX

r÷†røjsX        rù†rújtXcallrû†rüjsj'†rýjEXdirþ†rÿhÐXstancer†rj©j+†rjsj'†rj©j †rhÐX@@srcxr†rj©X],r†rjsj'†r	j©j †r
hÐX@@srcyr†rj©X],r
†rjsj'†rj©j †rhÐX@@tgtxr†rj©X],r†rjsj'†rj©j †rhÐX@@tgtyr†rj©j$†rjsj'†rjsj»†rjsX        r†rhX; eax <- distancer†rjsj»†r jsX        r!†r"jtXcallr#†r$jsj'†r%hÐXaddOpenr&†r'j©j+†r(jsj'†r)j©j †r*hÐX@@srcxr+†r,j©X],r-†r.jsj'†r/j©j †r0hÐX@@srcyr1†r2j©X],r3†r4jsj'†r5jEXeaxr6†r7j©j+†r8jsj'†r9jŸj†r:jsX

r;†r<j6X@openListNotEmpty:r=†r>jsj»†r?jsX        r@†rAjtXcallrB†rCjsj'†rDhÐXpopOpenrE†rFjsj»†rGjsX        rH†rIjtXcmprJ†rKjsj'†rLjEXeaxrM†rNj©j+†rOjsj'†rPjŸj†rQjsj»†rRjsX        rS†rTjtXjerU†rVjsj'†rWhÐX@openListEmptyrX†rYjsX

rZ†r[jsX        r\†r]jtXcallr^†r_jsj'†r`hÐXaddToMapra†rbjsX

rc†rdjsX        re†rfjtXcallrg†rhjsj'†rihÐX	addClosedrj†rkjsX

rl†rmjsX        rn†rojtXmovrp†rqjsj'†rrjEXeaxrs†rtj©j+†rujsj'†rvj©j †rwhÐX@@tgtxrx†ryj©j$†rzjsj»†r{jsX        r|†r}jtXcmpr~†rjsj'†r€j©j †rhÐX
currentOpen.xr‚†rƒj©X],r„†r…jsj'†r†jEXalr‡†rˆjsj»†r‰jsX        rІr‹jtXjnerŒ†rjsj'†rŽhÐX	@nextOpenr†rjsj»†r‘jsX        r’†r“jtXmovr”†r•jsj'†r–jEXeaxr—†r˜j©j+†r™jsj'†ršj©j †r›hÐX@@tgtyrœ†rj©j$†ržjsj»†rŸjsX        r †r¡jtXcmpr¢†r£jsj'†r¤j©j †r¥hÐX
currentOpen.yr¦†r§j©X],r¨†r©jsj'†rªjEXalr«†r¬jsj»†r­jsX        r®†r¯jtXjner°†r±jsj'†r²hÐX	@nextOpenr³†r´jsX

rµ†r¶jsX        r·†r¸jtXjmpr¹†rºjsj'†r»hÐX@routeFoundr¼†r½jsX

r¾†r¿jsX        rÀ†rÁj6X
@nextOpen:r†rÃjsj»†rÄjsX        rņrÆjtXcallrdžrÈjsj'†rÉhÐX
addNeighboursrʆrËj©j+†rÌjsj'†rÍj©j †rÎhÐX@@tgtxrφrÐj©X],rцrÒjsj'†rÓj©j †rÔhÐX@@tgtyrÕ†rÖj©j$†r×jsX

r؆rÙjsX        rÚ†rÛjtXjmpr܆rÝjsj'†rÞhÐX@openListNotEmptyr߆ràjsX

rá†râj6X@openListEmpty:rã†räjsj»†råjsX        ræ†rçjtXmovrè†réjsj'†rêjEXeaxrë†rìj©j+†ríjsj'†rîjŸj†rïjsj»†rðjsX        rñ†ròjtXretró†rôjsX

rõ†röj6X@routeFound:r÷†røjsj»†rùjsX        rú†rûjtXmovrü†rýjsj'†rþjEXeaxrÿ†rj©j+†rjsj'†rjŸX1r†rjsj»†rjsX        r†rjtXretr†r	jsj»†r
jXENDPr†rjsj'†r
hÐXfindPathr†rjsX

r†rjXPROCr†rjsj'†rhÐXaddToMapr†rjsj»†rjsX        r†rjXUSESr†rjsj'†rjEXeaxr†rj©j+†rjsj'†r jEXecxr!†r"jsX

r#†r$jsX        r%†r&jtXcallr'†r(jsj'†r)hÐX
getLevelWidthr*†r+jsj»†r,jsX        r-†r.jtXxorr/†r0jsj'†r1jEXecxr2†r3j©j+†r4jsj'†r5jEXecxr6†r7jsj»†r8jsX        r9†r:jtXmovr;†r<jsj'†r=jEXclr>†r?j©j+†r@jsj'†rAj©j †rBhÐX
currentOpen.yrC†rDj©j$†rEjsj»†rFjsX        rG†rHjtXimulrI†rJjsj'†rKjEXeaxrL†rMj©j+†rNjsj'†rOjEXecxrP†rQjsj»†rRjsX        rS†rTjtXmovrU†rVjsj'†rWjEXclrX†rYj©j+†rZjsj'†r[j©j †r\hÐX
currentOpen.xr]†r^j©j$†r_jsj»†r`jsX        ra†rbjtXaddrc†rdjsj'†rejEXeaxrf†rgj©j+†rhjsj'†rijEXecxrj†rkjsj»†rljsX        rm†rnjtXimulro†rpjsj'†rqjEXeaxrr†rsj©j+†rtjsj'†rujEXSIrv†rwhÐXZErx†ryjsj'†rzhÐXTFieldr{†r|jsj»†r}jsX        r~†rjtXaddr€†rjsj'†r‚jEXeaxrƒ†r„j©j+†r…jsj'†r†hÐXoffsetr‡†rˆjsj'†r‰hÐXbacktraceGraphrІr‹jsX

rŒ†rjsX        rކrjtXmovr†r‘jsj'†r’jEXecxr“†r”j©j+†r•jsj'†r–j©j †r—hÐXcurrentOpen.distancer˜†r™j©j$†ršjsj»†r›jsX        rœ†rjtXcmprž†rŸjsj'†r j©X[(r¡†r¢hÐXTFieldr£†r¤jsj'†r¥hÐXptrr¦†r§jsj'†r¨jEXeaxr©†rªj©j†r«hÐX	.distancer¬†r­j©X],r®†r¯jsj'†r°jEXecxr±†r²jsj»†r³jsX        r´†rµjtXjber¶†r·jsj'†r¸hÐX@dontAddr¹†rºjsX

r»†r¼jsX        r½†r¾jtXmovr¿†rÀjsj'†rÁj©X[(r†rÃhÐXTFieldrĆrÅjsj'†rÆhÐXptrrdžrÈjsj'†rÉjEXeaxrʆrËj©j†rÌhÐX	.distancer͆rÎj©X],rφrÐjsj'†rÑjEXecxrÒ†rÓjsj»†rÔjsX        rÕ†rÖjtXmovr׆rØjsj'†rÙjEXclrÚ†rÛj©j+†rÜjsj'†rÝj©j †rÞhÐXcurrentOpen.fromxr߆ràj©j$†rájsj»†râjsX        rã†räjtXmovrå†ræjsj'†rçj©X[(rè†réhÐXTFieldrê†rëjsj'†rìhÐXptrrí†rîjsj'†rïjEXeaxrð†rñj©j†ròhÐX.xró†rôj©X],rõ†röjsj'†r÷jEXclrø†rùjsj»†rújsX        rû†rüjtXmovrý†rþjsj'†rÿjEXclr	†r	j©j+†r	jsj'†r	j©j †r	hÐXcurrentOpen.fromyr	†r	j©j$†r	jsj»†r	jsX        r		†r
	jtXmovr	†r	jsj'†r
	j©X[(r	†r	hÐXTFieldr	†r	jsj'†r	hÐXptrr	†r	jsj'†r	jEXeaxr	†r	j©j†r	hÐX.yr	†r	j©X],r	†r	jsj'†r	jEXclr	†r	jsX

r 	†r!	j6X	@dontAdd:r"	†r#	jsj»†r$	jsX        r%	†r&	jtXretr'	†r(	jsj»†r)	jXENDPr*	†r+	jsj'†r,	hÐXaddToMapr-	†r.	jsX

r/	†r0	hX]; Is closed checks whether the field considered is "closed" for being added to the open list.r1	†r2	jsj»†r3	hX=; So, it also checks whether we can go on the selected field.r4	†r5	jsj»†r6	jXPROCr7	†r8	jsj'†r9	hÐXisClosedr:	†r;	jsj»†r<	jsX        r=	†r>	jXUSESr?	†r@	jsj'†rA	jEXebxrB	†rC	j©j+†rD	jsj'†rE	jEXecxrF	†rG	j©j+†rH	jsj'†rI	jEXedxrJ	†rK	jsj»†rL	jsX        rM	†rN	jXARGrO	†rP	jsj'†rQ	hÐX@@xrR	†rS	j©j6†rT	j-XdwordrU	†rV	j©j+†rW	jsj'†rX	jsX\
rY	†rZ	jsX            r[	†r\	hÐX@@yr]	†r^	j©j6†r_	j-Xdwordr`	†ra	jsj'†rb	hÐXRETURNSrc	†rd	jsj'†re	jEXeaxrf	†rg	jsX

rh	†ri	jsX        rj	†rk	hX; Check bounds first:rl	†rm	jsj»†rn	jsj»†ro	jsX        rp	†rq	jtXcallrr	†rs	jsj'†rt	hÐX
getLevelWidthru	†rv	jsj»†rw	jsX        rx	†ry	jtXcmprz	†r{	jsj'†r|	j©j †r}	hÐX@@xr~	†r	j©X],r€	†r	jsj'†r‚	jEXeaxrƒ	†r„	jsj»†r…	jsX        r†	†r‡	jtXjarˆ	†r‰	jsj'†rŠ	hÐXnotWithinBoundsr‹	†rŒ	jsj'†r	hX; ja considers -1 > 10rŽ	†r	jsX

r	†r‘	jsX        r’	†r“	jtXcallr”	†r•	jsj'†r–	hÐXgetLevelHeightr—	†r˜	jsj»†r™	jsX        rš	†r›	jtXcmprœ	†r	jsj'†rž	j©j †rŸ	hÐX@@yr 	†r¡	j©X],r¢	†r£	jsj'†r¤	jEXeaxr¥	†r¦	jsj»†r§	jsX        r¨	†r©	jtXjarª	†r«	jsj'†r¬	hÐXnotWithinBoundsr­	†r®	jsX

r¯	†r°	jsX        r±	†r²	hX+; Check whether this field is "allowed" forr³	†r´	jsj»†rµ	jsX        r¶	†r·	hX%; the selected vehicle or rock raiderr¸	†r¹	jsj»†rº	jsX        r»	†r¼	jtXcallr½	†r¾	jsj'†r¿	e(hÐXgetFieldrÀ	†rÁ	j©j+†rÂ	jsj'†rÃ	j©j †rÄ	hÐX@@xrÅ	†rÆ	j©X],rÇ	†rÈ	jsj'†rÉ	j©j †rÊ	hÐX@@yrË	†rÌ	j©j$†rÍ	jsj»†rÎ	jsX        rÏ	†rÐ	jtXmovrÑ	†rÒ	jsj'†rÓ	jEXalrÔ	†rÕ	j©j+†rÖ	jsj'†r×	j©j †rØ	j-XbyterÙ	†rÚ	jsj'†rÛ	hÐXptrrÜ	†rÝ	jsj'†rÞ	jEXeaxrß	†rà	j©j$†rá	jsj»†râ	jsX        rã	†rä	jtXandrå	†ræ	jsj'†rç	jEXeaxrè	†ré	j©j+†rê	jsj'†rë	j—X0FFhrì	†rí	jsX

rî	†rï	jsX        rð	†rñ	jtXaddrò	†ró	jsj'†rô	jEXeaxrõ	†rö	j©j+†r÷	jsj'†rø	hÐXoffsetrù	†rú	jsj'†rû	hÐXactionTablerü	†rý	jsj»†rþ	jsX        rÿ	†r
jtXmovr
†r
jsj'†r
jEXeaxr
†r
j©j+†r
jsj'†r
j©j †r
jEXeaxr	
†r

j©j$†r
jsjȠr
jsX        r
†r
jtXandr
†r
jsj'†r
jEXeaxr
†r
j©j+†r
jsj'†r
j©j †r
hÐXcurrentTyper
†r
j©j$†r
jsX               r
†r
hX*; TODO: for now, rock raider is hard codedr
†r
jsjȠr
jsX        r
†r 
jtXjnzr!
†r"
jsj'†r#
hÐX
@canGoHerer$
†r%
jsX


r&
†r'
jsX        r(
†r)
jtXincr*
†r+
jsj'†r,
jEXeaxr-
†r.
jsj'†r/
hX; mov eax, 1r0
†r1
jsjȠr2
jsX        r3
†r4
jtXretr5
†r6
jsX

r7
†r8
j6X@canGoHere:r9
†r:
jsjȠr;
jsX        r<
†r=
jsjȠr>
jsX        r?
†r@
hX>; Getting here means the field is okay to walk/fly/whatever onrA
†rB
jsjȠrC
jsjȠrD
jsX        rE
†rF
jtXxorrG
†rH
jsj'†rI
jEXecxrJ
†rK
j©j+†rL
jsj'†rM
jEXecxrN
†rO
jsjȠrP
jsX        rQ
†rR
jtXmovrS
†rT
jsj'†rU
jEXcxrV
†rW
j©j+†rX
jsj'†rY
j©j †rZ
jEXclr[
†r\
hÐXosedlistSizer]
†r^
j©j$†r_
jsjȠr`
jsX        ra
†rb
jtXcmprc
†rd
jsj'†re
jEXcxrf
†rg
j©j+†rh
jsj'†ri
jŸj†rj
jsj'†rk
hX; If empty, return 0rl
†rm
jsjȠrn
jsX        ro
†rp
jtXjnerq
†rr
jsj'†rs
hÐX@closedNotEmptyrt
†ru
jsX

rv
†rw
jsX        rx
†ry
jtXmovrz
†r{
jsj'†r|
jEXeaxr}
†r~
j©j+†r
jsj'†r€
jŸj†r
jsj»†r‚
jsX        rƒ
†r„
jtXretr…
†r†
jsX

r‡
†rˆ
j6X@closedNotEmpty:r‰
†rŠ
jsj»†r‹
jsX        rŒ
†r
jtXmovrŽ
†r
jsj'†r
jEXebxr‘
†r’
j©j+†r“
jsj'†r”
hÐXoffsetr•
†r–
jsj'†r—
jEXclr˜
†r™
hÐXosedlistrš
†r›
jsX

rœ
†r
j6X@loopClosed:rž
†rŸ
jsj»†r 
jsX        r¡
†r¢
jtXmovr£
†r¤
jsj'†r¥
jEXedxr¦
†r§
j©j+†r¨
jsj'†r©
j©j †rª
hÐX@@xr«
†r¬
j©j$†r­
jsj»†r®
jsX        r¯
†r°
jtXcmpr±
†r²
jsj'†r³
j©X[(r´
†rµ
hÐXTFieldr¶
†r·
jsj'†r¸
hÐXptrr¹
†rº
jsj'†r»
jEXebxr¼
†r½
j©j†r¾
hÐX.xr¿
†rÀ
j©X],rÁ
†rÂ
jsj'†rÃ
jEXdlrÄ
†rÅ
jsj»†rÆ
jsX        rÇ
†rÈ
jtXjnerÉ
†rÊ
jsj'†rË
hÐX@nextClosedrÌ
†rÍ
jsj»†rÎ
jsX        rÏ
†rÐ
jtXmovrÑ
†rÒ
jsj'†rÓ
jEXedxrÔ
†rÕ
j©j+†rÖ
jsj'†r×
j©j †rØ
hÐX@@yrÙ
†rÚ
j©j$†rÛ
jsj»†rÜ
jsX        rÝ
†rÞ
jtXcmprß
†rà
jsj'†rá
j©X[(râ
†rã
hÐXTFieldrä
†rå
jsj'†ræ
hÐXptrrç
†rè
jsj'†ré
jEXebxrê
†rë
j©j†rì
hÐX.yrí
†rî
j©X],rï
†rð
jsj'†rñ
jEXdlrò
†ró
jsj»†rô
jsX        rõ
†rö
jtXjner÷
†rø
jsj'†rù
hÐX@nextClosedrú
†rû
jsX

rü
†rý
jsX        rþ
†rÿ
hX0; If reached here, yep, contained in closed listr†rjsj»†rjsX        r†rjtXmovr†rjsj'†rjEXeaxr†r	j©j+†r
jsj'†rjŸj†rjsj»†r
jsX        r†rjtXretr†rjsX

r†rjsX    r†rj6X@nextClosed:r†rjsj»†rjsX        r†rjtXaddr†rjsj'†rjEXebxr†rj©j+†r jsj'†r!jEXSIr"†r#hÐXZEr$†r%jsj'†r&hÐXTFieldr'†r(jsj»†r)jsX        r*†r+jtXdecr,†r-jsj'†r.jEXecxr/†r0jsj»†r1jsX        r2†r3jtXjnzr4†r5jsj'†r6hÐX@loopClosedr7†r8jsX

r9†r:jsX        r;†r<jtXmovr=†r>jsj'†r?jEXeaxr@†rAj©j+†rBjsj'†rCjŸj†rDjsj»†rEjsX        rF†rGjtXretrH†rIjsX

rJ†rKj6XnotWithinBounds:rL†rMjsj»†rNjsX        rO†rPjtXmovrQ†rRjsj'†rSjEXeaxrT†rUj©j+†rVjsj'†rWjŸj†rXjsj»†rYjsX        rZ†r[jtXretr\†r]jsj»†r^jXENDPr_†r`jsj'†rahÐXisClosedrb†rcjsX

rd†rejXPROCrf†rgjsj'†rhhÐX
addNeighboursri†rjjsj»†rkjsX        rl†rmjXUSESrn†rojsj'†rpjEXeaxrq†rrj©j+†rsjsj'†rtjEXebxru†rvj©j+†rwjsj'†rxjEXecxry†rzj©j+†r{jsj'†r|jEXedxr}†r~jsj»†rjsX        r€†rjXARGr‚†rƒjsj'†r„hÐX@@tgtxr…†r†j©j6†r‡j-Xdwordrˆ†r‰j©j+†rŠjsj'†r‹jsX\
rŒ†rjsX            rކrhÐX@@tgtyr†r‘j©j6†r’j-Xdwordr“†r”jsj»†r•jsX        r–†r—hX0; Push all neighbours of currentOpen on openListr˜†r™jsj»†ršjsj»†r›jsX        rœ†rjtXxorrž†rŸjsj'†r jEXebxr¡†r¢j©j+†r£jsj'†r¤jEXebxr¥†r¦jsj»†r§jsX        r¨†r©jtXxorrª†r«jsj'†r¬jEXecxr­†r®j©j+†r¯jsj'†r°jEXecxr±†r²jsj»†r³jsX        r´†rµjsj»†r¶jsX        r·†r¸jtXmovr¹†rºjsj'†r»jEXblr¼†r½j©j+†r¾jsj'†r¿j©j †rÀhÐX
currentOpen.xrÁ†rÂj©j$†rÃjsj»†rÄjsX        rņrÆjtXmovrdžrÈjsj'†rÉjEXclrʆrËj©j+†rÌjsj'†rÍj©j †rÎhÐX
currentOpen.yrφrÐj©j$†rÑjsj»†rÒjsX        rÓ†rÔjtXmovrÕ†rÖjsj'†r×jEXedxr؆rÙj©j+†rÚjsj'†rÛj©j †rÜhÐXcurrentOpen.distancer݆rÞj©j$†rßjsj»†ràjsX        rá†râjtXincrã†räjsj'†råjEXedxræ†rçjsj'†rèhX; Next distance is one more.ré†rêjsX

rë†rìjsX        rí†rîhX; Uprï†rðjsj»†rñjsX        rò†rójtXdecrô†rõjsj'†röjEXecxr÷†røjsj»†rùjsX        rú†rûjtXcallrü†rýjsj'†rþhÐXisClosedrÿ†rj©j+†rjsj'†rjEXebxr†rj©j+†rjsj'†rjEXecxr†rjsj»†r	jsX        r
†rjtXcmpr†r
jsj'†rjEXeaxr†rj©j+†rjsj'†rjŸj†rjsj»†rjsX        r†rjtXjner†rjsj'†rhÐX@noUpr†rjsj»†rjsX        r†rjtXcallr†r jsj'†r!jEXdir"†r#hÐXstancer$†r%j©j+†r&jsj'†r'jEXebxr(†r)j©j+†r*jsj'†r+jEXecxr,†r-j©j+†r.jsj'†r/j©j †r0hÐX@@tgtxr1†r2j©X],r3†r4jsj'†r5j©j †r6hÐX@@tgtyr7†r8j©j$†r9jsj»†r:jsX        r;†r<jtXaddr=†r>jsj'†r?jEXeaxr@†rAj©j+†rBjsj'†rCjEXedxrD†rEjsj»†rFjsX        rG†rHjtXcallrI†rJjsj'†rKhÐXaddOpenrL†rMj©j+†rNjsj'†rOjEXebxrP†rQj©j+†rRjsj'†rSjEXecxrT†rUj©j+†rVjsj'†rWjEXeaxrX†rYj©j+†rZjsj'†r[jEXedxr\†r]jsj»†r^jsX        r_†r`j6X@noUp:ra†rbjsj»†rcjsX        rd†rejtXincrf†rgjsj'†rhjEXecxri†rjjsX

rk†rljsX        rm†rnhX; Rightro†rpjsj»†rqjsX        rr†rsjtXincrt†rujsj'†rvjEXebxrw†rxjsj»†ryjsX        rz†r{jtXcallr|†r}jsj'†r~hÐXisClosedr†r€j©j+†rjsj'†r‚jEXebxrƒ†r„j©j+†r…jsj'†r†jEXecxr‡†rˆjsj»†r‰jsX        rŠ†r‹jtXcmprŒ†rjsj'†rŽjEXeaxr†rj©j+†r‘jsj'†r’jŸj†r“jsj»†r”jsX        r•†r–jtXjner—†r˜jsj'†r™hÐX@noRightrš†r›jsj»†rœjsX        r†ržjtXcallrŸ†r jsj'†r¡jEXdir¢†r£hÐXstancer¤†r¥j©j+†r¦jsj'†r§jEXebxr¨†r©j©j+†rªjsj'†r«jEXecxr¬†r­j©j+†r®jsj'†r¯j©j †r°hÐX@@tgtxr±†r²j©X],r³†r´jsj'†rµj©j †r¶hÐX@@tgtyr·†r¸j©j$†r¹jsj»†rºjsX        r»†r¼jtXaddr½†r¾jsj'†r¿jEXeaxrÀ†rÁj©j+†rÂjsj'†rÃjEXedxrÄ†rÅjsj»†rÆjsX        rÇ†rÈjtXcallrÉ†rÊjsj'†rËhÐXaddOpenrÌ†rÍj©j+†rÎjsj'†rÏjEXebxrÐ†rÑj©j+†rÒjsj'†rÓjEXecxrÔ†rÕj©j+†rÖjsj'†r×jEXeaxrØ†rÙj©j+†rÚjsj'†rÛjEXedxrÜ†rÝjsj»†rÞjsX        rß†ràj6X	@noRight:rá†râjsj»†rãjsX        rä†råjtXdecræ†rçjsj'†rèjEXebxré†rêjsX

rë†rìjsX        rí†rîhX; Leftrï†rðjsj»†rñjsX        rò†rójtXdecrô†rõjsj'†röjEXebxr÷†røjsj»†rùjsX        rú†rûjtXcallrü†rýjsj'†rþhÐXisClosedrÿ†r
j©j+†r
jsj'†r
jEXebxr
†r
j©j+†r
jsj'†r
jEXecxr
†r
jsjȠr	
jsX        r

†r
jtXcmpr
†r

jsj'†r
jEXeaxr
†r
j©j+†r
jsj'†r
jŸj†r
jsjȠr
jsX        r
†r
jtXjner
†r
jsj'†r
hÐX@noLeftr
†r
jsjȠr
jsX        r
†r
jtXcallr
†r 
jsj'†r!
jEXdir"
†r#
hÐXstancer$
†r%
j©j+†r&
jsj'†r'
jEXebxr(
†r)
j©j+†r*
jsj'†r+
jEXecxr,
†r-
j©j+†r.
jsj'†r/
j©j †r0
hÐX@@tgtxr1
†r2
j©X],r3
†r4
jsj'†r5
j©j †r6
hÐX@@tgtyr7
†r8
j©j$†r9
jsjȠr:
jsX        r;
†r<
jtXaddr=
†r>
jsj'†r?
jEXeaxr@
†rA
j©j+†rB
jsj'†rC
jEXedxrD
†rE
jsjȠrF
jsX        rG
†rH
jtXcallrI
†rJ
jsj'†rK
hÐXaddOpenrL
†rM
j©j+†rN
jsj'†rO
jEXebxrP
†rQ
j©j+†rR
jsj'†rS
jEXecxrT
†rU
j©j+†rV
jsj'†rW
jEXeaxrX
†rY
j©j+†rZ
jsj'†r[
jEXedxr\
†r]
jsjȠr^
jsX        r_
†r`
j6X@noLeft:ra
†rb
jsjȠrc
jsX        rd
†re
jtXincrf
†rg
jsj'†rh
jEXebxri
†rj
jsX

rk
†rl
jsX        rm
†rn
hX; Downro
†rp
jsjȠrq
jsX        rr
†rs
jtXincrt
†ru
jsj'†rv
jEXecxrw
†rx
jsjȠry
jsX        rz
†r{
jtXcallr|
†r}
jsj'†r~
hÐXisClosedr
†r€
j©j+†r
jsj'†r‚
jEXebxrƒ
†r„
j©j+†r…
jsj'†r†
jEXecxr‡
†rˆ
jsj»†r‰
jsX        rŠ
†r‹
jtXcmprŒ
†r
jsj'†rŽ
jEXeaxr
†r
j©j+†r‘
jsj'†r’
jŸj†r“
jsj»†r”
jsX        r•
†r–
jtXjner—
†r˜
jsj'†r™
hÐX@noDownrš
†r›
jsj»†rœ
jsX        r
†rž
jtXcallrŸ
†r 
jsj'†r¡
jEXdir¢
†r£
hÐXstancer¤
†r¥
j©j+†r¦
jsj'†r§
jEXebxr¨
†r©
j©j+†rª
jsj'†r«
jEXecxr¬
†r­
j©j+†r®
jsj'†r¯
j©j †r°
hÐX@@tgtxr±
†r²
j©X],r³
†r´
jsj'†rµ
j©j †r¶
hÐX@@tgtyr·
†r¸
j©j$†r¹
jsj»†rº
jsX        r»
†r¼
jtXaddr½
†r¾
jsj'†r¿
jEXeaxrÀ
†rÁ
j©j+†rÂ
jsj'†rÃ
jEXedxrÄ
†rÅ
jsj»†rÆ
jsX        rÇ
†rÈ
jtXcallrÉ
†rÊ
jsj'†rË
hÐXaddOpenrÌ
†rÍ
j©j+†rÎ
jsj'†rÏ
jEXebxrÐ
†rÑ
j©j+†rÒ
jsj'†rÓ
jEXecxrÔ
†rÕ
j©j+†rÖ
jsj'†r×
jEXeaxrØ
†rÙ
j©j+†rÚ
jsj'†rÛ
jEXedxrÜ
†rÝ
jsj»†rÞ
jsX        rß
†rà
j6X@noDown:rá
†râ
jsj»†rã
jsX        rä
†rå
jtXdecræ
†rç
jsj'†rè
jEXecxré
†rê
jsX

rë
†rì
jsX        rí
†rî
jtXretrï
†rð
jsj»†rñ
jXENDPrò
†ró
jsj'†rô
hÐX
addNeighboursrõ
†rö
jsX

r÷
†rø
jXPROCrù
†rú
jsj'†rû
hÐXpopOpenrü
†rý
jsj»†rþ
jsX        rÿ
†rjXARGr†rjsj'†rhÐXRETURNSr†rjsj'†rjEXeaxr†rjsj»†r	jsX        r
†rjXUSESr†r
jsj'†rjEXebxr†rj©j+†rjsj'†rjEXecxr†rj©j+†rjsj'†rjEXedxr†rj©j+†rjsj'†rjEXesir†rj©j+†rjsj'†rjEXedir†r jsj»†r!jsX        r"†r#hX-; eax contains the smallest current heuristicr$†r%jsj»†r&jsX        r'†r(hX&; ebx contains the index of that fieldr)†r*jsj»†r+jsj»†r,jsX        r-†r.jtXcmpr/†r0jsj'†r1j©j †r2hÐXopenlistSizer3†r4j©X],r5†r6jsj'†r7jŸj†r8jsX           r9†r:hX; If empty, return 0r;†r<jsj»†r=jsX        r>†r?jtXjner@†rAjsj'†rBhÐX@goForthrC†rDjsX

rE†rFjsX        rG†rHjtXmovrI†rJjsj'†rKjEXeaxrL†rMj©j+†rNjsj'†rOjŸj†rPjsj»†rQjsX        rR†rSjtXretrT†rUjsX

rV†rWj6X	@goForth:rX†rYjsj»†rZjsj»†r[jsX        r\†r]jtXmovr^†r_jsj'†r`jEXeaxra†rbj©j+†rcjsj'†rdj—X
0FFFFFFFFhre†rfjsX
             rg†rhhX'; Longest distance possible in 32 bits.ri†rjjsj»†rkjsX        rl†rmjtXxorrn†rojsj'†rpjEXebxrq†rrj©j+†rsjsj'†rtjEXebxru†rvjsj»†rwjsX        rx†ryjtXxorrz†r{jsj'†r|jEXecxr}†r~j©j+†rjsj'†r€jEXecxr†r‚jsX                    rƒ†r„hX ; ecx contains the current indexr…†r†jsX

r‡†rˆj6X@searchFurther:r‰†rŠjsj»†r‹jsX        rŒ†rjtXmovrކrjsj'†rjEXedxr‘†r’j©j+†r“jsj'†r”jEXecxr•†r–jsj»†r—jsX        r˜†r™jtXimulrš†r›jsj'†rœjEXedxr†ržj©j+†rŸjsj'†r jEXSIr¡†r¢hÐXZEr£†r¤jsj'†r¥hÐXTPriorityFieldr¦†r§jsj»†r¨jsX        r©†rªjtXcmpr«†r¬jsj'†r­j©X[(r®†r¯hÐXTPriorityFieldr°†r±jsj'†r²hÐXptrr³†r´jsj'†rµj©X(r¶†r·hÐXopenlistr¸†r¹jsj'†rºhtX+r»†r¼jsj'†r½jEXedxr¾†r¿j©X))rÀ†rÁhÐX
.heuristicr†rÃj©X],rĆrÅjsj'†rÆjEXeaxrdžrÈjsj»†rÉjsX        rʆrËjtXjar̆rÍjsj'†rÎhÐX
@notBetterrφrÐjsj»†rÑjsX        rÒ†rÓhX5; Better guess found, put right values in eax and ebxrÔ†rÕjsj»†rÖjsX        r׆rØjtXmovrÙ†rÚjsj'†rÛjEXeaxr܆rÝj©j+†rÞjsj'†rßj©X[(rà†ráhÐXTPriorityFieldrâ†rãjsj'†rähÐXptrrå†ræjsj'†rçj©j¶†rèhÐXopenlistré†rêjsj'†rëhtj»†rìjsj'†ríjEXedxrî†rïj©X))rð†rñhÐX
.heuristicrò†rój©j$†rôjsj»†rõjsX        rö†r÷jtXmovrø†rùjsj'†rújEXebxrû†rüj©j+†rýjsj'†rþjEXecxrÿ†rjsX

r†rj6X@notBetter:r†rjsj»†rjsj»†rjsX        r†rjtXincr	†r
jsj'†rjEXecxr†r
jsj»†rjsX        r†rjtXcmpr†rjsj'†rjEXcxr†rj©j+†rjsj'†rj©j †rhÐXopenlistSizer†rj©j$†rjsj»†rjsX        r†rjtXjner†r jsj'†r!hÐX@searchFurtherr"†r#jsX

r$†r%jsX        r&†r'hXE; By now, we have found the right item to pop from the priorityqueue.r(†r)jsj»†r*jsj»†r+jsX        r,†r-hX&; Move the correct item in currentOpenr.†r/jsj»†r0jsX        r1†r2jtXmovr3†r4jsj'†r5jEXecxr6†r7j©j+†r8jsj'†r9jEXSIr:†r;hÐXZEr<†r=jsj'†r>hÐXTPriorityFieldr?†r@jsj»†rAjsX        rB†rCjtXmovrD†rEjsj'†rFjEXesirG†rHj©j+†rIjsj'†rJjEXebxrK†rLjsj»†rMjsX        rN†rOjtXimulrP†rQjsj'†rRjEXesirS†rTj©j+†rUjsj'†rVjEXecxrW†rXjsj»†rYjsX        rZ†r[jtXaddr\†r]jsj'†r^jEXesir_†r`j©j+†rajsj'†rbhÐXoffsetrc†rdjsj'†rehÐXopenlistrf†rgjsX

rh†rijsX        rj†rkjtXmovrl†rmjsj'†rnjEXediro†rpj©j+†rqjsj'†rrhÐXoffsetrs†rtjsj'†ruhÐXcurrentOpenrv†rwjsj»†rxjsX        ry†rzjtXrepr{†r|jsj'†r}hÐXmovsbr~†rjsX

r€†rjsX        r‚†rƒhX/; Now make the remove the thing from the vectorr„†r…jsj»†r†jsj»†r‡jsX        rˆ†r‰jtXxorrІr‹jsj'†rŒjEXecxr†rŽj©j+†rjsj'†rjEXecxr‘†r’jsj»†r“jsX        r”†r•jtXmovr–†r—jsj'†r˜jEXcxr™†ršj©j+†r›jsj'†rœj©j †rhÐXopenlistSizerž†rŸj©j$†r jsj»†r¡jsX        r¢†r£jtXsubr¤†r¥jsj'†r¦jEXecxr§†r¨j©j+†r©jsj'†rªjEXebxr«†r¬jsj»†r­jsX        r®†r¯e(jtXdecr°†r±jsj'†r²jEXecxr³†r´jsj»†rµjsX        r¶†r·jtXimulr¸†r¹jsj'†rºjEXecxr»†r¼j©j+†r½jsj'†r¾jEXSIr¿†rÀhÐXZErÁ†rÂjsj'†rÃhÐXTPriorityFieldrĆrÅjsj»†rÆjsX        rdžrÈjtXmovrɆrÊjsj'†rËjEXedir̆rÍj©j+†rÎjsj'†rÏjEXesirІrÑjsj»†rÒjsX        rÓ†rÔjtXsubrÕ†rÖjsj'†r×jEXedir؆rÙj©j+†rÚjsj'†rÛjEXSIr܆rÝhÐXZErÞ†rßjsj'†ràhÐXTPriorityFieldrá†râjsj»†rãjsX        rä†råjtXrepræ†rçjsj'†rèhÐXmovsbré†rêjsX

rë†rìjsX        rí†rîjtXdecrï†rðjsj'†rñj©j †ròhÐXopenlistSizeró†rôj©j$†rõjsj»†röjsX        r÷†røjtXmovrù†rújsj'†rûjEXeaxrü†rýj©j+†rþjsj'†rÿjŸj†rjsj»†rjsX        r†rjtXretr†rjsj»†rjXENDPr†rjsj'†r	hÐXpopOpenr
†rjsX

r†r
jXPROCr†rjsj'†rhÐX	addClosedr†rjsj»†rjsX        r†rjXUSESr†rjsj'†rjEXeaxr†rj©j+†rjsj'†rjEXebxr†rjsX

r†r jsX        r!†r"jtXxorr#†r$jsj'†r%jEXebxr&†r'j©j+†r(jsj'†r)jEXebxr*†r+jsj»†r,jsX        r-†r.jtXxorr/†r0jsj'†r1jEXeaxr2†r3j©j+†r4jsj'†r5jEXeaxr6†r7jsX

r8†r9jsX        r:†r;jtXmovr<†r=jsj'†r>jEXbxr?†r@j©j+†rAjsj'†rBj©j †rCjEXclrD†rEhÐXosedlistSizerF†rGj©j$†rHjsj»†rIjsX        rJ†rKjtXimulrL†rMjsj'†rNjEXebxrO†rPj©j+†rQjsj'†rRjEXSIrS†rThÐXZErU†rVjsj'†rWhÐXTFieldrX†rYjsX        rZ†r[jsj»†r\jsX        r]†r^jtXaddr_†r`jsj'†rajEXebxrb†rcj©j+†rdjsj'†rehÐXoffsetrf†rgjsj'†rhjEXclri†rjhÐXosedlistrk†rljsj'†rmhX ; ebx contains the target TFieldrn†rojsX

rp†rqjsX        rr†rsjtXmovrt†rujsj'†rvjEXalrw†rxj©j+†ryjsj'†rzj©j †r{hÐX
currentOpen.xr|†r}j©j$†r~jsj»†rjsX        r€†rjtXmovr‚†rƒjsj'†r„j©X[(r…†r†hÐXTFieldr‡†rˆjsj'†r‰hÐXptrrІr‹jsj'†rŒjEXebxr†rŽj©j†rhÐX.xr†r‘j©X],r’†r“jsj'†r”jEXalr•†r–jsj»†r—jsX        r˜†r™jtXmovrš†r›jsj'†rœjEXalr†ržj©j+†rŸjsj'†r j©j †r¡hÐX
currentOpen.yr¢†r£j©j$†r¤jsj»†r¥jsX        r¦†r§jtXmovr¨†r©jsj'†rªj©X[(r«†r¬hÐXTFieldr­†r®jsj'†r¯hÐXptrr°†r±jsj'†r²jEXebxr³†r´j©j†rµhÐX.yr¶†r·j©X],r¸†r¹jsj'†rºjEXalr»†r¼jsj»†r½jsX        r¾†r¿jtXmovrÀ†rÁjsj'†rÂjEXeaxrÆrÄj©j+†rÅjsj'†rÆj©j †rÇhÐXcurrentOpen.distancerȆrÉj©j$†rÊjsj»†rËjsX        r̆rÍjtXmovrΆrÏjsj'†rÐj©X[(rцrÒhÐXTFieldrÓ†rÔjsj'†rÕhÐXptrrÖ†r×jsj'†rØjEXebxrÙ†rÚj©j†rÛhÐX	.distancer܆rÝj©X],rÞ†rßjsj'†ràjEXeaxrá†râjsX

rã†räjsX        rå†ræjtXincrç†rèjsj'†réj©j †rêjEXclrë†rìhÐXosedlistSizerí†rîj©j$†rïjsj»†rðjsX        rñ†ròjtXcmpró†rôjsj'†rõj©j †röjEXclr÷†røhÐXosedlistSizerù†rúj©X],rû†rüjsj'†rýjEXCLrþ†rÿhÐXOSED_LIST_SIZE_MAXr†rjsj»†rjsX        r†rjtXjner†rjsj'†rhÐX@noProblemWithClosedVectorr†r	jsX

r
†rjsX        r†r
jtXxorr†rjsj'†rjEXeaxr†rj©j+†rjsj'†rjEXeaxr†rjsj»†rjsX        r†rjtXmovr†rjsj'†rjEXaxr†rj©j+†rjsj'†r j©j †r!jEXclr"†r#hÐXosedlistSizer$†r%j©j$†r&jsj»†r'jsX        r(†r)jtXcallr*†r+jsj'†r,hÐXcrashr-†r.j©j+†r/jsj'†r0hÐXoffsetr1†r2jsj'†r3jEXclr4†r5hÐXosedOutOfMemoryr6†r7j©j+†r8jsj'†r9jEXeaxr:†r;jsX

r<†r=j6X@noProblemWithClosedVector:r>†r?jsj»†r@jsX        rA†rBjtXretrC†rDjsj»†rEjXENDPrF†rGjsj'†rHhÐX	addClosedrI†rJjsX

rK†rLjXPROCrM†rNjsj'†rOhÐXaddOpenrP†rQjsj»†rRjsX        rS†rTjXUSESrU†rVjsj'†rWjEXeaxrX†rYj©j+†rZjsj'†r[jEXebxr\†r]jsj»†r^jsX        r_†r`jXARGra†rbjsj'†rchÐX@@xrd†rej©j6†rfj-Xdwordrg†rhj©j+†rijsj'†rjjsX\
rk†rljsX            rm†rnhÐX@@yro†rpj©j6†rqj-Xdwordrr†rsj©j+†rtjsj'†rujsX\
rv†rwjsX            rx†ryhÐX
@@priorityrz†r{j©j6†r|j-Xdwordr}†r~j©j+†rjsj'†r€jsX\
r†r‚jsX            rƒ†r„hÐX
@@distancer…†r†j©j6†r‡j-Xdwordrˆ†r‰jsX

rІr‹jsX        rŒ†rjtXxorrކrjsj'†rjEXeaxr‘†r’j©j+†r“jsj'†r”jEXeaxr•†r–jsj»†r—jsX        r˜†r™jtXmovrš†r›jsj'†rœjEXaxr†ržj©j+†rŸjsj'†r j©j †r¡hÐXopenlistSizer¢†r£j©j$†r¤jsj»†r¥jsX        r¦†r§jtXimulr¨†r©jsj'†rªjEXeaxr«†r¬j©j+†r­jsj'†r®jEXSIr¯†r°hÐXZEr±†r²jsj'†r³hÐXTPriorityFieldr´†rµjsj»†r¶jsX        r·†r¸jtXaddr¹†rºjsj'†r»jEXeaxr¼†r½j©j+†r¾jsj'†r¿hÐXoffsetrÀ†rÁjsj'†rÂhÐXopenlistrÆrÄjsX

rņrÆjsX        rdžrÈjtXmovrɆrÊjsj'†rËjEXebxr̆rÍj©j+†rÎjsj'†rÏj©j †rÐhÐX@@xrцrÒj©j$†rÓjsj»†rÔjsX        rÕ†rÖjtXmovr׆rØjsj'†rÙj©X[(rÚ†rÛhÐXTPriorityFieldr܆rÝjsj'†rÞhÐXptrr߆ràjsj'†rájEXeaxrâ†rãj©j†rähÐX.xrå†ræj©X],rç†rèjsj'†réjEXblrê†rëjsj»†rìjsX        rí†rîjtXmovrï†rðjsj'†rñjEXebxrò†rój©j+†rôjsj'†rõj©j †röhÐX@@yr÷†røj©j$†rùjsj»†rújsX        rû†rüjtXmovrý†rþjsj'†rÿj©X[(r†rhÐXTPriorityFieldr†rjsj'†rhÐXptrr†rjsj'†rjEXeaxr†r	j©j†r
hÐX.yr†rj©X],r
†rjsj'†rjEXblr†rjsX

r†rjsX        r†rjtXmovr†rjsj'†rjEXblr†rj©j+†rjsj'†rj©j †rhÐX
currentOpen.xr†rj©j$†r jsj»†r!jsX        r"†r#jtXmovr$†r%jsj'†r&j©X[(r'†r(hÐXTPriorityFieldr)†r*jsj'†r+hÐXptrr,†r-jsj'†r.jEXeaxr/†r0j©j†r1hÐX.fromxr2†r3j©X],r4†r5jsj'†r6jEXblr7†r8jsj»†r9jsX        r:†r;jtXmovr<†r=jsj'†r>jEXblr?†r@j©j+†rAjsj'†rBj©j †rChÐX
currentOpen.yrD†rEj©j$†rFjsj»†rGjsX        rH†rIjtXmovrJ†rKjsj'†rLj©X[(rM†rNhÐXTPriorityFieldrO†rPjsj'†rQhÐXptrrR†rSjsj'†rTjEXeaxrU†rVj©j†rWhÐX.fromyrX†rYj©X],rZ†r[jsj'†r\jEXblr]†r^jsX

r_†r`jsX        ra†rbjtXmovrc†rdjsj'†rejEXebxrf†rgj©j+†rhjsj'†rij©j †rjhÐX
@@priorityrk†rlj©j$†rmjsj»†rnjsX        ro†rpjtXmovrq†rrjsj'†rsj©X[(rt†ruhÐXTPriorityFieldrv†rwjsj'†rxhÐXptrry†rzjsj'†r{jEXeaxr|†r}j©j†r~hÐX
.heuristicr†r€j©X],r†r‚jsj'†rƒjEXebxr„†r…jsj»†r†jsX        r‡†rˆjtXmovr‰†rŠjsj'†r‹jEXebxrŒ†rj©j+†rŽjsj'†rj©j †rhÐX
@@distancer‘†r’j©j$†r“jsj»†r”jsX        r•†r–jtXmovr—†r˜jsj'†r™j©X[(rš†r›hÐXTPriorityFieldrœ†rjsj'†ržhÐXptrrŸ†r jsj'†r¡jEXeaxr¢†r£j©j†r¤hÐX	.distancer¥†r¦j©X],r§†r¨jsj'†r©jEXebxrª†r«jsX

r¬†r­jsX        r®†r¯jtXincr°†r±jsj'†r²j©j †r³hÐXopenlistSizer´†rµj©j$†r¶jsj»†r·jsX        r¸†r¹jtXcmprº†r»jsj'†r¼j©j †r½hÐXopenlistSizer¾†r¿j©X],rÀ†rÁjsj'†rÂhÐXOPEN_LIST_SIZE_MAXrÆrÄjsj»†rÅjsX        rƆrÇjtXjnerȆrÉjsj'†rÊhÐX
@noProblemrˆrÌjsX

r͆rÎjsX        rφrÐjtXxorrцrÒjsj'†rÓjEXeaxrÔ†rÕj©j+†rÖjsj'†r×jEXeaxr؆rÙjsj»†rÚjsX        rÛ†rÜjtXmovr݆rÞjsj'†rßjEXaxrà†ráj©j+†râjsj'†rãj©j †rähÐXopenlistSizerå†ræj©j$†rçjsj»†rèjsX        ré†rêjtXcallrë†rìjsj'†ríhÐXcrashrî†rïj©j+†rðjsj'†rñhÐXoffsetrò†rójsj'†rôhÐXopenOutOfMemoryrõ†röj©j+†r÷jsj'†røjEXeaxrù†rújsX

rû†rüj6X@noProblem:rý†rþjsj»†rÿjsX        r†rjtXretr†rjsj»†rjXENDPr†rjsX

r†rjXPROCr	†r
jsj'†rjEXdir†r
hÐXstancer†rjsj»†rjsX        r†rjXUSESr†rjsj'†rjEXebxr†rjsj»†rjsX        r†rjXARGr†rjsj'†rhÐX@@srcxr†rj©j6†r j-Xdwordr!†r"j©j+†r#jsj'†r$jsX\
r%†r&jsX            r'†r(hÐX@@srcyr)†r*j©j6†r+j-Xdwordr,†r-j©j+†r.jsj'†r/jsX\
r0†r1jsX            r2†r3hÐX@@tgtxr4†r5j©j6†r6j-Xdwordr7†r8j©j+†r9jsj'†r:jsX\
r;†r<jsX            r=†r>hÐX@@tgtyr?†r@j©j6†rAj-XdwordrB†rCjsj'†rDjsX\
rE†rFjsX        rG†rHhÐXRETURNSrI†rJjsj'†rKjEXeaxrL†rMjsX

rN†rOjsX        rP†rQjtXmovrR†rSjsj'†rTjEXeaxrU†rVj©j+†rWjsj'†rXj©j †rYhÐX@@srcxrZ†r[j©j$†r\jsj»†r]jsX        r^†r_jtXsubr`†rajsj'†rbjEXeaxrc†rdj©j+†rejsj'†rfj©j †rghÐX@@tgtxrh†rij©j$†rjjsX

rk†rljsX        rm†rnjtXjnsro†rpjsj'†rqhÐX@noSignChangexrr†rsjsj»†rtjsX        ru†rvjtXnegrw†rxjsj'†ryjEXeaxrz†r{jsX

r|†r}jsX        r~†rj6X@noSignChangex:r€†rjsj»†r‚jsj»†rƒjsX        r„†r…jtXmovr††r‡jsj'†rˆjEXebxr‰†rŠj©j+†r‹jsj'†rŒj©j †rhÐX@@srcyrކrj©j$†rjsj»†r‘jsX        r’†r“jtXsubr”†r•jsj'†r–jEXebxr—†r˜j©j+†r™jsj'†ršj©j †r›hÐX@@tgtyrœ†rj©j$†ržjsX

rŸ†r jsX        r¡†r¢jtXjnsr£†r¤jsj'†r¥hÐX@noSignChangeyr¦†r§jsj»†r¨jsX        r©†rªjtXnegr«†r¬jsj'†r­jEXebxr®†r¯jsX

r°†r±jsX        r²†r³j6X@noSignChangey:r´†rµjsj»†r¶jsX        r·†r¸jtXaddr¹†rºjsj'†r»jEXeaxr¼†r½j©j+†r¾jsj'†r¿jEXebxrÀ†rÁjsj»†rÂjsX        rÆrÄjtXretrņrÆjsj»†rÇjXENDPrȆrÉjsj'†rÊjEXdirˆrÌhÐXstancer͆rÎjsX

rφrÐjXPROCrцrÒjsj'†rÓjEXclrÔ†rÕhÐXeanDatarÖ†r×jsj»†rØjsX        rÙ†rÚjXUSESrÛ†rÜjsj'†rÝjEXeaxrÞ†rßj©j+†ràjsj'†rájEXecxrâ†rãjsj»†räjsX        rå†ræjtXmovrç†rèjsj'†réj©j †rêhÐXopenlistSizerë†rìj©X],rí†rîjsj'†rïjŸj†rðjsj»†rñjsX        rò†rójtXmovrô†rõjsj'†röj©j †r÷jEXclrø†rùhÐXosedlistSizerú†rûj©X],rü†rýjsj'†rþjŸj†rÿjsX

r†rjsX        r†rjtXmovr†rjsj'†rj©j †rhÐX
currentOpen.xr†r	j©X],r
†rjsj'†rhtX-r
†rjŸj†rjsj»†rjsX        r†rjtXmovr†rjsj'†rj©j †rhÐX
currentOpen.yr†rj©X],r†rjsj'†rhtj
†rjŸj†rjsj»†rjsX        r†r jtXmovr!†r"jsj'†r#j©j †r$hÐXcurrentOpen.distancer%†r&j©X],r'†r(jsj'†r)jŸj†r*jsX

r+†r,jsX        r-†r.jtXcallr/†r0jsj'†r1hÐX
getLevelWidthr2†r3jsj»†r4jsX        r5†r6jtXmovr7†r8jsj'†r9jEXecxr:†r;j©j+†r<jsj'†r=jEXeaxr>†r?jsj»†r@jsX        rA†rBjtXcallrC†rDjsj'†rEhÐXgetLevelHeightrF†rGjsj»†rHjsX        rI†rJjtXimulrK†rLjsj'†rMjEXecxrN†rOj©j+†rPjsj'†rQjEXeaxrR†rSjsX

rT†rUjsX        rV†rWjtXmovrX†rYjsj'†rZjEXeaxr[†r\j©j+†r]jsj'†r^hÐXoffsetr_†r`jsj'†rahÐXbacktraceGraphrb†rcjsj»†rdj6X@fieldIter:re†rfjsj»†rgjsX        rh†rijtXmovrj†rkjsj'†rlj©X[(rm†rnhÐXTFieldro†rpjsj'†rqhÐXptrrr†rsjsj'†rtjEXeaxru†rvj©j†rwhÐX	.distancerx†ryj©X],rz†r{jsj'†r|j—X
0ffffffffhr}†r~jsj'†rhX; Set to approximately +infr€†rjsj»†r‚jsX        rƒ†r„jtXmovr…†r†jsj'†r‡j©X[(rˆ†r‰hÐXTFieldrІr‹jsj'†rŒhÐXptrr†rŽjsj'†rjEXeaxr†r‘j©j†r’hÐX.xr“†r”j©X],r•†r–jsj'†r—jŸj†r˜jsj»†r™jsX        rš†r›jtXmovrœ†rjsj'†ržj©X[(rŸ†r hÐXTFieldr¡†r¢jsj'†r£hÐXptrr¤†r¥jsj'†r¦jEXeaxr§†r¨j©j†r©hÐX.yrª†r«j©X],r¬†r­jsj'†r®jŸj†r¯jsj»†r°jsX        r±†r²jtXaddr³†r´jsj'†rµjEXeaxr¶†r·j©j+†r¸jsj'†r¹jEXSIrº†r»hÐXZEr¼†r½jsj'†r¾hÐXTFieldr¿†rÀjsj»†rÁjsX        r†rÃjtXdecrĆrÅjsj'†rÆjEXecxrdžrÈjsj»†rÉjsX        rʆrËjtXjnzr̆rÍjsj'†rÎhÐX
@fieldIterrφrÐjsX

rцrÒjsX        rÓ†rÔjtXretrÕ†rÖjsj»†r×jXENDPr؆rÙjsj'†rÚjEXclrÛ†rÜhÐXeanDatar݆rÞjsX

r߆ràjXDATASEGrá†râjsX

rã†räjŠXopenOutOfMemoryrå†ræjZX   rç†rèjZXdbré†rêjsj'†rëjÁX6"Out of openlistSize memory. Hi dev: Please increase$"rì†ríjsj»†rîjŠXclosedOutOfMemoryrï†rðjZj'†rñjZXdbrò†rójsj'†rôjÁX8"Out of closedlistSize memory. Hi dev: Please increase$"rõ†röjsX

r÷†røhX/; power | discover | walking | sailing | flyingrù†rújsj»†rûjŠXactionTablerü†rýjZj'†rþjZXdbrÿ†rjsX  r†rjˆX	00001101br†rj©j+†rjsj'†rjsX\ r†rhX;EMPTYr	†r
jsj»†rjsX                r†r
jˆX	00001101br†rj©j+†rjsj'†rjsX\ r†rhX;RUBBLEr†rjsj»†rjsX                r†rjˆX	00000000br†rj©j+†rjsj'†rjsX\ r†rhX;GRAVELr†r jsj»†r!jsX                r"†r#jˆX	00000000br$†r%j©j+†r&jsj'†r'jsX\ r(†r)hX;LOOSE ROCKr*†r+jsj»†r,jsX                r-†r.jˆX	00000000br/†r0j©j+†r1jsj'†r2jsX\ r3†r4hX
;HARD ROCKr5†r6jsj»†r7jsX                r8†r9jˆX	00000000br:†r;j©j+†r<jsj'†r=jsX\ r>†r?hX
;MASSIVE ROCKr@†rAjsj»†rBjsX                rC†rDjˆX	00000000brE†rFj©j+†rGjsj'†rHjsX\ rI†rJhX;KRISTAL SOURCErK†rLjsj»†rMjsX                rN†rOjˆX	00000000brP†rQj©j+†rRjsj'†rSjsX\ rT†rUhX;OREROCKrV†rWjsj»†rXjsX                rY†rZjˆX	00001011br[†r\j©j+†r]jsj'†r^jsX\ r_†r`hX;WATERra†rbjsj»†rcjsX                rd†rejˆX	00001001brf†rgj©j+†rhjsj'†rijsX\ rj†rkhX;LAVArl†rmjsj»†rnjsX                ro†rpjˆX	00001101brq†rrj©j+†rsjsj'†rtjsX\ ru†rvhX;SNAIL HOLErw†rxjsj»†ryjsX                rz†r{jˆX	00001101br|†r}j©j+†r~jsj'†rjsX\ r€†rhX;EROSIONr‚†rƒjsj»†r„jsX                r…†r†jˆX	00011101br‡†rˆj©j+†r‰jsj'†rŠjsX\ r‹†rŒhX;POWER PATHr†rŽjsj»†rjsX                r†r‘jˆX	00011101br’†r“j©j+†r”jsj'†r•jsX\ r–†r—hX;BUILDING POWER PATHr˜†r™jsj»†ršjsX                r›†rœjˆX	00011000br†ržjsX  rŸ†r jsX\ r¡†r¢hX	;BUILDINGr£†r¤jsj»†r¥jsj»†r¦jXUDATASEGr§†r¨jsX

r©†rªjŠXcurrentTyper«†r¬jZX      r­†r®jZXddr¯†r°jsj'†r±hÐju†r²jsj»†r³jŠXcurrentOpenr´†rµjZX      r¶†r·jZXTPriorityFieldr¸†r¹jsj'†rºhÐju†r»jsX

r¼†r½jŠXopenlistr¾†r¿jZX	         rÀ†rÁjZXTPriorityFieldr†rÃjsj'†rÄhÐXOPEN_LIST_SIZE_MAXrņrÆjsj'†rÇe(hÐXduprȆrÉj©j¶†rÊhÐju†rËj©j†rÌjsj»†rÍjŠXopenlistSizerΆrÏjZX     rІrÑjZXdwrÒ†rÓjsj'†rÔhÐju†rÕjsj»†rÖjŠX
closedlistr׆rØjZX       rÙ†rÚjZXTFieldrÛ†rÜjsj'†rÝjEXCLrÞ†rßhÐXOSED_LIST_SIZE_MAXrà†rájsX       râ†rãhÐXduprä†råj©j¶†ræhÐju†rçj©j†rèjsj»†réjŠXclosedlistSizerê†rëjZX   rì†ríjZXdwrî†rïjsj'†rðhÐju†rñjsj»†ròjŠXbacktraceGraphró†rôjZX   rõ†röjZXTFieldr÷†røjsj'†rùhÐXMAX_LEVEL_SIZErú†rûjsX
             rü†rýhÐXduprþ†rÿj©j¶†rhÐju†rj©j†rjsX

r†rjXENDr†rjsj»†re.