From 147415beeff3b77e0a43ddb858861a3268eefbec Mon Sep 17 00:00:00 2001 From: root Date: Sat, 27 Jan 2024 22:14:18 +0000 Subject: [PATCH] s --- bigint/build/bin/testbip | Bin 72952 -> 60800 bytes bigint/build/lib/libbigint.a | Bin 27544 -> 32666 bytes bigint/src/bigint.o | Bin 27160 -> 32384 bytes bigint/src/libbigint.a | Bin 27544 -> 32666 bytes bigint/tst/support.o | Bin 3424 -> 5408 bytes bigint/tst/testbip | Bin 72952 -> 60800 bytes bigint/tst/testbip.o | Bin 44472 -> 68968 bytes matinv.bin | Bin 0 -> 2568 bytes njlisp.asm | 11070 +++++++++++++++++++++++++++++++++ njlisp.bin | Bin 0 -> 38424 bytes njlisp.nj | 2580 ++++++++ njvm.o | Bin 52104 -> 64176 bytes support.o | Bin 3400 -> 5400 bytes 13 files changed, 13650 insertions(+) create mode 100644 matinv.bin create mode 100644 njlisp.asm create mode 100644 njlisp.bin create mode 100644 njlisp.nj diff --git a/bigint/build/bin/testbip b/bigint/build/bin/testbip index 9d6e4bb24aa09f07165e9b0ecb132826b56822f5..e81fd53bcd791bcd14627cc32c0af1dd5b854f88 100755 GIT binary patch literal 60800 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 dgkFM{;bHc|)CvL_*z{j{1W}QNrU8x1006(sG literal 72952 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 diff --git a/bigint/build/lib/libbigint.a b/bigint/build/lib/libbigint.a index 9d557f4e9a2d4cb44a69431b28c5520693d5b83e..81779438a7d12904d9845ee9f5a9255972675906 100644 GIT binary patch literal 32666 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 literal 27544 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 diff --git a/bigint/src/bigint.o b/bigint/src/bigint.o index 4e68f95420ef573ae35b673fe7cf9a26ca89ff9b..95504f2808c7285a654508802c5b2d7a74d839db 100644 GIT binary patch literal 32384 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 literal 27160 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 z zQ1H`0RIPvB1ku2H5X7Z|(*(nUO7Jj*D7RN|yWo1krGnE0!-7iiFzQ7zuvc)q;CjKO zg3|=Uf&g7^tmt_On2Ot8UqOQOHerlmJ{oR+akXCZ?e{=?g|^@K{6T2@y-ud+x8LV5 zo~hq{kMpYNw?Eo?R%rX1t?!Dw{k{g-y1e~fW~<2CUvxc28n^vkY=1aaLd^ov5*3T=NYcfHW|*KyN?w!aqRmz%85 z{yy#!q3ti?CJ1eR1NSs(#E|`s;g==f+RLBRr6za%e>0B5#{S^h@2l<k!oB8(pqeq2i99@M&U*Cm=eo~rKTAB^;h{6nH&@8 NO6jtbVi{Z`{|`kcCL90& diff --git a/bigint/src/libbigint.a b/bigint/src/libbigint.a index 9d557f4e9a2d4cb44a69431b28c5520693d5b83e..81779438a7d12904d9845ee9f5a9255972675906 100644 GIT binary patch literal 32666 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 literal 27544 zcmd6Q3w%`7)$f@(Ig^=$goK1Qgh4<95=byetc-;Q6hhDxV!v3CAtZqW@*)Wm1(hav z#Y#0)tXzu~TU!&Pt@Tj@(uyCpg-R7$pRM1o*xH&{+ftwvER_5I@4fcSnLN<;>v!)x zKTrO9t-bczYp=cb>&!Vac4lcqS>+W8<8r1>%MM1boEh1dUUJ#A%Pzen7@VG+gAARW zlbwBOZZ0VPQP;ABaCpk%>lV(Ldu4F(HH(Vp&arS+@(->&k7fAUO)btkuyWfFH3-_sB20c%(h%s)ZgxQ65QlkVr5wMb{Qi%d}Hc(8dxx4OdNri$h!ApqfU@!XQ) zC~Z<(Cg>FPd67K$Im`MYt&6iZ>Ky$y94@P?si~_qyl{BV?Bdymg85=cFv_xQS6VgL zMMGa>6S`of@Os*3>`J9kxN;|HG=GI{NVKoKV)@#Y;nL;H8!B#Od*}Se>_t~b@*liN zC*Kr9=1z`enM90AqpzxVh3dDS`qoa=#p)9@j-H}%Sea#I>SUk#&}fz0Q{V3{(S@?a zXy@+XJsoHB zt*t2E=J(7x?e|!J>56}7#AeHyfhyCXa~qNQ7V=5^tyy~@x5h2^+<`Hj1AEG)%(~3) zXt{RLmuYQW)DGD=CA)DD)6~E7K)Cbl`q>?@Y3qJF{QBAT&vl%&t*xl94L5Py+4ax2 zGq0!J0mw}BSX;Yo3-(JJhCVa`HmWvs+2A>!ux&1z{oZJK3*}YYUHPU>&u)n+=XW=9EN2J~H)@jo>UGcL{2hcwqtz$YP zb%SotAJf_18t&}K4|n=Kfz@5`PnYzGo6ov2{?pkfP)w` z?rMFgb7Ix1yzY2wkEt8>>~WlTk5<1-y-zlx21 z{gCMD|4$IZtc!6+-*+XVuL9QT=g?Nu_73DJd!K=?Bo<=YjWUt8c@plL=$Um{_dv8g zpkt+LpsVf3&-7TA8QmBcsqLui_h={UW?kKhuCj^nk7e#F8E=x0{?+3R zy483?T^w)97S;!Q%=kWN#*VTJb;AFC%v&AM1)00X^r7p|oTJ8#X@1V#2A9ruiC6a+ zj%fqu%AryFyNAx=ym&eR^*)Ar3#wM!4m+IJJu+IRYh<*|nN^eW z+U;<&{}z8*JM1#;G;M#Aa}D%&KwmfJU^70z({r@TZ|o~m&ZTD!``XVr2;(P!KIVL9 z;(@x2&WP`-s`8XP=J_tjQWxjNO3S*G>GzFI=#PnrjlSl<_5(|GozStl$G+t3`Z*nl zZ@n(qjB~r=EY=D7JhDCxw4!l7@RP^+!DwBPJqT@%tQpYtiDH;?GB=>@y<^xF16_y# zcZ_HD5qBRO!^$qy`3YlKjn(tS@xi|0*xe4sv1{GyM*p&%J>qz^iQ|c9?bJvt_Y;R7 z7t3!TZrTyYh*7mK>94QM{B+(J#`+eC;l6z5j$z2E7{+>7>5gHPt<&f7WxwNEm!T_C4*RVC ztLv+olT}<<|GqU8ZR)koF($chp|8)kzG80abIs>E8MEI1o7P?0!~1`7|0Dj5?E4rG z0qp&H?W@&(Q19gtH+t{q+Nbzk=QQId>N2rue603{F231g#I*6>w1==f0Ul$w>9qp; z?S9tIgQh)wttsbQk8Rmc*s=SG%7FIIbKl5l#u|w|O-5&bb!YmtEXP{pi~~C&^RijD zWloP-w{2OsZ%G*GUZ=aUPP5HwPCW3n=-U2`rFv~|&1mjuU7FY3*M0`_YCddTs@Hb3 zfibAoMV=$j7Vf+JOv9gt&6*0`eXjG+$Nf{LSzF)_RTjQ`g7fNui0=}qPt~RM|36v( zW7hb8^IZ7<%UE;ATI5WF{Z7odPLegfzi}=3y~efh`yAH?yx21(;F*FqX3x~oI`Wi> z{r1-DPpM}Lhy}Bc;oQ=Wc;Q&W+@hWZ9qebn6j?8xL3?CuS(x9+r*7_{%$zg^YvoSF zS|l%tXL30|v@VT4zkn{Y9=Uy|Y*o)2bd2*%-jP4D(-I%F=U?Bc&+I+M0CcM{fV#N9 zq8_g2-HWl7OWCf)dMzL0#n@xJ&9f~>&llQHd=`bd0(Ki;S?ROXd9edJcRo2fFBAGQ z(dPCiZ_s;VJgYGM9OD=2FntHV48oWX!f!_xz$W86mrVBpp4Zq{)}9XN?!Lxl`!%pV zU9YEq_VC#b{4VpC+N+~I*t@LpAF9g3GoMs{5bJN!p%Lw^qnkOmm~)#d$37_=-P~Wl z9PHy6k+RG53+B&Vtv57J#2mS+49K%h{^;h8eAs-I%jTLO*ZsQ_zKHl2{nV?i?0Y^#Lkya> zy8Zcy+j=?bHv7cO|H-zZood`+j_7aP(GHv!JG*DN>Y1V2$UbEr+o9qfYsgNVvrM~p zwvNHL)bmZGJ&-Rzj7&VVDzC#H-E8tB@e|PT)Bf90DrVaAu`WR;$4R>_W7w9n9L|sP z#ze=BiStNZ`52#wla2$UntSIhjoR^zXudvkF72FX>}Va;+;Lz@bNe@zH2cQ}CbgHr zF3=q|eTV+TxNDa=t7{CNSBx9o%)L;1naD8y!DFnccpG;^bH{I?>z2UC4#?~R{TOr= z+>$tQk|$wxN9&U2iDMHcDcwK8{3NWS`;(>E^&>AOC%uxWD9cOKI?(-+=80zU`j@eJ@ zTg0c@J2UqBv$=bm%eUit`<6a5?TXB07rEMVQUC2xvDJ?+U;Bi?FuHh;Vw3@## z52)uzcm`4_dwx@w8qb)s{qFNO|me#+QPDq-;b~_ zi0lW>(Kl8_4;{fM+^f%@b<7ejW0-yfpoX~-C zW=`i`kA8gV@Hr*w zRB_g7`ejTf`_si+!{^D$b`vY^=QXIy*sS{o_PFDvzvnfy5q0+eyr%EpMbK~m)bFI~ znK;{;3g5qhHNnJ`;b9FrC_L&mdv1S_zx8<4bJm0X?5oe=Ig>o6UBlmKR17k<#Vr(cV`2T&h= zBUiu6a&A!a-`4WRuWp@eJMWnK*+>2K!7PtH$DsY#)8poTT*h86Js8)SvNtyJd=B_N zep8!==YHy3;IO>4tsB3wp-)cxsS|l>5B|KhM&+5hMAmKpyYLBZf7r~|m;+Tjpbe++siT~MF$hVD^cLLV; zEZawH_AJBtx-tH#e*yZc@)rNdT}T%sy@+=P64Wyf+CzKUpOHRB8P&(|JI`Up_K2P6 z-%8_S$g=PF8$>4hkFrXR>mu5A0{uiA*yoG^^i4!J=UG0}p`9$}o`ZSrh7VP|w@2m@ ztbHHjC+fmGBQf*2()BTW0M?Cp@)Vynn|Zd&wsv7`pY{))by>pm_|3+~IJOgZWugtJ zC(<|OcfVfk#JRJlUw2+IMxTq}TiV)wNjOin2|n%mFkZ!N>@)P(-!vh+6~8Z?-g#n7 zp4tDfed^iRiEv(f8J_!<;rW^PslV}T&OkfuF{hr(M;Yv0%zj1Lh4ozNcogHw{2o1! z&;I3Eo2>EO9Cvcw_2V3)&L88TZ`{)64%&gUMHlumIBV*CmHFKV`yI8{hTJa51(JR` zg6Cw;t2j@ovxw}qu`XtGzRfxClkBgsN2!!}F?D{@y-dvh3hRL>kJ#9Q-+E4Ctl(J? z_E#7y*mJ8rP0TYp*Rx~J0}sQul!qVtoC}P8(|-{fW4ryyj69C#4z#(;4(#f9a%mpc z@HO3tlZ!pppk2YU_gKc-ge65fuKbU)yA5TUizhH`JC^2dk@= zH2Yqf?2`hdGi+s7tg!q+QK=(tLJ`h?xNtl*+oTjuO4enD6_7gP#y#X zCuC16v2L*3h8R`l6-^aoO%>(As_N>Bm8he(syf(Ev7(}(qPDD}->P%YTXla1Pdjg^ z@~RuFlsA^&6uh~jp|0P`bI+@$zsjfoOQkOTmr7l7-cp`a&xGVO$4+k9ko@P{l2e9` zOiuL-!s7{Vu4O0BPy6)nPbFTS=pBYv7Kd2#)9hrDc%?VZlbEQJPLdKNk%t@~UeB}Q zb0G_k!-9T~XFgt442%VD1|$;3qrer3iAW|gnV5J5k^`iOsw-(AWGyRsibZ2)4O7)R z7Y(O9mNl>^+pPm~qIFw0uVu}pzSrdy4iP3|) zENiG{y?5Jiu~l)0#R#H8yptW#uc{l-Q$jazWN)@*jY{*-SK8^L2g9dSnBgc-jk!=k zFb)2k3AR;@)gCWD;==TYYXC;CrQRp1A&IM5gZj%?q`i+Kc@=K&jDT(4!M3^kcnr5^ zd|c2o#`!LicaRKP&JRp_tlxRwq%TNueq_?)hFSKPK|G1uljw{8CeVA89k9(C+5Yc= z6X?XBNmjxkfX|co62KoH{|dm{0NL-uG+t5JG%NnkV0a%u?x9|}UdjC$a$l6(c)V6) zd7lC2XT9Vvwc( zgYpx+0ef&S`Ae(;%FfpU_B_edj1L0#t)_f8%P;c;?5BE_PqlPAcO&;lMqX*OP~YEU zI3vKxxk$HGm&!q@mBLB-4Bid47vj%vA>tVp=l7&K?;&|3Se`+a^CzTlVLCm|@xY=@ zOb>Cag!hr*#3h^n_&t7#sP6Sx2@J#dxP-w3c>x(hJ8*ky#~Hr>1~8tGsF6tsB^8?`l;M$mU-&r&^I#N{Sv{Rvu(LHJ@eH!aI;oH{}*e zRsMIFcePN~`=qX+q%{~@J9X^@&r`$dy?1zrbUB*a1+zRgVRG+Ab2g~v+@tkuZC1@` z6RJs>wpFNxlPvS)`?VYDKO%LnP}Tn+wT+V2kR#Yr@oHB!tz^!jNKHSDsp-X-nhwX* z^s|_nULs`;ZN{X|i}Q}Bu8z9H(Cv>$u6LPkf4j)&_OGMNKJVapeA^t?ySP0yx03r8 z?~uv*t#xa&vh{Xy{~odROpL8(V{HA0Q1ywd*-+IT5vplLHgP%%K z)>uWT(o^##R_xfr;`lrb*FGG*JT*LAdKY>aB&vN^d)PpbO{&wb@z4g4^{Us33|T#p zMts(gm8usP8M0g%93ht}izDO`exKltkk=0;x!A)ohl)yuk}OtD0Qou9zH1FxtQz<^ zLoOOk;r}pX(FG(+40-j07_u;v^w@1v&BhzoQ+qcH6nAgE;LUSdX$A`8c97sLqgu;SN^-gka5qWr1#TW&!BpK%Yf^s z(!*)PyNs1Le~Ohav+u@OV235*T~cqU(UFowa=GXz3Mv&=HHvs@I;o>g=@>$(wup}R zAm-gFI<_{duKBVpT~j@R!uM*GBllgPRqj@1Jx`SrR42l;+s08+lMEgeS{Itos#djJ zWTHg}Po^PPT+Ff)O*fS*8zSU#6#$b|t~ID~ytaY!u&3sywBc~HS%+1#U{1Z7x(?eC z+PeOqnO3gmqTqeWw6a|F#ml;tN%z9J_Sf(y1kc$Ij^YBd-M-Z+0N#%gWZz~vTyGcw z_C~)`WYS+4;4DUZ2W47PoMk56I>=dp^f$=gG|ZuERoUA!o&SY2w;lH8Z0ByIU!csL zdCq-EzsmF%XE|R*`UKN=&2wHvdOEgC_Ld^&=SVA^_mnuVBYhqDZI#aNkyiS*);sSb zT}J-4Cg&K^T>R|&);WIzspsv6nb& zfXWFsSk5}6Rl%ixE9np{98D^N?Xi;HilH<91Tur!RuVT-N&H2AG;31g87if+?O|X( z3_<&|_BbRt-8)y=Q;>WH$+%$&&y(X%`V=_P3Nx+&DHRkWIY!m86sh2UK|Z>?qk*&e z30bhLy0ms>(3~W5rccS9k{!%c+^n4G+1XQaz?n8>`b3`pa5$P$W=$>B2g#{(DsHT( zuB)$Tn3|8z150bm3-SF^aa~SXy??;*u$i<*O}Ma_Y5>IJZv4NwKlM zuDW9N)cismVv8E;R^ccK{;C^mrs}$;Ha3)@+Is6V^NXyy`W)*sRV%MqzG_j$3Q*Im z27C+FP*G!*RhBm3ldIW_7R|mcymqI%Xt#C8msVq=h|8Vj;pGO zJ}gI>6pKhSR@OB%vCaH06t<$$xy@x2^-ZvqY<_kMxVB6qKP;`SSjP&%<+rKKEEQ~A zyPR}MS*6P6C#E3zQ7WZsH1Y#hk~qi`&F8B~>Q7OTP#>!T_2;WdP&kLubNJP3ZFvsv zX;yjFiWOFsRbJXuy144*3g(O3%1Rp=Zn8?(He1cG<;v>Pl~xl9uCi96;3ZbI)nGN2 zl~z|+Ybr~dEU3P5nzeRSHtrnU)2ya-byh9>XXldVt zS5!e!c=-y-Enf>*UfKvoBTWidFJGY(Wp#C{tH3C$u48V4`X0BjqGGkRqQ0&%jPG~D z<)sbyN-tcuVud2nPnYH*Rb7Y3AZ%tBRFO;tBmSao=6(zv>+{_}i@VG%_`v*(lP`B3TUW6r<7DxLC$D+n=&^P0d@&D!faWXhFCfwU_KZ2Vp9saZ0**IL>b(5Zq$%GddSJKx?J{Nw{ zhqQYvZYW8ALAKDpL7G0f7x#0x{|oouaVJ5Dr-=EuxxwYe@qXM-rvcbThmD3;=YeG-b_)~HlddZ&21|4pA~ypCuwuGV7;VYk$i4;NqX-4dqkCUtyu2m3;2Dn7>W@$1@b^mqZ^|ebSQ|Xt;Qi zBHbnVCT7Xw)iY)pr~ix$t6_ifrw3j%ld*3j>f_YN(6P_vn{j~k&EhG5kC>Ldc1L3N z#?6U4AARw3(er;h`$Two?qfI4X(|iex8eH6EpIPAR{z0k$3CC(%_lZ(n2@>VOFz4J z<`dJ;)qnWkcC<7O_`-tlB$uYsE^F8{*fdQ29VX(`CVFMNmx843yYfzN^wV$2E@f}2U*-qiBw2f+@FbhZUrdC-GNB?L6g;n zEMajAK^AuwQjmK(vbfEY8tGiJm?ctA3hNG_u#j?J@&q8x&12gAWB_EZeD^bgzVh8q z3i`@7Bb6houYC7`zps4vVZN_?_p!dOeD`6zuYC7`8cP6N8hg19(|wh9AFKPycOS6( z%6FfG`^tBpi2KTSpZ@yFcOUfn%6A{&`pPc~f{TlXGhDsmW8VdeZ}FtnSHAlc)K`8n zf;!F`fzlq2=kLi$1gauq%D=LYow~NMVQN)vS@qiTivMo;sih4y|7{(OH#J(^-*IPN z$#zM)jQ$EYHkDV^fe-hF)&DyIY0TP@G#wu2wE~gAw4aLeIEe`-oPoXqC%(mTe65bX zz-J#^57KAvi7Rl1`u0kW&;IfH7P9w&JzTNv7r=3R_7CC;eD;C$Ek64>>iwRs_eivY#~~Z=*{^^z5>*CT zoMhi77*SwoD5Vopuic8TG30ZX8 zm%x#3i}!76b(|AUVxcn_`q9<^Iq@f)K;eScXMOg&C}R8Uha5EP9VkTcozdcn=#^-> z1+6EX_ys5ll_#C}!d9PstTI@R^mt%hjvDsWh6pdNv6d0V8?toPwKLV*HrE_Y~#)cc_#zJQVd^qfU zqwv%%Y82k-)ls8E3!#5?&+&@xXmyeoI0K*&^J{|AJF37L0ZUr!<4}{~v+wb86bAf$RfpZau&0ZA882k!t@Qz1(+iMv@Xt>XY zuuME`I*LWZ>i4K~i2VRcF|2-n3r8g=q!3nL1zU$zw;kIBAKj$p;yYkTOwjb~g1$+sVzfQ%D^1{o(Z@E-(!pwIpt8k>ZbnrNE7y{U`uS-$wz5Q^`mSbIgJF)Bhi!^VT}?3r(eMkWEA5P$|1$5Yz?ODdg%^ zmwNz?(m;!S7lc!N_TQj*AomQ&aj-INz6DFM&pr(u!uE$82eYN!ik#6{=IjFJGM~T6 z31Tb5l_cF)pngo2rJnod#_M^paK|R=_ZNzGZotRTp$Z2ngbCLbs+c1|w zCuS@R(qG_lT(8B{8PeipV!AuFp3_|$_VCZDST{8id(D)8z?OE1eIK^4oGJgHih@E4 zGv!ynPC-X-JBRLM<8&a}U3w?{0PMsbMIA@(@N$jzzlRpah`xpSEx~8ELq|X#88{c& zm;qkbQ{7|8N$_7`Ru#QH|An3vzk|GZxYvHx8G9ASso4ao-NVZe8e)GBGBo~WOtm&C zq+t9LVC!jKEwmr14tJf#et_C>TzCOuJT94bZ!M1TuzRx(a;^=>T+$#4eocwvCP$t*p1dk4n*hFF~Q+d|)84G8B+C z46Z>Y4hjR6J0FL5q}w=hP!ED>ppUwti>2msW|kR(yX=9|O-iHBz7KUKV-ANnw&rXY z!ah~nh-%RtSbiXsf-M(vc~U~?-lH3OTs0K4@lBYYP9h8Ai8^dws~*bAAp1@@A1lHs zBh&1&tktUT9G? zrp{Kj9_#HH6a#rXNVR0@ja7Hg4)2B-I($3C+#QaPNP<0B>*$ByK?oi6AcUlYBohrr z_B+VNtoU_gC%`d?RrEN%Oy~iMqchTHrapK1mi4gZ7*TMmFujA)&hCUsJ ziH*K+%@jwl`lEBcr}rl*g(hsd68AZD>_aF4A9rHEa1km`$HJwf)Cq8L=DZDm#$zso zIis%xaA+2(iet8cW)k!9N==g<4vxyzb`;yBFQe z!z3IEkKQqL$L>lp^b4|av=8bfEs>ijMs%fAc6qsPLd8bgmu{v$yAf|#`hNP9MG z3{?a1R6eUx_~pW%1w<8DlLdp4KT7gX29b&XjsfwjOyLI_Lq~wB-9XiDjiLQO%I^cx zzD|vyZ9vMm0V%&lV`vl51Ae{m%LSK7{u04FAj<~@Ey1JspElsvxU9oK{4aO2UI044 zr+{o%JCOBl2eSQJgx;hvR0*64{t_VN@m;vWnLzeK9&ixK=V}ZEfs`KrWPL~R0uixO za3>Hiw`H{ny%EUzH)ssy0@;pi;ZGL+8NAR${wW~kPihQx0%^xnz*O)b*BIIkr2IA@ z<=ZrdmI%K@_{G961k%rW!p{|c3XpmZ z_yxM~5sjhEz$EaSfYh5U_%;SJ=^cXEg2RB+lMci$d4(w&LvLe{Q~q(mO2J&gVS?K+ z*eO>oI7;wM3|8{@2_D9vBfVR&O>mCjc)@fa+j|Uykn(Q=Y2T~BWY~8^V`#JF7YmL8 zs`*0bqZl+SzeBK6upCG~F4Gvw2C`h7Dg5Wn&kmS_y+0jYPqU=T>X z!vxbchEfDSKoC>@Rl%nOw+XfZS$>Pg&_>}`3eFQ8FPI`Y0LXIq)|D8F116%LGYCq? z{ShGZ4+_4ZF|=QB2atA^2!4PdB)vnhQgDu7rr>xW^#(PDb|>p{%|QBdnb3uT^MI6} zB{)-KC{HjQI0fa-pi_x&3-Uu!(vJx41X9lqjiK$p1mw2?+1_%=Um{qdF;pyw@1>N! zQ9%6opOp^8O9EMb;h#Y#lYa_G{<}cN!J9zZaTuuPS)sQJZV~=QAj>rizZyt=mBKF( zexdO5fYcupK7&m80iDQpp3)dP24wqQ5dJ>FPRV~taGUTq3vLqJDES)%mjPMND8aYk z#EU_{3B)hrg|BK1Z2?k_ue=fS1apCtAeXH%bQFb{&;L;#v0iW{knxZWr2ff3{3KqO zsWB7>r2H{3i5~!|_g%rG8bfaj?gP@lJAjlg5sVYuk4*Bn2-XW$1F5%CV`!A{52JG^ zzgv+1GZNZ63kZ>{QNs5N#sR7441$1oN@EB=^^gu722$UCApXmGTs z$M1KFzft(rK*mF{KQNmbm9Aje-g&C{JTKf@g@*iS^I_FDYyej`?qTh zwE@-m5&jav63H(X%m(H_-zii={YM3N3$_EP_YsYu?ZRIoI8!iB=NIN`4Ecdjops8q z^_~P$58o-JU-{+@?R!=DhXoHx{tJT3fV69l;4IBAoGJNyJB#^81P=pQ58vJ*?$;RF zC%6R&)3W&X3(N6UHPYEarw9%JvOM1op}jN~|7E>uY5rlsgBn9G2<`@QT(kpWV&Nki zLrZ|HuLMZF#TrAo!p|1|WZ{novOY}XN*>dQvLg%Q0(@Twf{yq(!9jvQMKFvvoFy0( zv;>brh;sV{cM5J4TqZb6FeqpV9!0%K`t}R%6x=AdOmLQ9P!OQXO%y#Z0h4i?>nli* z-XV+$%tyn`7grl4-@FgBUug4w&mV*~@9U(Ce)E0~=7!87ky-6?b@jmMRMoB8Jbq;*1@_jxW9+Pr_na!MceKfGSS zP1?Nwh3%`Ni-JhtI)j_}=KZ5bg=QYF(a2-IdH)K>C`Ft1nYNO4wfD22As)GsK)C6* zdgR~GgPzud{!I`1@*XtDzgxfh2Z_{+;ry46_@X#5`i~ez{;i_OTjSxXM)i8T6~st!-#KSC2;fp^2J=kh~vE4;FzDJn4s8AWw?ou~pitjzp#O6pB_a^xRe z!aLtRUyEn1`Dc{WTkT}1e|kw?jVG;Mf@ebgTTCnJ`7bfy-SDc$M*M>;c!wJ~>b-d; z%)jxZ|BBD3n{t^+4p_aD%BM(9L?oJ0WwRq0TqFMvXNqt} diff --git a/bigint/tst/support.o b/bigint/tst/support.o index f5bd62d4ca32ad2fc9513f1a55fb800a22c741f6..c619bb13d6bf925bac804de36de0362d5e196e6a 100644 GIT binary patch literal 5408 zcmbtX-)~$;6`r~48*jY+nT_MP3Gq#78>hZ7$n1~n-3`0< zn!9&XJBn!}OEjyLP`57?3LxGfh=(E}fq0-&p;g~nfdu~mB|<3zH4jliD(9PfW_>-~ zyugum&YbUj=gi!>Gw05}IRC|`EGdN+DNczkOQS-3b7-qStGcsdOzaUK4ITJ+A>aOM ze&hCVzP)}oe{KG5zWsLodp1b<_B+3ZzJ=y@$g6s>Ag8^4``Y~NjW>JR^LMVz-^ssD zF^ZIL&)>baa0dz7!}*Q%yP`F;l~z%<+(df!txnqZ`Yj5(g$!ywl>Pi$PZh#K-Eo7! z4^B7_Hv5F?zBBSbG7Z84=bMvUkx>$VZdNqU8X0-}@zkO5)9J^@B@ugVkw|uk)?Oi!Gx1O$J4fV$gXvUaV&BAw+|@fgCPW{NPf1fe zBYLF%htxa<(lV8b=7IEsQl3tuGjx#LISLuxK985=cr=j_8c6KwIO#bsNsKqU_mY}w znkJUikBE8g?#{lf*rW7dodp4V&vtf{`SLi8dISqhKYDi6>Lz|dGzNX0el~HRAT6c* z_aN;%5?BhDNKm&UmYlGL)Hd%xQHfGRTK0aiGa8)SiQUppe3bmL{Xk;)NA_nwuzQ#7 zp_6txnYMRq+IGuMe_;1*+VWZZ$dujx+YMW8SQZUl_q~dv8XU)BtwL4dth+3lwM*_& zD4u?9!I_(W%$c6f&Sa;YOe1W0?#YVlxk0T&W+5n5Pp%$2nmIb-WGYT(xzJqmO4Y#k z{8ls5@?NNUsu!A7?XLMAIZDehnE=#E$L&+DMD+3Lf_G~1HebRh589a!RMxskLJV|4 zv4&K@4MB!ov3cr`06q@t>t^urHSdPs&v|sb{wz)1gZ~)wUnULFU%}X>jU6sN73x52 zyM72h2lqU5_eJSdnZ+LZ&nJ-_VjO#`FNROYaIB5ye=UY%bv6EN#!*R;U#~oFArR!p zHAwSyp~sl<+N|S%#CKUPhGSfu zBgn}}DL(KcNJ#Qzq&j$=@h=(pZML5`@KenHhJpWr?V^DfnZIJ-eT-i=@V~Kr)xg;l z-#760*#4n`FLM5$8TiL+zir@GnEz)3Ut|0q27aD#{TD*N_pdO1fVIZcY#-Kfln?J$ zpC6r1^MAwRRSmvApD!Bu-(miB1J@PfhJow#`MH7XLikI@q2l{c?>)>DXG4pwDJK7Z zCV-Fq@38$4YmFae`(XoLVtdBG>ueu4@QZApGVm*G&lz}|?Yx1%%Jx~-=5slWV{PK= z^SFWQ_jS&|^?MiD=30YpNTkCc(pB9H+`&nO-U1)w?~(dcYmR?}7|8j*#^XDNobkOyW@mg|_klso@v;9+ z47_m$|717~Q{Y^6TfbvCun>MQtRLQyxqi-^>klx9$vxi%18<&-&J>K8 znDMv|cAY%JHk3$l8qmJ>lKn-z_kQ#GycCz1yiB` literal 3424 zcmb7HUu;ul6hF7Ox9!%g-58so0+%>sQ`c@V!U6&t+sOWzE!)(g(M#9el|tLwwB2B^ zgk=z8)C3pN2VYoxktG_4Pb?}C_aMe7AtojU9~NR{Jg68=%rtZU&b{B=x-uf3&)o88P_c7il5qaV*$ zx@Gq^_w_E@wsuV@jOT!U2>>4UIcbcAO_~-?XHwBbL^w2UC7z8F6#c4VkF+FXXOpH4 z=>0M*9Wcq&OD~)ogR{Ldj%I*Ak()oF-^?* zX?oT_HqCLfUSRp_r|)>{=Ycgn2kDXMw>kIuhwhh@zHo-)M9J|0Pw=Z8U*Um|(Emd9I&a0|E&0R;ghu*Oxt z&Kj|G{XW$1LWLZ{!J~b-F|8#W<*!{4Rb)loKDB-s%nGC^_SC8l*mzI@RioVnPOu3Y zv4q)jA$ByPk;?L9Hkjm2G|uPH6q9lR!X>#rgz&f>j3HI!$=^dVEr)I-x91gjJ_k#_ zyw@S}J=lpap)iJ2K;D~>7g;ZKlJX4{w^RNY!kkMYWfr;zfr2=3DgFz$rG<{O9u*6c zN)Pd}eB8%$94y7>x!rmKZJ}dgw4CF%>S+Crvqd#*Rh&d0tO8C)s^mT@;|V0`jtSbwRxM*t9&e6P1&89K2CmX-I2KAo)L}i9jv5KIW=EhpP_0&&-m01% z)zyI-c(w(0R8o2RrZHVG5sjsjMod2%Z0x|?T`7a_J^V+8@Nz8~(5g7)x^fa_!FU>2<*VaCK_DT5G zE`p#!x2mI3O7wF1d-}23D}jqw>+W>HKLF+*FK574!CXbT!oCD%GH(auPo_m=-YDpN zRhi6_hkSx30ogeTbJd*wPYiz?n7Q;ZamD7f$*AK_)OKDY6Zcu#;v%o1dhAv2 z!o^RKqqs}BcyHLncfJe^;u63vE({_Hnn~g{I&IsQ*{>A7d-}6qAQhPhXAd>y2j-y7 zXeCMd+gHefQvgd@kI9V9<1I5uUMne^@_$!kSDVW-q>xcbih? zYFGTQ3fq)Ys0dU_&;hj=s(W1S9aj{WTs5x9?MmrVK)#42*Qd&c{L@MSCTLfRFhpr{ zc#zx~%#Uw#)fgnw=@_--o?gg2_@9FGK=StCCr6bEiM4b*YRNrMnhPV>ZOeAe2ssD| zJlAd^9~b_5AypwE7|#_D@-UE#& diff --git a/bigint/tst/testbip b/bigint/tst/testbip index 9d6e4bb24aa09f07165e9b0ecb132826b56822f5..e81fd53bcd791bcd14627cc32c0af1dd5b854f88 100755 GIT binary patch literal 60800 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 dgkFM{;bHc|)CvL_*z{j{1W}QNrU8x1006(sG literal 72952 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 diff --git a/bigint/tst/testbip.o b/bigint/tst/testbip.o index 8acdffdc8b2ccfee22e4b6e2727cac1ccb105978..030f5b8bd5fcfe09f3e632cbca324a0fdaa6ebc7 100644 GIT binary patch literal 68968 zcmeIb3wTu3)jobElSx7XBwR#Lk>M(eB!oK%ifA;57qn2JiXkKuh~$FF41$87@rF?f zEmW#hsI^urc&S#YO2I4Mi?wR&y{#w|w0LPnKg8c!`>Zv2vyx-d+VB5-`0sh1%sKnr z?|%2Y*V<>#IWs58;(}98N(qHL-9p~6UPDPy&+DJwfR1zUIIo-6)%zs-@GqtmF5O;O zw>w(6bkW|zrHMU-OQ-B8tXs6#i}x$6FW8%XzjyhT_@R7Qxb(@w>muB|aOu{Kyx-vp z^*&ZVh1$MCRX$p`XooMcqd{UvfW-2rA5$xvo9JG5kn06IcRg(8F*R}!$V_Q9vtz57 zy{Y@w^*)qDTgNOQ(bh4)OQNk~&LYv)G3S$L>zJI7)-k`Lt#!=(t!94MYUZ0H+PdDK z`=GVVhu+xVO3hzB`#~$2KYs9y{jKwP_3h7o&?@Hg>0fh7Ep=zC)4|iK;hb)IZnfN` z$w}67lO|_d%T1b`b}ct)a{jg4q{)fca+4-!WXnyOoSH2+X>yLX+@#6L+H#X7XKl+( znw-8ZH)(Pnx7?)33Egs&CTDibO`4qIEjMX$uD9Hz$w}XGlO|_>i%nn|pf~xsrG@pW zef!glC|p{wH-F34f^|GQ>I>HCySBWSFD=-@V6*S{TMKR}b&YOm(&(xBf?I+b-L{5i zReiy2O&V=uFrcUPG1t@jCXN1BU$8!?(cL$?p6+ha=$-n4yMr3tcY5)|6o~tpG}^&n zfW3{sy6FTO)5a!^_AnUGXeEby=Wpp{Yr$%Fd<(tS7pyE?U4P;g0YP`wh4m*sv8B+@ zd40j^!qo`)t9ikix#lZjrVY>~*H* zskCoOy&l{ccJ8hu5_30XgluBa&q2cq>)-TUtWY5iWhB{@K&E_2<#sX8F%`hjR& z=K6tXUFP}$XT9k%&x<6TwR{5GRbB zru@mm0lLEc{lK*zIsmQfTt9HFABYo1*YyJ}>WwdHqRl-hvbDf{bg}b?bd^(Iu%qss z^eeU`deG5zlhWz6`HunkF_OgLo1^p=?OG>4hw$&|caHbP>@9x5o~;GD`D$uw!MpV8 z?fetH)EB(lgtwQ!yO56r=#U;^Y4{)`*;g}Aa~~=E3;gDrC!M&VUa=*fPNQJ^No8%v zO#is9;N8%ri{Aa}tFV{7>=2qZ{wSn!(QYrEzA=|1c11QGM>`t;71==|JNSJqd)W;7 zF1O)}pT>#Jp$oo)oDLJ8k|;8oeG0`VOw8`bIteyCT|2;1%Q75Q6%IOlwRYx8mPF!O(shgpA39=1IxdDw1Y^057*$;0f)$-^AFQg&G+U3wf`4l{Qo53}A+ z9=5$s4hw_E*;0L@asRs_+R1-3LGWDdH&4)M$&h6}mpsh6HhI{#Yx1z&(BxtJx08q2 z-IIqoUnURRlqU}}KTRHHtxO)a9U+I`>ICt3?zDQ*J<;NzkG$MGTUxO1>%O!liLd)y zzLgTRga*DTv{Hfw68PC&D-_t?kI^-sgK7Uiebyv3X_fs^+EhS~ff>!=A zMQa6{JX85ihuq{j%5N%o&+NBGH<~skM(z~(*9hOx5}bClVn*o~!RSrBAn13s8cus> zk}lNvRNXa{F4gF1!bjdoEnNDja_T#$1U}#6o?vo=!QDV%?SuhORqp&x7o$aOn$Ly|iFAe=z3%E}CsyM<0{T z&+@NnMiuN{XzS~#akFFF-Ta4^&GJ)IzS`zi%EJ07{Iqmu_aJ`qp}sEUw{NYN=?xe( ze~@g^u~8`IH!cotRLpNw%pW`iYN<4|p~$6S$)YO_*P>qnmCGd)A^~a;`{9O3qbn`K+q`5U?YuN#D{;&*1q1_~7R8{N{1$ zxH&%iX$E&To8rFvCb$oeu(-e@8{ryGnj`^uiAoAD}6oj0e?o|?g()uy;V zf+n~RHy$tbD{ykWRp$(vE-9@#C%@rvaKqt{hQpx^hr=2UhwEYA{K2JBFUmV_K$V+Z z?$zM~9L}KU$^(<-!O`=geW@i?@nQeIrS$3|=@HzMan~X**}@h3_Dz;c%jcEXR@Zo$ zeTS4rp2xBw7=vlc@?}9{iygXJFj~*43KB5DnHL=R#@~YBU z4bz+zIwxq%ncm!rSaEGEN)4#8I9ipcoEfVb&3aL;l#?Njnvc~+i)&(|J(~G^ zK5>&wZ!%Z+m4ZLm|Gxfz7J;4g>s=8ql))Vy$}ipd1-ENQG?d!#VakgKkEUH(Mmm?$ zQr+&bj5J>)EyagJX|6WKUEg(2jqof=%Wx&95?{`aJ(x_@(bf#VX9v^vCCLGnBf;r>O7tfX8VOg=X$PRnBWR= zzi>)coQ5#pFPzr#Oe!q#3#VsKrNU)?;f#!v>7dRpoSA(#9bD}frnOr_wB>%`oP&$$ zV6|U3x7!>#Smzg}J3F`eh4b1JQk%Q|LQy7vH@wj=%y8be_=TAn?D%m%N0IbyKOtU} ze!SEH?Q?h^8A?(t&27!a<*yo&^JSw9jN8}MYVkfUNv%h~00TE8JD=z1v z%oUksk<~;y=of^$36q|c%_B%Zgh&ByVUm~LC(Js%W|q(O()+b#kuDjbwqt2eu;+!^bv~Z=exd!r zo9H0b_Y%rZoj|n6A@tHaC-k$_HnntgFtcw-&5YBrU-)^dn=2V!p9mBBG9h$pYWQ?2 zq%WYCAJLB+$U)?aw%b!PuOz4q{rH?gM+5lCbvk4vD{#>-kGfqIQ(Yqab4^-l z$o2LJ*YRvP(mRUr&>#G$@G)_G?YZ{l zR5$TcR-EgKulTu2Suw*SlIJ}|{rMXQlef^Cb5!}M)Q*g%te6@q_nuav3NM>^=OkNR z=#;pntC*Cmn9e-fLTeo3sAR=?^iiE(@dWi1s`3V?`0P+66*Bz+Nlz)sc0WzFb3MH# z9eZ9wg@f)-R$P;8acUa(lq6vi%aN(!0+VEUIjZ>3-yp-Yh6bLtS zB;L5)N1?`JdL!BH8NV5|Tkf}e6WhIM+P#o$$D!pdwB{jhSML2z+ljSDlhnyRlc?_# zbwHIDdNkCzQEKi?ayKNoJtz<)dzZ@24xLYh#>4nYvfWk5cBlC5ZqjyQ=aM9~uN;Ne ztYvDYw>Xr}N8uIg7E`>Jgfj1<5}kk4`=!20c*W|))cvJ?_u&<57JDwZOmquls+Z2m z-rP`jQ%BDe&pSHV=|S{9L7f(b()lR7VmWs@Bb3?KmF`|ly%uY)S97n$+UvE_D>GfM z5x>`A4Q1Esam@_%8sbo|;~EY1cpU0@?bHo*ymm@Mb)r3zq76fN#}|z@8cNSbL+Pce zZYaG}m4?!ZGxk4{HcuyHXwA_Kg&w36%-%XC0Hpz{o5baBk?hZUi|}&$J`DbqIA#AJ=tZw-EVCjd&Ai7s>Xr zdS>uZS|2Yf>)5O?tv%_X(1cD*%IHa?Jd$eD1++bnF0*{)bn1?Wfo$slgdTMCN9kr*nVpK+xtzGa4(L7!9bRshM*g-i?EOJD*37r`37_nlVlo%4f z8VR~e^LtL?iuMya9p{E}&_}1N8L?^=rZAZ z;>L%ltDc=TV~2JK^=;oNE8OGI9&9LwF0>A#e2{K;Nd~PBhxc<{dUOhf+l!kl){8cz z#PfPmAwzRd*M2S)G8OzG^_H>Fbm7*04)TtmQ1ulNH;L$~Drud7Bf4D`qG&Mth{m`N z_HPVw?3sHcU)mjI>onlZ7(kI=v&orzbdpU|r|~o$*nE}e<%&phvU$7=_-8&v4K}># z1K4|juIVFQhF45rC=~ji_U(Abix&ORL679=iLLlJCDbD&n^rR1++ydtcW1eKaqED4 zmraf2du?P{q7$=ID3X?uh;;K(QbX}b7k?L-7zt;rql#%wD?(J!X?!GH7wNt>5{_qF z{(o~H31!rY&z!Z9tav1xAmiVzLmJ~+8smeJjK9(FBJI{jGH9F=BN>#G|IKnH>&GK) zr$r+1Ncyx$$Bb7a**8TxCit~oB9d7bX)`O5`7pgc97(4sm9mash{e+^C0uh;q!UlH zQz8d*`6rPMekm00NHrN1Jh?PekVK3Fz$jA&REnaHZkoW z6mH{Uqu%}xTl;U={-umY!kZ$Qyp;M=B`?yBr-zj2toBQ84$8#g(5NVA8QYng%XFsmmrIFAciw&1&1yO?-RW88I!HO!O~DlDFC`x7 zO4O9_f{e>xZk9z3rarev+N_OqbX`Rfk&bJ*PdZ4O7HL}$36ZbUBAJ^S&M5A3trKZ7 zn#D=&IXs%kCK^SeVNuXkU|J+QV*?42IsZVH{nj^#WL(}_?f+8cP4&Og{r~->(aWnX zk<5&-d`f3ei)55V()sG+k8V*3&7$)=w3c7CM1?9;CJ|J zT89$TBAvJMQD=I$bmi?nkceb$h-6NUw4La5Q|9sdvpv$2cj1Z$_5Csu?()<_+*?{1 z*Tm^1bt=E4`IomT;d9^BRV5tm_f#ar7f-EUTIixD@?I;KivMzDUH)H+nJ)8bo9H5~ zxi^ML&NTm`AKo(@LT^V&el{J`#Pu&N=^eyfY5K)T4x#R@L6mZ67V=F*B;T=g`d=>k z$!fpfoOzMn@kq|ZR==LwJTv>$uXA|$x58nBt_bw4J)JT_*EJb;{>PvYT_3pH)r_&U zxNPTeYVIiG?y@VH>h0_P&msPWj-6dP7yTLA;GdVYL&5{bM8f}|JHt#jTDf^SoL0hc z%AgL(74WV|ubVS+BWXJ#ky(*L-;3m27HQ85_}EAqU9?S%q`epELv2E3{)Yl|F-Q~t zy+~@xpiZ>p*F{3pQo7J*6Z8ZEKWb3x6%|#Nl@-Okq6udd@pBDDbK^B$QORt2WX9uX z6$TCQcSAjXeuan*9PaN%cty3dt83yj6J-v_ALewZSTvI!`0!%$=T;O~`46U4R9DT4 zx|c*1KaNHZXYjY+?Bb+ERf$(t6N^#D)%5hnytvoEW|Hv9RgM3&MVVK`4_j1Kdncbh zC3-^sh-iL(?$F#p(SeomL{)68d+dasQ5jfSTvIZ8?EI0#2M!+^9Y~LGloi)5s4AIV zQ(aY^s2!N7x{w|X8W=C0SrMzH%G!8w$((_6YpUb)2uO9!z}h$wxs_j0Qc+wxTdVo0 zkbz|-Wl(O2B0pB+#^CJ7YvR=vWVxbv7Db#Q%@JZsQAwhP#$1u8ta7*xzo@#RloL}M zqs+*DX8EkMC_x_WCs$9PsBk9o2YHnXYGV}=|B+6G20bTMzYWBYoB=XRNk( zUd*2vMHSU0b0i{zy`oA=JNvCp#JPvlW3wpFv9j{{UVNWWQ7qvTq#_S%ZqNlK2KV^KXlyWHCi938Kp1SUw<8EA>d6;Z#R+UGG++c2T zDV?B+szhz9bg)-kGi#nFF(Tec^gI*KDmOjpEJ)1tGgX@?<2(?%gz_cRr=q-;m<^-h zRM&d^oSi>RH;0@ZcJCfCV+uV`kXz#A)l^r<^Qz9DSD8osQiSs2q!xfCYHRW;%4g=y zDk;gM)3|8((18`@Rf+inXH_Ng^7He`t4b;oG{~puZR2x zN2naS=qxWZKPPl(+w_d(^!f5(gz*n=_54!MKIh7m6WXPvTt*DPZVcnJx$l~^K72}; z3EcKvS4&^xl-@GHBQ#wlB{1S_3j(!Wc|cs z{Tiv~FQb$Fr%X@QKP>gnG^&3jS^tLAyD#5WKm1mN35QXeeNykf)KAtwlcDv8$(IQ3 z!GdJ{wq*RqNWFVtAzA-=y0+&hn0RwfNhIqpO}1Ys_3rVCWc})7{hAi)AC`LeJ$ADF zlw|uiq~1L!qV*}0lkwRn_3jB1tq)hZ`N>}_9VRCUe-E0BKOIKtXQb4*CuX#5%7;#y zsslF;d8+pj|GAJRTbRELYGw<&v$ttQn7&YIZVS_|LNvF9{U?N)RMDS5X@W5j_Mb#+ zR7c+z(sMx#KHb_t7_TwzxwS@Y{}Ha{@WTW6{Rn4$)z$B@`CIJfbVdf?V?^gI$&-Fh zenJ5M6ya~DXFzz<@Ac25zB1-wyasSUr9eMp6)T92AvxTZ%*fC;Xfc#LLW!DUGO)gkv`FKx8No2u{6(f zYaL+^&`)#v{LdTMPmX(<%=7f=o2LXX72K_Pg#AwNX9Ra^9bvD~PjmWj3V$Vi_sg3; zc=RqEbH5kU7ty@wgG{^VnDNtlIoQ*Os6M7*bNZhL;QK}Ah(5lKKExHFQ>8hbOv1U} zEdC~$Hhq$;gW#)p!qcXYo^=&`cwS?iAADh*R|omHKGV~W@aFo>6aKKlK3^ZA8y>(P z6M&y6IzJE{eM)a)0Dm&!9lSKZQ+l02W!}E$a5+h-%$Ewhl@QM3YBSs~yET{&%L#98 zTvftfC47C7u{MAY*Jkb-**%$G1~(Qb>P^I;L3|aa*S!3otGipt*DGdMa(6p?2|hOw zcURvG2eBfe#EjfQfGulHSPn7>>XXkd#65n#UlD+AXdlYx`>rcc;|1q=z)Pj#g@QAm z--8rCTX5#{QmOcbf?NH|fsgt>2Ar2l)mbMv>+q7ueem`Rf9Dju|zINL9;Z@ek) ze)WLL?F6^uJs5E8_i)g`e)auF^>w_wj`5~=u3z*Z0y@}lPrz}!0}Ot(^g9IfG0yxOGrZY;PXrz8cOu}}?-YYy@5_4AK_B~_ z1vtjJ3UsjF1mM{3VuRl*{ayw7*zXF!v0wjpcKm!{ziW-Y=J$4k|62NWzbhf}#C{(N z==V|3!G50x9LM{T!5^1?Uk82ccRS!X-rb;s{eA*C_WPy5Uy^O>b5$;ZNJw6j{U9#9qji;!1+-7{kg%jrQZ#L+kPJa9Q*w(=wQE3 z0M3Wn@9zw*@87QqZu{L0IQIJq=wQEJ7+kNH_*bxaV|~8mR6K(L+IW64WuV02Ai;Tu z*L(b{TD?a|9?gT#i*$6oL*$g`9=ShRB zpJzb_{rmy=?B_c1^Jn0rpIv~XpN~NY{d{h4^|K#z&`-Mj!j#VEpNpT)f^#$Ub2#AW zr!VNBpQ8<~e)2&F{fq`a$7hrHIT`rq=S;xS&s5MsKSc&tKc%39eky^_eqI(o7Xcsr zTn;$;@&9s7)9Z&HfIj^8n!J=eMAP@p;1F>gO5IK|e16 zpZ!F5BGL8^@X^oT07pL`fe!j{|0j&}be&W`UxE($Nt2I$bUt?%Kb-`(^SL|V=%)|p zpq~K-S3iS52mOo!KF4R6_&Evq7@tXiqo1=u2mPF9aP?CHI_ReY`0VF2@v{K<=%)^F z^m7g9pq~{6S3f@j9rUvn`0OVpe%1pY{oD^Y`q>0J=;v{RtDmPq2mSmW`0Qtq_<0-n z=w~P3=w}b;pr6kSu737`4*H=772U=**v~5Q(@}6cpAQ2Z{qzPM^mCNK)lVMipr4Vz zXFnUnPXX{TK4$=qe!dGj=x4gY)z3`OK|gbV&wic|Kl6c)el7zX{VW9?^uxan%p1!x zu6|a54*IzX`0VFR@pA|8(a)~|M?VjP4*Ge_;Ogfo&_O>h0-yc-L;So2eDu>!zUt$7 zg?>5!-4*H)6IO?ATI_Q5U;4FQH=vRXd>i^jAzbE`#1NaXBpZiUoF9zp0 z@%B9E@K<}v=U?*Xjd`8vNAZsX@cjXJ4iAPljx$@IA^y7yZu4~n;Mng}!1QbEs7RR^a12*#J1| zKVa|*(RY7VmUKCusQ)zdi}Be8I@s^423MbNfDXpzuL1nO0gnDZHMquSALyh1Fn=jU zo90W`;Y`3$zq7$LK8Fcz9Q~hZaE;G2(8u`9 z06zMh1vu(oU~rAkf&l$Gz%f48fDZP%!r&U8AAt_W=O+RDTL4G@cN$#db3f=~d^Q0e zeLfC2>c3!cjn69q`tJaa@p&I~u-^|2uJQQra-!H9nmLxAXrH z;G@r;fMa|H7+m8sBtU;9;2579K?nPN+29(V_YBVC;B6P^ccZfM)8u&_jZX~^g0@bA zb9-KLlz#~D(N9mn8^yukmx}%n(8qZ=18{u*`VHV1pDmz|e!eic`p@FVwCOsj@yQXK z%NU;lz-Q|kpOL`F_#6j(^m7v67@tW7*ZBB>3a~aROKEUVkuHYBi@_~Va~%A?S?76g0UzVJ9r!q|-GE~}|7mcI=YG(~c=na&DcL8+Ggok(R~m<52G?;N z7oc;J;j7MR2G_it1v(hF#enyOc-Dgs$6-Cc(6$=*7|*r9$9UcfIL7mCgKIoDfcdx-Uo+;~KX!K_BBb!|)#yKb62oKXKr*AHMhI?P9>u&lLt&Ki7di`neBq z%;Q6#gK>D&;2P)W0(4$7d_6B-Gq~pQZP39yeh7RXujcW8fRAxYkwED@(SF+ij&bW` zaE;rcg0nx2+fjzEc^mg+qn|Sju71u2ee_ceIOcI4=wKcf8C>&tRe;Vi z!`FDOGPvgP2GGGg-VS`s-cj((mnxcYe>^wH0Dz%h@z zK?mdTiNQ6GUk2!;@;`x*`Gz`K2G>012+n29V-MhC9*+h-#%&1jvER{vW86+OxW?^N z(8su)WB8iK*}z9X)xgI*&I26%EHSwHxf=A*&pN;{kG}vNjKiG<*F0_v(AjMGdOkjB zaLwbhpo4jQ4fvSH_koXb`w;l({~v&3+`cln#x0#c6r+v(Vcfb1uIr)Zu{ZG1&r!g~ zJmv$AevUD?`Z)pg(a$-6V;*OM4#uI};F`zU0G*2rU-NjW!8MOpf)3_!74R{SHv=Ez zc02IV|J{IN+#WQz#_dti$GE*{_?pMJfRBE*10VCa8*udVPlKzU{h*J2y6`Wm(#CPb zJa!k{UhnlWxaKi8KxdfYYaYiKT=RH5=wKcv0Uz@?9rzfxQs84A=KzjzOBh_^wg~hw zZr2*V=JChCM?dR;k9qtB;OOTbgR7t4fIj+p5pc}oA3+D>@V3D*gn@h`x~ zxa|Z!`riXM#_bD(Yur-YpB8WW{@6iqomZO2!-0=}`T`&Gcr@VXXSl)D&#|D7dHgQm zn8)d$gK;P|xaP4cKqq1Nn#Y9(*F0VdI+(}hz{foP1o#-YTY!)L?*JU*_G^P{+%|ze z#_c)7*F63S_~_>y;A0-&2ORx;WN`KKIq0LG4u|q;)%5+btKjziv4_Dmk4FaR3^IJp z;|POm9>;(V=5ZqMF^^M$k8vvkKIX9uaE#krgKOO8gFeRXD#O=2t^_{%xe@r7$D091 zKkE&ye(nQ(^z$6xcs{-aIv9u746b>6H$Z2X;cFg0Hn`^TGtj|2rtz0gwCOsg>uM*# zxjn}15a6T#o`7TA1{hr9HU#uBZsQGK^LPgE(a(2*k9nL9IQp4oaP?CS`sn8>z%h@@ zKnLTn%HW#EwE;S}8ouUngTXbAzXBc1<0HW5@oFAl06xa;W#FU#Hvq@Dy=QQZ+lQc! zar@HnHIJFydA9lM8~W)WxUO&VF`d^HaP-s5;Ogfn&__Sx0mnQ}03D3OB!g=nzZalW zZ1|eT*#_4gKHl9gAV3# z1n@DBCjuYiHWB!k$Fl&(xSeZojaw<`W87*DU-P&G_~_><;A0+_0girF8(jUY1AX+f z5pazEX3)VnJZW&vNk2RP>OI)iK6R)Id|@fO3^Jl+F*^s^E8n8(e4qo1b@u6|wwee|;v zaLnT#(7`x-W^m18h#y{|jq`yz^k2{1X4kiDgKHi;gAV4gH}El!gMg258v%Uue=Oh_ zw?cz!+$MoO#;wTkHIEg*M?bZ|$2?vHIQqHV;OggE&__SF0FLp$19UJBzcRSy@!@HBKIU;3@G)*510Vf=4midw+^b=}F|KjT5}f^E+zv5(&EpZk zM?bm1$2<-L9Q_<;aP@OC=%b(MhW`?a(RM!Y(a#SI|8?Q74dCAeIA3dP-tPw;e$-v@ z-vYls;Lih&^X(6ygZcVL0DoTqKdU!&Mq3K~u#WoaVsM>rhYHSRoNv7hU+3+S23P%D z(1}97!vgqYfqx|MPc(e(ccQ_y-?I$Px#4Y^!F9an3C?ByC|Y%5hOc-f@X=@7@Kt|d z0Kd-gbzIjNT>D*RaMiy7^!br4<*zq<#qR??`ri_OzZro46L6gWUkc9i4d*}o3jw#W zZ=C;8z)|O9!125|U2vVx8n-D1*YOqw=#&}0>Qov$)wk`{fDRw3{-wYV6Rw~CECW8S zGpm4)=k*%ESx2uYZ#B5Cdv}69u6vsdU)SMhfRBD&1U|0Ae*_%;{Keqv=Wn2oem*k% z-7H4i=fEF8WsPTtzOK5-^-ov9ZQgqrTy>5N&>3X-n)eX~PxWnhV?c*3tNujbW8S9% zALCpEe9U_p;27t*2G=;x2Yrn5Rfey5UkQBlb0hFE?>7UEe%2dY{oDuo=;tBB*StRl ze9ZgnfaCf87tq1D?KHUN<&yxNFAQJv9_r^OTIZGKJxy>fW8Mz}KIXj_@G;Iu0w4Vk z0vzK!+Ta@J@t}`!KGX0u@8}mPdkwC6-xQ$pxZ!KwpEbDVeH-Xt-roj3=6yHtG0vX=AN_v;IL0~kh=zH{xW>7y z;Or0Me5m1T-unX|{p0~3^FADK^fS)j>ZcI&(a#x%uX#Tk_?Y)V;PVu^jelq#uj5fv9Pe;M+JnUxpn)jZ-$GndM9P>U7bTDow8(i~#W`NFA z!`HkQ8C>&T3ObngTHs^emjEB*d=>D~|1!Wa&Z`Zsab5@dnD@I3U-SMj@X^m>z{k8l z133EmgTd9$8=#MV{%ZJ|_g%opyoZnU=M~2t^PVZVzW-{zIv8B@erSMBFT+=zBMq*3 z&jlUK`&i&(-cJEO#`#R(W8S9%j&Yu8aE3!Hhj(dCkEHN?*$#qd-_rS z{M2<%@8dcP&h0VIhXNn{_W~T_e6+ze&O-%f{WcKi6AWMTJ_-1lz&{)KnD_GlM?bR- zu72hUZv9+n_?q{{z{k8_4>;!iCeXpS{oLT1_qzgg?l*kR`zC|)ICy&$box+P^dP5=YJYpZcfR%=>K6!MIf$Ty+)%=qxdO&HGgb*Suc~I+*txfsc8= z4fq)6yMT}W?*|;?yv5)e=chm)v-5B; z;F!lzg4_4&aR%2so)VyQrs22sZFo}+u6djeI#J@PeyQQB&K!d)KLI*8u7!rLI&}tD zKUaee`uV=$tIm%Mu6}+2I_T$4!&jYO8(jT7Y;e_o3~-(g`uD7#H@MD+mj$=;;SJ#P zeA9ma3OMWcmWmGyuKNE7(EkGPKBS}mLj$Qmo1JeNfOEe`NWUEouKgY&IMeXF>j`{3 zkNN|S=h0w;tN!Q!{o{d;>qeo$b-bs6PL#YVKH2cwQXOyS7+m=?4X)pVlp9>a=2Z#K zW&9o_VffnbLclRTR~r0i>0lY?WBh*xIL`lHf)2**9)s(6HyT`hZZ^1%_i@3w9Hk%C zdDie%=l2Fz{+|NycLVUh2jE`>;E`N1N1M)n?KdX?KQsXE7l7v*T;nq)06#eZKPv#A zZgBNq3OLUnU6-m1uIJZ0!Py_qpGCmOb?I`zSzp(sWd>LM9|h>&2zVdTQU5oC4$jZp z0q1^oUAouc+V4Z4kK=k2_^hwz@6&+edH0gRRsZz>{l5So{qHomj`u^*i9#IyVfcE! z>@&FPg!8B|Z91QIT$u*fd6+FYmvLR{V))u`cfc_|M;Kh!r99Bb_@4-Pd+J;LPXwK8 z!nNPC46giX23P(JgX?%>f^#_v{Z<&h>eL!s`@JXtzaju%9)RB%fZrN`-xGj89Dr{P zz<+OWjnA6__>KVllK_0b!8LA?K@@b_cz*Ky(RC@?;Cg-?EI9ka`Exk%v#Cz~_XV8w zbzRCcxayAx&>sVMAJS3(Cx8z3tMlX(z`0*tmnIur`#l%*aa<+9XMH_?&j%dOySTws ze_?=r9q`frH3rx5ejjwARo0rb(&PXWjA-eGVZ z@4cXp<9!hLsQ-w;b-Ygjj^o`1`Z(U#0LSsZ3pkE<7wDs(j{(Q=?lZWKH+86+=1o42 z%@W+M&m9e}pzb7aKJlLo$B-l9LJj{xb~~pKf?jX@s2aNj<*o>alB^$AIJM$gR9T!fa7>$pwEZO zuLc~)y8v(;?-If7c&{?J>Mt|6#%Gnmj3X1$Gp1@ zaOMvY{@sB0mSf&+1f2O}g}(*xzH-dFrvPXE>B8RzxIB{VkUs*>{Mo{P2XJ|$)FC?n zXa3c~-vjtja?HEEfHQxi@ZE%>GS91{g~PiH258gywnO+ifXi2Bj@K1%*6%9kX%z5W z$Mj$N1I~Q?|DA&X&jbEQz?r{9^v3}%AF;Srg@7~vdf`t3TrPzie=6Y2zg74duGW9{ zM?=Ptt`)rYq|?vS4AQ3OIOE!uaXpt6=RI$F4s!RrR_b-%IpRm4s-_}^rlrx|=a51O{g{?0w?#5!k+&N&9ZQ_3?9K2vn&8oX5cO&FZt%Xz!h z-zEEfRCHDv{9eItGI*BYcNjb_{p$IvaqA$wCk+2=;s4&?&x!uq2LGO{W4jIBMdJ3k z!9Nx}P5Mzk(}dT_;1^3-&m-m6h|WO6KScbDHu!7e|73#?5PY)1buBJ7_#@)8%HUUu zAN8v~*9z}y!@o+(s|>E!dp8@rQ2M>g;7g?6hYfy*l%F>E^`i5N!B3R9{ng;Z1>a-v z&!qgN!9S6BW{NM3!!ju!Z169H-`C*F1O*5G|a|2qcPc{a`9orPay@JWKl3|=Al9E0B|`Mtp48h5?! z*73eCI#(Eewv<;H{4UY|rNJMRI6P|bDN=qx_8dl*SS88dZut39{?y=MDTn2vLH(aC z{yQ4{L&19){C4r*UvTx)M*JLS_|Hn-&o%flqCeB<{9v#jh=kz}75>GBKTP<`41bsS zTxs~P4)XP%H2mL-&*uz(xLn}8ZTPQ={&vG(B^ROk|L!%;FA0CY;b+N3?rCySrTnve zo8ET>*Ek>1$FI1;@ShX?dc!}xm(PFL@XKXBJZtbfB+mN((AAIrKkmO9{fqfaZ`ykD zqDhw3d46~6x8ZS`}5jO$Uu&k_C( zqd!Odd}#P3a-kNLi)qy_6@EX#b-Zun`2Hsv{_#HSooV+ zv~a_dQ_D$7`jg{T{a$jwa-7nrl>5nEaea?J%HTy()_YjxUnclq!`J%|)l>T@;_qCXStm>I*#_?{ zc#Ys(loUE7DmY_^k2AQ=pBV<%dAP*jI-l1WT+fRw2G{fJ9fRw6>Lw1=sZTxMqcT3l zb=??ea9w|97+lw}B?i~^aGk+*UEN}EU7z1ExUTaWT=l8%7f}hi;`%-{&fxlfH^boi zzPZHU`u@Al;QBtk#o&59@Q%Utx|Kknt07RQUd+?lntUT#gbUvRa2m`g{w71brh6;#PhN@Ft^A z%BrcMJ1(9%vnDpLQFU=man-CC>oqi~D6fiX6EdNP3>Ud_Np)pqtcv_pRmWqwC!aoL zU~Rm(WR8?)RV8xg)>O}p)x;NwZftf@Sxs?eOlI-Fzl%~+o=Uo&s?s<)xE60>2$N~2 zG><t_A8J9E)>Uqz>=k-aD4sfk!oZm-T z)3)Dcd^49f>z_X}WQ^w(Zrc7U6BzZc++*pWIsfl)1#L4-hf#+%yo{p5=HfSdkI&Kj zI*uP((f&1l-yzI&;Tnz`=XTx)yr9Eoxu;WIbNyfaso!X|T)%Mt+_&wY-xsYWw;VW; zU+MEulNih8_X~@0yW`jxZF2kI7wFY;D+z1Pe>BBsYJ2vdML*X6mCa}pPJ$(KpcAhhNZ z^aiC06)RfXrk4H<7F$}e1;r~Btg)pnwzQ>Q``l>pHYlyw(tE=#T>kGn^P7|1%@P6+ z_9;)h50iI(pYxkJGjrz5o*jPnzkm3@B+K$x`0!6GQY-%iknkCfFXKj6WHPM2`!W71YnIfK8R_rC znOfB|P~+pXHO_y+vRZUDsy{TMl1BPFTA+=_h}EV~YdYj_gul|dx~lTxn$qg>1}H`P z8~!P6xmo(j4{i(bq_a`|)h@boF~yPoUKaZdaZ`SWWO^W~KNVkH>EcL#??m`p+fRRu zE9#=w*ZUbAh)1sPb7%CoxV9Q`H5M$GthhKhtEVa$gSTrcpPde$ZN<9(Reag9 zF4C-s`s)5yRasL`ab$gGOFW++u8of_(wO%ZnG7O^NDjp5NV+=7kRsv3LdnmE-BV<= zThc^++3#Hqyoi+ULnXZXvys2n4?? zKL0p;g!$II-oD8{o$r$?uiJw7H|(~He-&B}Q)Uh=k>P>k7x<>D5)IU_0{QNV?WBRr)$>>|&e8cKK%Wtb#QxLG)>iddu_k#}<^pd_Pj9qVTg7Bt`Rbf0B)4$ODkHClV2?FaW2E84qnc}(B({EWWkB{!_@(|^h1 zUnXkn0n7{mqg0_==>jZ9nyrB6%`qr_sA1f%?`Es9SovA;!tA5&C&^B}A4z}wS z^wCW8XBl@JIZnE4>)FV0X!>=3^-VwTx4!iI{_2}?&|iHsF8Zq z&~e{io3MFcW(@AnzAY#1m<{fI4fki0=e?El!Yg|&+0nMANc9tSFU7pjHN-l;1-vfX z|7^5-Xlqh)LA!nFjyC&_aJyl!1MhTp6-mv5+h@XVW`y0vumkUOcI_;$1$HeFb|Ya2 z-s$WR=iv4|u-g-1cLnQrdb^G>>k3+jwbi%VBT+{^hTOIp%{msJw#?bTdbFUT>y`R; z%(Z6xxwd0j&(qtU8foqHVC~a2GJmJ<60DWJkF}Ctuc1y|EV7GxWbN@bxFZ2g}XWP#e~X=`hMWQ=E}@U97Ly8q|gQ|KQZAVQ%}7hxU2_JdTgh ze(m%4Kj1pEq9^{1Cs)qia%yJG>DPQ18<_tJ*bZ!~(EB5=pNDHvX@^eRIv%+Oq)y~o zrZZ8uE9S|lemiZ9HDjm!t2J&X)|(-|Hkx@kGOm8xhpfrY*+#e%iP&4Qp5%PvGkMG*T|X5*=7mheR)IAV$GXqtF?PGMgpaWpHnxWA z{_Tqi89y!7n-<0ouYVWX--mgSV#a*lv6b*-ZLG}r11DesD&^4x0$|L?Zq`wjNTcC_yq zxr1|b`<~(*z6~C={;IHh?iXe~qEOHK8@E9BbZg%;-3wGXm|s}#?=bI&-J4GnbG})} z;67vGP;+@`>|^wN-RcdA-AjGkuhhIR^+cT+|FcMAKAUhc)@;kT=B$vtLEa-xoz4A= z?Zi0|>w+Ced9Q-)`KbTTBkPa*?#Y#&EhlGMJ!=!J`PxuVvzBwO71zpG2X~pcv8FR| zw;?{pe%SEjx=GvL#kT)Yl|5t2sg}O?BVP$^W9c7VvVJk;oUiuyePnys9<+yzwOUAf zpbxk6dLph@TJWr6>Kbz0+Hk#8{S7aq{_oqqXR&T~uU~)GGi~llwb6R?hP*w6NCFwcK{=I~?9KL%^_E%v3|bMS0eiD$dR z6Rn+VJ?ibnEjG4?mW}l_V{dCI>OLzwxps`X z($hTnFxGV!OuVN5jJ+^oK8$^cu8HUy=g`Oh*8Sly*2@=6tXN}RFtLukaAG~V@&CAx+!MP{;_VoTc(LC8yN?&^ zj|-;nV*PQU#L74?l(kaW`eP=aCu8ybYsmK-`kB?;ujg~K+DE{1u+I~#zjGU?_f5Fh zk$`7R|9~G|WcEkY_j2+0&Q10j%=0txs!Oav=DXT1JK@<({jBMh)l&}kE8t_c_`oxm zt7G=3_|6rd&G3q0s(FU(l6`jU+jpydoSEFe581Qw%uw;S%bvP<9zF~^?uTHHzq=jJ z-kJE`q8-nl65mE6C!b}q98-R%EECUt#wJup<*~m++faQ~mOO8xUh2KGR{1{g6~xZ= z2=&9~Vft|Qb!2bs4eW*BduRRZJo64*C*6Jt9&7O7_~wERZ*#$1k5!*AXzfL8f7SN7 zE~jl*_gctaRx`>#*{=S{m9y|&rL1FH*pIx}i}Gw}fBK1niVxcA`Mqc8I+kmvR=fk& zH4@)hqfeQ(clR9-kGYO6?`-xW@IC7eL%6S6+|rV&vX?n(sZ_cNuWst$3idp#4W%RX=LQdQH9ewI||xkC6MX z`@NRje_fh7Gb8Mx=(HYr5bxgM9&c;iF5GYYSYP>}8}^P8-e)r3mGFMl8IO03pzFa} zDU=^3gP%~DYlC~6;hXPWLgS{7P&#a_hBEoROX#|R`r+TbME{Po^LJKGFW-nUQ`*I? zJK8P*Yt}iJHW$npWldwg5_?H=#z=ky^5b>>4IlE^I=^-x@{@IbPCD|_gr9)Cqw{|H znSngot6;s0-OEzIu^LfgJqdxfr>aV?(4yK=p+#hHH( zakkfDi(lFb*JAB(X)EU0K5{MmY)^A7;*ghXfp?wUYq5noaxJ!mT#GRSz?W;Wme*ab z#oEEh(?72ZeO}1dBHH{jkndJ)!+Whg>-^B?9$tUGS8#^!)YP*Eze}XPdY|0E6?C}BcBP)^G9S{XXA(aYJJu5Ye{jJnF z*^hg~{cX@W*@wKVdrtNt@9Cb4eIV`g1-oy5rk>X=bo`q4efr{u_7BtFsDHY?X8K9k zm;0w<*>B=F zGviD7B#m<4!8<=OX3S!a<@?KB*st(;dVbG%S|9lRg4&CECgk^&;Dyy6vcBw9d+hm& z+a6uKx16C(IR3Z5X3QT}{lZsSiF#f8E6zKidsd?wtg%^5S@H=u0V^SdkxfRAJSU9I z4kNR3CWS~r<@S)ICcC7frWjIFQ-u^NkL399xOzwxRS&7ca7i7NA>l8?6}|V6sw|h( zB^y#xDk``VN=4OBxwIy;r%AHLz+_Zef)&BfJ`F!7IzKx)9|cF#XFO5(D$L$|9eppp zW>1ae3p+22Z<-U`qMTh~~Q6(C`atx;V}{Z-PjichAc z=nfse^q;0U|&YQvY6;vD00*&moBTkyRxCS-bxrXsVvY~8vtA# z2m~w`F1E&>^(Vm!OoXumESM0m?pj{kSXo}v7`Q4R1qH?i>dUK3@e};=da9{-Fg#H4 z1Pdn|ls1$HU;trhpk{gXqVoEy=`Uc_m)F&oH$YU{SXo=6#*(Fe(_fGHYpj~`rCLy0 zR#r)kae?x?mX}rq8Y=HCZ?Jl}WtB^ol-DyREooT3sIeXg1N1Tp6GU3&+))!)v?5^K zS~+)Q*4%-H2d{d0RbypcRpnwG&l32qt*6P1dlBugtBm7LegID*}ZhDNkzW98yNV|hbkpmqsrRgGp0EJi~%glH};uPLub zbC5p{p4>)QTncR+VNwDrNt*S&MY$MHU2$a^BUyW{x4~7bD60AbXM+t!? z$v;0IcMI^W3eOb%yW72UNhsQH# z2+paw47{m0{=%DK*~!-=CL$ZhY+~Xy$i|C_mnObk@aGJnOr+)D38>8AxcqcgNaE<> z*TTUNuN5NW*M=Etl340Cn7^pozoRpjt6w_Y7-N#(t_ovJ z@!KoI7}NargJF#6e*1|q#PMPYh!e`R!{A;{#k!&r-krNn!Lfe!3N-gv8Z$B5tSn0Q43uD~pw|^VPXz|;B31j@5-ySesDyrgm$ZwAd zV?5%woiN6ue*05ljK}?Ubr|DIe*69~##jCJm%|ue_uDUoF`n_;KM7-e({H~Q#`w11 zJ{iV%-fs_eB=mVWA;`1GZ;uy7Px~fXF-q9sxAVfZf8w`ihB1DQ{u{>lwcoxijPbVL zE(>G4agFnU6WlkxRF_F|2;8gPH`+pEJEANuVzhN1j@x2=nG%Szb{(|ACF+LfbO@>pB3B@x7oM(j76PCw{SNe^Rwi|ubR^I^U`-bxjJ?sSM z)m|P_toYX`{RN~y?9|${PuCfQ6(M+$8(Loyz#2FPJlDW zaMZ+ik?psK7|zYOdw3>+lO~*=n&w*Z)s(&g>D*q@Sdsn+(wmI8FH?UXI0e1*y;l57 zl>P$JPxq2uZpHtG((G8jy`q-o&)Cx!s%%NzZG9g>9-*LQ7>tl75{lkzYS?;FX=^A{5L7x2I>Fy zk`A}x-=Oq6kPf+4U$35WFR|j))%-4`St8YCJr7R4;UwbJJkNG;KGVxXf)zi8(ib2t z>m?l|v3(EH<;L4>)c-y>5BJg^X~o||=?+Mr>m|L)ihqpKosj;zmo&?Yf1c78A&t+E ztm#-Q{!L0>f;6X>G+R9Hf^@M+<2^p;zYNZ!z4V94*!g!zpEdf~)PDt>oxSvvE#Iq_ zW!*}REzmG0_u0kZsP#aas2^zx(*aR-VgXER`-k_L-2Y&*;wnTzOoOT&V0p?@$ge{j)!sH z1t)HX)=3^1k4?1?L3joxB_W&Q^CS)WZ_r~vcm`O5xFpJAJ~`I%{uP4wSbI8XRXLC4 z9RRt{!>w@jQT4387)(#kAY=%fRf8o zH(_e$$H&R8dNi43gWGVm`5D1^zj^|hFAj~_u<$>bd+GUP%NiQhDSYJ7rett_0=UT0>s-Wd8kYTD}}B*`b)z`FEseSj>hJRbs&NV-zyX z6nUBF*P7I2Uhbh|NOhr_w9z{$ye~Y;=I|*0 z)wtAAYSK!}#8RD~?MR;L1$6mkx?H8I_7!DhrM)d$7Uk8&{QIpQt#6C#4Na;6GzlXf z%Yx4;Bv17c8olaChilb{uZrshLzR++b4Q?6N3Easxc-@F9TBZVO6wkKy{)vAuiv@> zsLQ2ED{Vg?-|*Sb+feoAXmqs4=%a8WO|FRZ@@9N8v^;S*PxRe~RJoLkShfX!mDBmYpDZOxap#6{B?tt2nh* zKT1)C?S?hV4hu_@R@$Kn+Ngr+)lc&8_mt5oX20(m#V~A_Z1jeab*iRXY7GzaNemxV z$Lg=q&s+BJgV~|nc5-84)5<1kZX4<9Z}aa}v2M&`W5Z(Bq%}NtvNoy$c&figqxrGJ z>x7FRA%puexwprrEy&Zl?MinqxgD|SVNE`&b;NR(LwSv=FTbJ6!*Q9@w9yEvSO18A z4=5202hz|b>ryrOS2f%>R1GKjONslDKnBTQsZuP}mTC%)w`^WelV>GWJ}!ihyvz57 z@V!} z%dC*>#7{L~Q)^;PWmQ96ZB_ZQi8F)P;hJAxdnfk2z`yhE>WPc6+gH;#v9Y1iT3k_D zkHbZ06co(3t@zeCpSixc@V5Ea7Z+P9q6W2Nb;I(S#nux3DQ~Jnjr6`Fwz;^S)nIYc z?B+#x7L+f+rs=)q*76#D4}pC-3e>5*E=QGCw!FGddC$tykgXv{!z2y48YXL)qG76r zJPp&Vp1n`DU$*v_t^H+df7#k!w)U5;{bg%^+1g*W_Ln_Pxy{jDa zn+m6Dz7@{h7fyf^M!a>27il6=98x^e{~lSB;sbgy7yE%t%a^4j0Ix)PG9`UiB5*WP z5>h780HiTUUwZGcRms4sknX(i$yH;4HzJKgnvK++_rsj=zY0O=6YF{D^jHWeuYDHmxLQXx_qQX|qDq>V^wszQCY zu`%!opd9?OTG&ANs7VX>Ly@Z`59m!ISF0V+&k3#OAkd?ELGV#47NB3&F+V_l2~rMH z5z@U#k0Z4s?L_(!(tjWwK{|<)j9^A0Wg*Q#DnMF{)QH4;(-)DRLE3@(o z0dlsw3h5I_L8Kz28l?M>)+2ol>AOgKkPaZdhxFe_@o2wvq%lZWBYhgF0%--(gGgUO z+KTit(pyL$Ae}%OfcCr;X(G}Lq+5~hLTW*J4C#5KH<5ma^cSRfbjIOGW04%B+mTiv zJ%qFc>2;*{kp2hBkFI<%(s-n6k&2L3B0YiheWYI^{T}H!(lFd2CnMd6RF2ew^fjbc zkbaBwA<_WMvLlh6M|utE*GPwv_)!Z=;H7fSUPT^FYB?gG34-)pB4=ME{XruB;GjA>StY>Xrw3q4ZI;m;gOk`nbC1g8r+}YTW?(MxoW+7xW;pe;0Yy|BKQ-YEc0C zNzpfR6m|HKFq94Fs8jfyjSeoKn!{vyspdBN!A39UxJ2cT<?^6S$npN*3CfCqF);FiBz=s7)KVL@kEP{ab)q)PFSGiLl^kOYUueZ zeD%;4O&Kp0`ZyL%9{OY!O&9{Q9JO&iE(!NYVQ!Tpb$6j zOh#VMJg>FeYbW^L^IqCQKaFu~yqCU&+>8Cn>@v!IWX{T=tK5e}Bl3DsLlgd>7Sw*O z_e!wrxVdq@Z+Sm1&VTjtd~TeNFT&oQ&n?18D>OJdB3j&+5R;kiO;$~fKGx#(q3MUK zreBS`@9w{`>|1@5cUoCOobMVH_`tc|K^QTsy-BD^0%`(k$Xu@%BMppUajQAjhOp{` zkcajV)N~N^kR5<5`W^lb1S4^^{rKlrd;M|t`yN<9;)1j~NG>p@Lk_9i6w?gW&@6xhYDdvS&jJx!yapzt=>z( z=Zv73F&TKF3P!Se@Fv9M4Ly6$??v;RsXgOjUeiC1EfKNKMW`)3p{n@VS&p4wcjr62 zUFSEve;{`~oiJE}+wZDe5+;A2$ZU+}!5zL}0QhT6-w8$r>7>B_gvTH!8+aB2-gh zlBl1N;^)QLAFSX4-u@!E3?T^`M6PQtvzIaRB9;nv8gp~8#^Kt)cL;jeYS4QYTjP7{;V5hA0XO_SwvpU3lZyUF6p@`h>@=M1TihCj4=Kbw(=G~oHSTFF2-}TcF#2F zZcT-1xrRaS6_^AlIydawJ|!-A#@eiLLwAGv$EXdTuOctMdQ8NXyciecQvLXZN<} ztGyVmcC24o*nx}aa=Oe2XZ=$1U|-AZ1}CuJaX(xm?`!DC)6KB4v41(li<_Q$IvfNo zc39rSU={c0HQp4xRTe2}Ilq!!r!D7vOQLkZON`?u19&6!0veqZAiiQA-#t}hC-7m=2Y@VZACUIjfwXTE`9_hi z6M3V^OGI8M@}S6bMII1&s>qW>er$^N-w9OZ16BDzRldmEM7~Mn>qXuq@-mSx6nUY@ zr;9vOAw;Tx(fXts0A(fnNl@N@Gz8kp30|S>6JTP9c!~=4*6j0lxsf>A+Ul=V>g;1#SX= z9FXN?YAnhCvK|58Jop)*(Mbie{1lBv$8xn^2kWl@yw^njG2m?Qk7{%}f$PA3TjU3U92W;PI(vn`8+ZfwyEHo6fxI5u zG&)H@mVYc;$KM5H{D(9abpToZULfP&tQ550J46&f$X183Ee7m8IW-n0v`tE3uXYR zKLSX5pU{WKYkEJB@~uGHKLvak*eX~h@-iUp=Lx2#pohNiEkoK`a+8-UG@c@wZ-v_)CxI^fTLN^P&5J>wV zkoI|kBSfAGq`f8d+nJi~0Mh?vAnkETn6hscEED-c;PvQ_3p6@~K>EuUc^)ty@?4Eh zs>qXoYM#>QSiq~HcVe_c=O~cncLDKpr{E!t&R!tn*$!lV+631CIc}RZ7A*kMz7WWA z=4*8FfV@v+0oOu*oW`O|AoVkVv!EZ)=p4NguQY;xKyaU6JMba!*9*NyunG7e_$5LY z0v`cA3&^-LfQA)G_ z=V^4ZfNYm>8jDhZygnx~wEu%Z(tCw&12WF_K*qUBunb7O`9Q`sPUv)@k6oed4gqPm zUvLMIcAJ5;YZkgn=-EJ)mj|R>hF}tqcHNh2y8}SdyM=xVNV|1F+BFF-1X6D{P+d=< zQ-nTpnYMcyNV^Wftw7ps0@AKg=n|o)16kfUAnnoxPXx4G7m#*)h2AFgIw0*<0clqu zI3LLJrUPl0E_AHWog=l~ejx3332p|`Zat88RYETiIv2?DGJv#85$wKH+Z_VZZnw}| zg>D7Xt_euHGQrtEmX`~pU5d~rF46QsAniJUwA(JY2}rv&K-#SW=A&OWX>=Bdd_K?y zKd8}}1-u$`zD6e(Nc(ZXYr)Ud==gvvw;S)qv)n_1yMXNPJ2V!p2QrRTK>ArA^emwR zK>A4m($9&D#UGG%`+>CED)c6y8-cVd1JZ83U>=Zm89>@uLLa$E(;YzC?Eunlv*0=) z?V5m30tHg5Av1m7tacl+BPdkutY}V+k z5&0@0<7m?8)Bzbsl}4uosNw*sI5awWKotj2#UXfNsE(ssV^If?aqI=MoZT9oT|kzz zL!+}5sNw`(1O8@>&U)Z7*jE6*i2h!tu_zD7`%Na0<)28^cmznjE{#Pyfa-bxS^hSS z&Q>7HZ`bHN1!Vb~fDZT@H9A#5meV~%`~#JLjYT_v%0E!~*XV2oD*qatr+~^oa60{K zbee$=!vAa_>yZbf|6Gkl>A(lTw}Af!{)xc~i}nFoZU>O%?$zk*2D02;8l7!Gmb(@B z3GmxBI;(&i!S5cV%iRQ||BV`p)&UtutHz=#Amb?1@~Zh7ivmE#F#^aq(lt7%K*o`x z(TN2z4*uqcahym|=sULfPxt+8k`ka4Wj@~T#iMGJt8qY%hA z=4*6Vd&Uzr@SO;Vrts0$$K*n(}Nyo7eNdF5o7R?7Tj-bY(EFjAp zA?O3H2i={h?T-K{KPb2tNcnb=w+nxxV6({UL|!5MLcx5IXNf#h_yJ%Z>M=s2lO+6D zAlm`IjvzYS2{IP7fe)eFts-v+=0Lt# zqcdOlL0~rcvo$)IK-Mo+wu!t=#=i^rZ@3OSG!|_G z@_KF6ShOCf`Ze$>*tcqQnt+eOz5+-;3xU*I02~9oLXFNWAoX&A)XM}?F9Vnfy?{n1 z1xP*q9*26z;zd4Zx`@N=7asnJOXQqKpZ9)3-v^iFs! z3rqQ6w??N6NWFtV>hYK5^tTU)C3>(!qq74@y>=k=+JMx13Wz0laFa%-6-d1%AoZ$% z)T;nuDIF}+=oA8}Hw#F;JRtRQfmk93votyZAoWs!)QbgD55J7!&qISJVih_^fYf^% zNWJ|)>g@w!X&UU%=}PI3;HxV-I#Q!hx56WUMG-xZv(L;3m(+y zbO5Qh14w`EK#mvwd=yyJ3cM5iHNZ63HEVS0fYdJ&c?l3po!~-^PEh3eBA*V#QYDzD z(a99~2$81)hd`dH(TNo~|D$P^e+-BvLGY+XrxVEX4~m>W)5NVi$U`}R&Tf(K5czgs z3gp`~I&C7~B=U_w++u_L`6tk67I~A%8-dA?*J*T0M7}`eg+SaIgYz{y`6AB~c`gvQ zzF?L{Cm`}vk*5H03koJ_ba=!8>vt5$`X2!%K;EU%;ejNS?-O|k5L0!KKeGio+eOZw z@zQ=X5L0NdO{243$L=!4_pn*1C|3>uYU!yUhth9 z05${Dfs28x*L^_NYY~uzd=A)+a!P?mfu9AkJ|)0T;3^>NRSet@TnX#|-T~YVycf6w zSOnY#TmftcE(Ep#n}C~uw*%J$?*X;~KLczA-VKC~bsMk_xExpkTmUQqHUg2iJ`J1? zYyi#%{tGZ4SP#qtehQccybG8KL>ndtfbf}|4!jkZ0;~o4fCWGRk0wkmLJmz4mnk?{ z@B{`8`L7FpNAOF6vjvA3IR+8+R|(!II9QPDNy>jHxIu84V7lOI7);cw7aS>=Aowi| zBFdi-Tq8J3@Xx3q`e)obf}k zt>9&Xw%|t?ob>mff!C8Wn1TPmHB*;SX zFOCPe5PvTC1Ho;AUln{<@Uwzdg0~Cur}*?UO_1{&>0yF#f`7qyCjXG&F9cr|{ElFo zV2j`qK|EV4`zwKP85cl15;<6iop4UvE!Za5ELb9#FBlNC1Uq4@>;>Bdn*~b*^92Kf zmSCsEwOg=FuvxG~Fkdhr2%w9&34&aI@`wua$wwv`F`83Y$5Ia39JR`RPuiTWdZp0j zK-K5aK9rmDRC)XaX>*+F>&TNfr>Sy1LfRar`VL|tZO&4y5!xK3`lQ5TPEt)4+8m_H z@ko1fj%upV<``8TeL=Z7MV0G2(&iA=7mz1y&QQHhXmf-r4_~9)oS?c;Xmfxnp9d&6 z=cjVLPTCxw%6WpcIXyK-=yG;AeAY@l=DgH2q0MorUxzL2&1tDzr;&b5?0K{UX>(R8 z#|vq5RO;OlpE)V@eJOv`bX`7=`=Gufbhngmj!C^wXmd(xlF;{yKIaYEe_7}&g*Hc| zJ}>c@6H?i~ssEnn^ZAMNNufI>9&4NqpvX(pM!Ob2jN5q0MQe`z0Q8 z{wR;KVR`1n(L++cId7ClvrztezPh|ttk9i8Zc`E{`t4G_ng8w*|K{}4 z{}X@a?9zvXHYb;IeNBJn+)_U8lQt)n?hyaxY|?9mHm8yD{!e{#{^%!#HYbk0CGq6r zO9XzF3T;jsT36B;cZO$?Ig2ZFaC5aQ-oI`TI#AD7K;rVa}G$e#1lJNx6d&t-<h*JJkQ82>Ox;`hf`gr3f02O=152 z96{q5IZS>cf*uk25BIxHM=$}W>dm`wEBWSA_hxyH_yj$UX{$CX;S6DkoayQ_A zvQYW*rb@_oL`s8I>>l1%RXm}gktYBaH#C;jE^n-pY-J5{>ZCqZ0FUfrW~N3E>R3Fo zZe3cVM4wz~fGn!8vZhZZ6NwO?7iq+}vb0m+R&xxw)JiDcI%UuLR-5g%aHCH!VJIDE)!a+_IhjTxLgPabahlBTdjZnpsWyoo6 r4zKKr%2YQu#m!B2b9kj!^d@CVEG`F!hw4~d4h|*Nv4n82Ir;wqDOJae diff --git a/matinv.bin b/matinv.bin new file mode 100644 index 0000000000000000000000000000000000000000..7414cba8b3c18d7cdc29bb5cf955b975e63ab066 GIT binary patch literal 2568 zcmbW3%W4%t5Qe+YNxUCtlBh{e%(=uw)PYUFON`#m?ry=Xu-b-vlraf+%;PL}60Tt*Mn8!^R&_9i@)~s+hiX`zrB)ngkqc&F zw31S~;m#w^T?}E7x#qhK&mY!dm_v$@j4j6|9lJPZZxSy&@?f*to5VFmZDtp4?p_EB ziZNRkxx8<=BwN0O-7>7%x){rCTc2d`T2pboIuEUJnZ=ci5yYj>>v_S=zJ(i%>V+cB zUE-uqGgjV{$NYu2%ch*!hP-09!3Vc)IC3A1X@qnJV3q3}W5|eCDt&Fu{HhT^jR)iV zC)ygu*t;2f$E_Xv;B%`6+k)mlY#Pv9LrgVm>|B$1zag^0}*0u@9Sk?Ti`c4uy+i}L<&MrOURVQ-I zExY`7j+tk0A*MSi^$huSH;JQsP}w6&xq)nP;uKGsKUxpEx>JviDh}lsDreR)y8n@DF64aAh$nGeJ{U)RhuJ!nBkj9p>+NK- zdRD)?Z^*}FzmI_<#rl}9E*^jGi?Ly6<~v~lMRE1oAKTiorG0(rbe)0MyXY^RpO3ZS zpGLpo{9M*?W)D1ijP-8tje2seg=&u=>e+k+1 z@z6B(XBpks$3xw~^C87YjLbJeZukC}9`bz#Sa|hq@zeF!r2hPbA8>mACgB}d;`|pL zj+{HsjT&~zM-S$FgZ0kdy+g0|EMML0?X{{Oh4FW-db({>AGdAl^|q~5Px}5Y#d=SQ br+e};vFVP=e)NW)Z%_X}6xq*Sr2FJA>}3q= literal 0 HcmV?d00001 diff --git a/njlisp.asm b/njlisp.asm new file mode 100644 index 0000000..9142163 --- /dev/null +++ b/njlisp.asm @@ -0,0 +1,11070 @@ +// +// version +// + .vers 8 + +// +// execution framework +// +__start: + call _main + call _exit +__stop: + jmp __stop + +// +// Integer readInteger() +// +_readInteger: + asf 0 + rdint + popr + rsf + ret + +// +// void writeInteger(Integer) +// +_writeInteger: + asf 0 + pushl -3 + wrint + rsf + ret + +// +// Character readCharacter() +// +_readCharacter: + asf 0 + rdchr + popr + rsf + ret + +// +// void writeCharacter(Character) +// +_writeCharacter: + asf 0 + pushl -3 + wrchr + rsf + ret + +// +// Integer char2int(Character) +// +_char2int: + asf 0 + pushl -3 + popr + rsf + ret + +// +// Character int2char(Integer) +// +_int2char: + asf 0 + pushl -3 + popr + rsf + ret + +// +// void exit() +// +_exit: + asf 0 + halt + rsf + ret + +// +// void writeString(String) +// +_writeString: + asf 1 + pushc 0 + popl 0 + jmp _writeString_L2 +_writeString_L1: + pushl -3 + pushl 0 + getfa + call _writeCharacter + drop 1 + pushl 0 + pushc 1 + add + popl 0 +_writeString_L2: + pushl 0 + pushl -3 + getsz + lt + brt _writeString_L1 + rsf + ret + +// +// void debug(Integer) +// +_debug: + asf 0 + pushc 7 + newa + dup + pushc 0 + pushc 68 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 66 + putfa + dup + pushc 3 + pushc 85 + putfa + dup + pushc 4 + pushc 71 + putfa + dup + pushc 5 + pushc 58 + putfa + dup + pushc 6 + pushc 32 + putfa + call _writeString + drop 1 + pushl -3 + call _writeInteger + drop 1 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 +__0: + rsf + ret + +// +// Boolean isAlpha(Character) +// +_isAlpha: + asf 0 + pushl -3 + pushc 65 + ge + dup + brf __3 + drop 1 + pushl -3 + pushc 90 + le +__3: + dup + brt __2 + drop 1 + pushl -3 + pushc 97 + ge + dup + brf __4 + drop 1 + pushl -3 + pushc 122 + le +__4: +__2: + popr + jmp __1 +__1: + rsf + ret + +// +// Boolean isDigit(Character) +// +_isDigit: + asf 0 + pushl -3 + pushc 48 + ge + dup + brf __6 + drop 1 + pushl -3 + pushc 57 + le +__6: + popr + jmp __5 +__5: + rsf + ret + +// +// Character toLower(Character) +// +_toLower: + asf 0 + pushl -3 + pushc 65 + ge + dup + brf __9 + drop 1 + pushl -3 + pushc 90 + le +__9: + brf __8 + pushl -3 + call _char2int + drop 1 + pushr + pushc 32 + add + call _int2char + drop 1 + pushr + popl -3 +__8: + pushl -3 + popr + jmp __7 +__7: + rsf + ret + +// +// Character toUpper(Character) +// +_toUpper: + asf 0 + pushl -3 + pushc 97 + ge + dup + brf __12 + drop 1 + pushl -3 + pushc 122 + le +__12: + brf __11 + pushl -3 + call _char2int + drop 1 + pushr + pushc 32 + sub + call _int2char + drop 1 + pushr + popl -3 +__11: + pushl -3 + popr + jmp __10 +__10: + rsf + ret + +// +// Character[] toString(Character) +// +_toString: + asf 1 + pushc 1 + newa + popl 0 + pushl 0 + pushc 0 + pushl -3 + putfa + pushl 0 + popr + jmp __13 +__13: + rsf + ret + +// +// Integer stringCompare(Character[], Character[]) +// +_stringCompare: + asf 3 + pushl -4 + getsz + popl 0 + pushl -3 + getsz + popl 1 + pushc 0 + popl 2 + jmp __16 +__15: + pushl -4 + pushl 2 + getfa + pushl -3 + pushl 2 + getfa + ne + brf __18 + pushl -4 + pushl 2 + getfa + call _char2int + drop 1 + pushr + pushl -3 + pushl 2 + getfa + call _char2int + drop 1 + pushr + sub + popr + jmp __14 +__18: + pushl 2 + pushc 1 + add + popl 2 +__16: + pushl 2 + pushl 0 + lt + dup + brf __19 + drop 1 + pushl 2 + pushl 1 + lt +__19: + brt __15 +__17: + pushl 0 + pushl 1 + sub + popr + jmp __14 +__14: + rsf + ret + +// +// record { String str; Integer len; } newStringBuffer(Integer) +// +_newStringBuffer: + asf 1 + new 2 + popl 0 + pushl 0 + pushl -3 + newa + putf 0 + pushl 0 + pushc 0 + putf 1 + pushl 0 + popr + jmp __20 +__20: + rsf + ret + +// +// void addCharToStringBuffer(record { String str; Integer len; }, Character) +// +_addCharToStringBuffer: + asf 2 + pushl -4 + getf 1 + pushc 1 + add + pushl -4 + getf 0 + getsz + gt + brf __22 + pushc 2 + pushl -4 + getf 0 + getsz + mul + newa + popl 0 + pushc 0 + popl 1 + jmp __24 +__23: + pushl 0 + pushl 1 + pushl -4 + getf 0 + pushl 1 + getfa + putfa + pushl 1 + pushc 1 + add + popl 1 +__24: + pushl 1 + pushl -4 + getf 1 + lt + brt __23 +__25: + pushl -4 + pushl 0 + putf 0 +__22: + pushl -4 + getf 0 + pushl -4 + getf 1 + pushl -3 + putfa + pushl -4 + pushl -4 + getf 1 + pushc 1 + add + putf 1 +__21: + rsf + ret + +// +// void addStringToStringBuffer(record { String str; Integer len; }, Character[]) +// +_addStringToStringBuffer: + asf 2 + pushl -3 + getsz + popl 0 + pushc 0 + popl 1 + jmp __28 +__27: + pushl -4 + pushl -3 + pushl 1 + getfa + call _addCharToStringBuffer + drop 2 + pushl 1 + pushc 1 + add + popl 1 +__28: + pushl 1 + pushl 0 + lt + brt __27 +__29: +__26: + rsf + ret + +// +// Character[] stringBufferToString(record { String str; Integer len; }) +// +_stringBufferToString: + asf 2 + pushl -3 + getf 1 + newa + popl 0 + pushc 0 + popl 1 + jmp __32 +__31: + pushl 0 + pushl 1 + pushl -3 + getf 0 + pushl 1 + getfa + putfa + pushl 1 + pushc 1 + add + popl 1 +__32: + pushl 1 + pushl -3 + getf 1 + lt + brt __31 +__33: + pushl 0 + popr + jmp __30 +__30: + rsf + ret + +// +// void error(Character[], Boolean) +// +_error: + asf 0 + pushc 1 + newa + dup + pushc 0 + pushc 10 + putfa + call _writeString + drop 1 + pushl -4 + call _writeString + drop 1 + pushc 2 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 10 + putfa + call _writeString + drop 1 + pushl -3 + brf __35 + call _exit +__35: +__34: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeNil() +// +_makeNil: + asf 1 + new 6 + popl 0 + pushl 0 + pushg 0 + putf 0 + pushl 0 + pushl 0 + putf 1 + pushl 0 + pushl 0 + putf 2 + pushl 0 + pushl 0 + putf 3 + pushl 0 + pushc 3 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 76 + putfa + putf 4 + pushl 0 + popr + jmp __36 +__36: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeName(Character[]) +// +_makeName: + asf 1 + new 6 + popl 0 + pushl 0 + pushg 0 + putf 0 + pushl 0 + pushl 0 + putf 1 + pushl 0 + pushg 10 + putf 2 + pushl 0 + pushg 10 + putf 3 + pushl 0 + pushl -3 + putf 4 + pushl 0 + popr + jmp __37 +__37: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeNumber(Integer) +// +_makeNumber: + asf 1 + new 6 + popl 0 + pushl 0 + pushg 1 + putf 0 + pushl 0 + pushl 0 + putf 1 + pushl -3 + pushc 0 + lt + brf __39 + pushl 0 + pushg 11 + putf 2 + jmp __40 +__39: + pushl 0 + pushg 10 + putf 2 +__40: + pushl 0 + pushl -3 + putf 5 + pushl 0 + popr + jmp __38 +__38: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeNode(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_makeNode: + asf 1 + new 6 + popl 0 + pushl 0 + pushg 2 + putf 0 + pushl 0 + pushl -4 + putf 1 + pushl 0 + pushl -3 + putf 2 + pushl 0 + popr + jmp __41 +__41: + rsf + ret + +// +// void addOblist(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_addOblist: + asf 0 + pushl -3 + pushg 8 + call _makeNode + drop 2 + pushr + popg 8 +__42: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeObject(Character[]) +// +_makeObject: + asf 1 + pushl -3 + call _makeName + drop 1 + pushr + popl 0 + pushl 0 + call _addOblist + drop 1 + pushl 0 + popr + jmp __43 +__43: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } makeBuiltin(Character[], record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, Integer) +// +_makeBuiltin: + asf 1 + pushl -5 + call _makeObject + drop 1 + pushr + popl 0 + pushl 0 + pushl -4 + pushl -3 + call _makeNumber + drop 1 + pushr + call _makeNode + drop 2 + pushr + putf 3 + pushl 0 + popr + jmp __44 +__44: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } searchOblist(Character[]) +// +_searchOblist: + asf 1 + pushg 8 + popl 0 + jmp __47 +__46: + pushl 0 + getf 1 + getf 4 + pushl -3 + call _stringCompare + drop 2 + pushr + pushc 0 + eq + brf __49 + pushl 0 + getf 1 + popr + jmp __45 +__49: + pushl 0 + getf 2 + popl 0 +__47: + pushl 0 + getf 0 + pushg 2 + eq + brt __46 +__48: + pushl -3 + call _makeObject + drop 1 + pushr + popr + jmp __45 +__45: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } copyTree(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_copyTree: + asf 2 + pushg 10 + pushg 10 + call _makeNode + drop 2 + pushr + popl 0 + pushl 0 + pushl 0 + putf 1 + jmp __52 +__51: + pushl -3 + getf 1 + call _copyTree + drop 1 + pushr + popl 1 + pushl 0 + getf 1 + pushl 1 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 0 + pushl 0 + getf 1 + getf 2 + putf 1 + pushl -3 + getf 2 + popl -3 +__52: + pushl -3 + getf 0 + pushg 2 + eq + brt __51 +__53: + pushl 0 + getf 1 + pushl -3 + putf 2 + pushl 0 + getf 2 + popr + jmp __50 +__50: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } execErr(Integer) +// +_execErr: + asf 0 + pushc 15 + newa + dup + pushc 0 + pushc 101 + putfa + dup + pushc 1 + pushc 120 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 99 + putfa + dup + pushc 4 + pushc 58 + putfa + dup + pushc 5 + pushc 32 + putfa + dup + pushc 6 + pushc 102 + putfa + dup + pushc 7 + pushc 117 + putfa + dup + pushc 8 + pushc 110 + putfa + dup + pushc 9 + pushc 99 + putfa + dup + pushc 10 + pushc 116 + putfa + dup + pushc 11 + pushc 105 + putfa + dup + pushc 12 + pushc 111 + putfa + dup + pushc 13 + pushc 110 + putfa + dup + pushc 14 + pushc 32 + putfa + call _writeString + drop 1 + pushl -3 + call _writeInteger + drop 1 + pushc 17 + newa + dup + pushc 0 + pushc 32 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 111 + putfa + dup + pushc 3 + pushc 116 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 105 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 112 + putfa + dup + pushc 8 + pushc 108 + putfa + dup + pushc 9 + pushc 101 + putfa + dup + pushc 10 + pushc 109 + putfa + dup + pushc 11 + pushc 101 + putfa + dup + pushc 12 + pushc 110 + putfa + dup + pushc 13 + pushc 116 + putfa + dup + pushc 14 + pushc 101 + putfa + dup + pushc 15 + pushc 100 + putfa + dup + pushc 16 + pushc 10 + putfa + call _writeString + drop 1 + call _exit + pushg 10 + popr + jmp __54 +__54: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } exec(Integer, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_exec: + asf 0 + pushl -6 + pushc 0 + lt + dup + brt __57 + drop 1 + pushl -6 + pushc 128 + ge +__57: + brf __56 + pushc 19 + newa + dup + pushc 0 + pushc 73 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 116 + putfa + dup + pushc 3 + pushc 101 + putfa + dup + pushc 4 + pushc 114 + putfa + dup + pushc 5 + pushc 110 + putfa + dup + pushc 6 + pushc 97 + putfa + dup + pushc 7 + pushc 108 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 69 + putfa + dup + pushc 10 + pushc 120 + putfa + dup + pushc 11 + pushc 101 + putfa + dup + pushc 12 + pushc 99 + putfa + dup + pushc 13 + pushc 32 + putfa + dup + pushc 14 + pushc 69 + putfa + dup + pushc 15 + pushc 114 + putfa + dup + pushc 16 + pushc 114 + putfa + dup + pushc 17 + pushc 111 + putfa + dup + pushc 18 + pushc 114 + putfa + pushc 0 + call _error + drop 2 + pushg 10 + popr + jmp __55 +__56: + pushl -6 + pushc 64 + lt + brf __58 + pushl -6 + pushc 32 + lt + brf __60 + pushl -6 + pushc 16 + lt + brf __62 + pushl -6 + pushc 8 + lt + brf __64 + pushl -6 + pushc 4 + lt + brf __66 + pushl -6 + pushc 2 + lt + brf __68 + pushl -6 + pushc 1 + lt + brf __70 + pushl -5 + call _car + drop 1 + pushr + popr + jmp __55 + jmp __71 +__70: + pushl -5 + call _cdr + drop 1 + pushr + popr + jmp __55 +__71: + jmp __69 +__68: + pushl -6 + pushc 3 + lt + brf __72 + pushl -5 + call _caar + drop 1 + pushr + popr + jmp __55 + jmp __73 +__72: + pushl -5 + call _cadr + drop 1 + pushr + popr + jmp __55 +__73: +__69: + jmp __67 +__66: + pushl -6 + pushc 6 + lt + brf __74 + pushl -6 + pushc 5 + lt + brf __76 + pushl -5 + call _cdar + drop 1 + pushr + popr + jmp __55 + jmp __77 +__76: + pushl -5 + call _cddr + drop 1 + pushr + popr + jmp __55 +__77: + jmp __75 +__74: + pushl -6 + pushc 7 + lt + brf __78 + pushl -5 + call _caaar + drop 1 + pushr + popr + jmp __55 + jmp __79 +__78: + pushl -5 + call _caadr + drop 1 + pushr + popr + jmp __55 +__79: +__75: +__67: + jmp __65 +__64: + pushl -6 + pushc 12 + lt + brf __80 + pushl -6 + pushc 10 + lt + brf __82 + pushl -6 + pushc 9 + lt + brf __84 + pushl -5 + call _cadar + drop 1 + pushr + popr + jmp __55 + jmp __85 +__84: + pushl -5 + call _caddr + drop 1 + pushr + popr + jmp __55 +__85: + jmp __83 +__82: + pushl -6 + pushc 11 + lt + brf __86 + pushl -5 + call _cdaar + drop 1 + pushr + popr + jmp __55 + jmp __87 +__86: + pushl -5 + call _cdadr + drop 1 + pushr + popr + jmp __55 +__87: +__83: + jmp __81 +__80: + pushl -6 + pushc 14 + lt + brf __88 + pushl -6 + pushc 13 + lt + brf __90 + pushl -5 + call _cddar + drop 1 + pushr + popr + jmp __55 + jmp __91 +__90: + pushl -5 + call _cdddr + drop 1 + pushr + popr + jmp __55 +__91: + jmp __89 +__88: + pushl -6 + pushc 15 + lt + brf __92 + pushl -5 + pushl -4 + call _cons + drop 2 + pushr + popr + jmp __55 + jmp __93 +__92: + pushl -5 + call _list + drop 1 + pushr + popr + jmp __55 +__93: +__89: +__81: +__65: + jmp __63 +__62: + pushl -6 + pushc 24 + lt + brf __94 + pushl -6 + pushc 20 + lt + brf __96 + pushl -6 + pushc 18 + lt + brf __98 + pushl -6 + pushc 17 + lt + brf __100 + pushl -5 + pushl -4 + call _reverse + drop 2 + pushr + popr + jmp __55 + jmp __101 +__100: + call _oblist + pushr + popr + jmp __55 +__101: + jmp __99 +__98: + pushl -6 + pushc 19 + lt + brf __102 + pushl -5 + pushl -4 + call _rplaca + drop 2 + pushr + popr + jmp __55 + jmp __103 +__102: + pushl -5 + pushl -4 + call _rplacd + drop 2 + pushr + popr + jmp __55 +__103: +__99: + jmp __97 +__96: + pushl -6 + pushc 22 + lt + brf __104 + pushl -6 + pushc 21 + lt + brf __106 + pushl -5 + pushl -4 + call _nconc + drop 2 + pushr + popr + jmp __55 + jmp __107 +__106: + pushl -5 + call _name + drop 1 + pushr + popr + jmp __55 +__107: + jmp __105 +__104: + pushl -6 + pushc 23 + lt + brf __108 + pushl -5 + call _numberp + drop 1 + pushr + popr + jmp __55 + jmp __109 +__108: + pushl -5 + call _atom + drop 1 + pushr + popr + jmp __55 +__109: +__105: +__97: + jmp __95 +__94: + pushl -6 + pushc 28 + lt + brf __110 + pushl -6 + pushc 26 + lt + brf __112 + pushl -6 + pushc 25 + lt + brf __114 + pushl -5 + call _null + drop 1 + pushr + popr + jmp __55 + jmp __115 +__114: + pushl -5 + call _plusp + drop 1 + pushr + popr + jmp __55 +__115: + jmp __113 +__112: + pushl -6 + pushc 27 + lt + brf __116 + pushl -5 + call _minusp + drop 1 + pushr + popr + jmp __55 + jmp __117 +__116: + pushl -5 + call _zerop + drop 1 + pushr + popr + jmp __55 +__117: +__113: + jmp __111 +__110: + pushl -6 + pushc 30 + lt + brf __118 + pushl -6 + pushc 29 + lt + brf __120 + pushl -5 + call _even + drop 1 + pushr + popr + jmp __55 + jmp __121 +__120: + pushl -5 + pushl -4 + call _eq + drop 2 + pushr + popr + jmp __55 +__121: + jmp __119 +__118: + pushl -6 + pushc 31 + lt + brf __122 + pushl -5 + pushl -4 + call _equal + drop 2 + pushr + popr + jmp __55 + jmp __123 +__122: + pushl -5 + pushl -4 + call _member + drop 2 + pushr + popr + jmp __55 +__123: +__119: +__111: +__95: +__63: + jmp __61 +__60: + pushl -6 + pushc 48 + lt + brf __124 + pushl -6 + pushc 40 + lt + brf __126 + pushl -6 + pushc 36 + lt + brf __128 + pushl -6 + pushc 34 + lt + brf __130 + pushl -6 + pushc 33 + lt + brf __132 + pushl -5 + pushl -4 + call _greaterp + drop 2 + pushr + popr + jmp __55 + jmp __133 +__132: + pushl -5 + pushl -4 + call _lessp + drop 2 + pushr + popr + jmp __55 +__133: + jmp __131 +__130: + pushl -6 + pushc 35 + lt + brf __134 + pushl -5 + pushl -4 + call _orderp + drop 2 + pushr + popr + jmp __55 + jmp __135 +__134: + pushl -5 + call _not + drop 1 + pushr + popr + jmp __55 +__135: +__131: + jmp __129 +__128: + pushl -6 + pushc 38 + lt + brf __136 + pushl -6 + pushc 37 + lt + brf __138 + pushl -5 + call _and + drop 1 + pushr + popr + jmp __55 + jmp __139 +__138: + pushl -5 + call _or + drop 1 + pushr + popr + jmp __55 +__139: + jmp __137 +__136: + pushl -6 + pushc 39 + lt + brf __140 + pushl -5 + pushl -4 + call _set + drop 2 + pushr + popr + jmp __55 + jmp __141 +__140: + pushl -5 + call _setq + drop 1 + pushr + popr + jmp __55 +__141: +__137: +__129: + jmp __127 +__126: + pushl -6 + pushc 44 + lt + brf __142 + pushl -6 + pushc 42 + lt + brf __144 + pushl -6 + pushc 41 + lt + brf __146 + pushl -5 + call _pop + drop 1 + pushr + popr + jmp __55 + jmp __147 +__146: + pushl -5 + call _push + drop 1 + pushr + popr + jmp __55 +__147: + jmp __145 +__144: + pushl -6 + pushc 43 + lt + brf __148 + pushl -5 + pushl -4 + call _assoc + drop 2 + pushr + popr + jmp __55 + jmp __149 +__148: + pushl -5 + pushl -4 + call _get + drop 2 + pushr + popr + jmp __55 +__149: +__145: + jmp __143 +__142: + pushl -6 + pushc 46 + lt + brf __150 + pushl -6 + pushc 45 + lt + brf __152 + pushl -5 + pushl -4 + pushl -3 + call _put + drop 3 + pushr + popr + jmp __55 + jmp __153 +__152: + pushl -5 + pushl -4 + call _remprop + drop 2 + pushr + popr + jmp __55 +__153: + jmp __151 +__150: + pushl -6 + pushc 47 + lt + brf __154 + pushl -5 + pushl -4 + call _flagp + drop 2 + pushr + popr + jmp __55 + jmp __155 +__154: + pushl -5 + pushl -4 + call _flag + drop 2 + pushr + popr + jmp __55 +__155: +__151: +__143: +__127: + jmp __125 +__124: + pushl -6 + pushc 56 + lt + brf __156 + pushl -6 + pushc 52 + lt + brf __158 + pushl -6 + pushc 50 + lt + brf __160 + pushl -6 + pushc 49 + lt + brf __162 + pushl -5 + pushl -4 + call _remflag + drop 2 + pushr + popr + jmp __55 + jmp __163 +__162: + pushl -5 + call _getd + drop 1 + pushr + popr + jmp __55 +__163: + jmp __161 +__160: + pushl -6 + pushc 51 + lt + brf __164 + pushl -5 + pushl -4 + call _putd + drop 2 + pushr + popr + jmp __55 + jmp __165 +__164: + pushl -5 + pushl -4 + call _movd + drop 2 + pushr + popr + jmp __55 +__165: +__161: + jmp __159 +__158: + pushl -6 + pushc 54 + lt + brf __166 + pushl -6 + pushc 53 + lt + brf __168 + pushl -5 + call _pack + drop 1 + pushr + popr + jmp __55 + jmp __169 +__168: + pushl -5 + call _unpack + drop 1 + pushr + popr + jmp __55 +__169: + jmp __167 +__166: + pushl -6 + pushc 55 + lt + brf __170 + pushl -5 + call _length + drop 1 + pushr + popr + jmp __55 + jmp __171 +__170: + pushl -5 + call _minus + drop 1 + pushr + popr + jmp __55 +__171: +__167: +__159: + jmp __157 +__156: + pushl -6 + pushc 60 + lt + brf __172 + pushl -6 + pushc 58 + lt + brf __174 + pushl -6 + pushc 57 + lt + brf __176 + pushl -5 + pushl -4 + call _plus + drop 2 + pushr + popr + jmp __55 + jmp __177 +__176: + pushl -5 + pushl -4 + call _difference + drop 2 + pushr + popr + jmp __55 +__177: + jmp __175 +__174: + pushl -6 + pushc 59 + lt + brf __178 + pushl -5 + pushl -4 + call _times + drop 2 + pushr + popr + jmp __55 + jmp __179 +__178: + pushl -5 + pushl -4 + call _quotient + drop 2 + pushr + popr + jmp __55 +__179: +__175: + jmp __173 +__172: + pushl -6 + pushc 62 + lt + brf __180 + pushl -6 + pushc 61 + lt + brf __182 + pushl -5 + pushl -4 + call _remainder + drop 2 + pushr + popr + jmp __55 + jmp __183 +__182: + pushl -5 + pushl -4 + call _divide + drop 2 + pushr + popr + jmp __55 +__183: + jmp __181 +__180: + pushl -6 + pushc 63 + lt + brf __184 + pushl -5 + pushl -4 + pushl -3 + call _rds + drop 3 + pushr + popr + jmp __55 + jmp __185 +__184: + call _ratom + pushr + popr + jmp __55 +__185: +__181: +__173: +__157: +__125: +__61: + jmp __59 +__58: + pushl -6 + pushc 96 + lt + brf __186 + pushl -6 + pushc 80 + lt + brf __188 + pushl -6 + pushc 72 + lt + brf __190 + pushl -6 + pushc 68 + lt + brf __192 + pushl -6 + pushc 66 + lt + brf __194 + pushl -6 + pushc 65 + lt + brf __196 + call _read + pushr + popr + jmp __55 + jmp __197 +__196: + call _readch + pushr + popr + jmp __55 +__197: + jmp __195 +__194: + pushl -6 + pushc 67 + lt + brf __198 + pushl -5 + pushl -4 + pushl -3 + call _wrs + drop 3 + pushr + popr + jmp __55 + jmp __199 +__198: + pushl -5 + call _print + drop 1 + pushr + popr + jmp __55 +__199: +__195: + jmp __193 +__192: + pushl -6 + pushc 70 + lt + brf __200 + pushl -6 + pushc 69 + lt + brf __202 + pushl -5 + call _prin1 + drop 1 + pushr + popr + jmp __55 + jmp __203 +__202: + pushl -5 + call _terpri + drop 1 + pushr + popr + jmp __55 +__203: + jmp __201 +__200: + pushl -6 + pushc 71 + lt + brf __204 + pushl -5 + call _spaces + drop 1 + pushr + popr + jmp __55 + jmp __205 +__204: + pushl -5 + call _linelength + drop 1 + pushr + popr + jmp __55 +__205: +__201: +__193: + jmp __191 +__190: + pushl -6 + pushc 76 + lt + brf __206 + pushl -6 + pushc 74 + lt + brf __208 + pushl -6 + pushc 73 + lt + brf __210 + pushl -5 + call _radix + drop 1 + pushr + popr + jmp __55 + jmp __211 +__210: + pushl -5 + call _quote + drop 1 + pushr + popr + jmp __55 +__211: + jmp __209 +__208: + pushl -6 + pushc 75 + lt + brf __212 + pushl -5 + call _eval + drop 1 + pushr + popr + jmp __55 + jmp __213 +__212: + pushl -5 + pushl -4 + call _apply + drop 2 + pushr + popr + jmp __55 +__213: +__209: + jmp __207 +__206: + pushl -6 + pushc 78 + lt + brf __214 + pushl -6 + pushc 77 + lt + brf __216 + pushl -5 + call _cond + drop 1 + pushr + popr + jmp __55 + jmp __217 +__216: + pushl -5 + call _loop + drop 1 + pushr + popr + jmp __55 +__217: + jmp __215 +__214: + pushl -6 + pushc 79 + lt + brf __218 + pushl -5 + call _prog1 + drop 1 + pushr + popr + jmp __55 + jmp __219 +__218: + call _driver + pushr + popr + jmp __55 +__219: +__215: +__207: +__191: + jmp __189 +__188: + pushl -6 + pushc 88 + lt + brf __220 + pushl -6 + pushc 84 + lt + brf __222 + pushl -6 + pushc 82 + lt + brf __224 + pushl -6 + pushc 81 + lt + brf __226 + call _reclaim + pushr + popr + jmp __55 + jmp __227 +__226: + pushl -5 + pushl -4 + call _save + drop 2 + pushr + popr + jmp __55 +__227: + jmp __225 +__224: + pushl -6 + pushc 83 + lt + brf __228 + pushl -5 + pushl -4 + call _load + drop 2 + pushr + popr + jmp __55 + jmp __229 +__228: + call _system + pushr + popr + jmp __55 +__229: +__225: + jmp __223 +__222: + pushl -6 + pushc 86 + lt + brf __230 + pushl -6 + pushc 85 + lt + brf __232 + pushl -5 + pushl -4 + call _xchgpname + drop 2 + pushr + popr + jmp __55 + jmp __233 +__232: + pushl -5 + call _purgename + drop 1 + pushr + popr + jmp __55 +__233: + jmp __231 +__230: + pushl -6 + pushc 87 + lt + brf __234 + pushc 86 + call _execErr + drop 1 + pushr + popr + jmp __55 + jmp __235 +__234: + pushc 87 + call _execErr + drop 1 + pushr + popr + jmp __55 +__235: +__231: +__223: + jmp __221 +__220: + pushl -6 + pushc 92 + lt + brf __236 + pushl -6 + pushc 90 + lt + brf __238 + pushl -6 + pushc 89 + lt + brf __240 + pushc 88 + call _execErr + drop 1 + pushr + popr + jmp __55 + jmp __241 +__240: + pushc 89 + call _execErr + drop 1 + pushr + popr + jmp __55 +__241: + jmp __239 +__238: + pushl -6 + pushc 91 + lt + brf __242 + pushc 90 + call _execErr + drop 1 + pushr + popr + jmp __55 + jmp __243 +__242: + pushc 91 + call _execErr + drop 1 + pushr + popr + jmp __55 +__243: +__239: + jmp __237 +__236: + pushl -6 + pushc 94 + lt + brf __244 + pushl -6 + pushc 93 + lt + brf __246 + pushc 92 + call _execErr + drop 1 + pushr + popr + jmp __55 + jmp __247 +__246: + pushc 93 + call _execErr + drop 1 + pushr + popr + jmp __55 +__247: + jmp __245 +__244: + pushl -6 + pushc 95 + lt + brf __248 + pushc 94 + call _execErr + drop 1 + pushr + popr + jmp __55 + jmp __249 +__248: + pushc 95 + call _execErr + drop 1 + pushr + popr + jmp __55 +__249: +__245: +__237: +__221: +__189: + jmp __187 +__186: + pushl -6 + call _execErr + drop 1 +__187: +__59: +__55: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } car(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_car: + asf 0 + pushl -3 + getf 1 + popr + jmp __250 +__250: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cdr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cdr: + asf 0 + pushl -3 + getf 2 + popr + jmp __251 +__251: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } caar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_caar: + asf 0 + pushl -3 + getf 1 + getf 1 + popr + jmp __252 +__252: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cadr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cadr: + asf 0 + pushl -3 + getf 2 + getf 1 + popr + jmp __253 +__253: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cdar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cdar: + asf 0 + pushl -3 + getf 1 + getf 2 + popr + jmp __254 +__254: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cddr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cddr: + asf 0 + pushl -3 + getf 2 + getf 2 + popr + jmp __255 +__255: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } caaar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_caaar: + asf 0 + pushl -3 + getf 1 + getf 1 + getf 1 + popr + jmp __256 +__256: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } caadr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_caadr: + asf 0 + pushl -3 + getf 2 + getf 1 + getf 1 + popr + jmp __257 +__257: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cadar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cadar: + asf 0 + pushl -3 + getf 1 + getf 2 + getf 1 + popr + jmp __258 +__258: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } caddr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_caddr: + asf 0 + pushl -3 + getf 2 + getf 2 + getf 1 + popr + jmp __259 +__259: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cdaar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cdaar: + asf 0 + pushl -3 + getf 1 + getf 1 + getf 2 + popr + jmp __260 +__260: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cdadr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cdadr: + asf 0 + pushl -3 + getf 2 + getf 1 + getf 2 + popr + jmp __261 +__261: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cddar(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cddar: + asf 0 + pushl -3 + getf 1 + getf 2 + getf 2 + popr + jmp __262 +__262: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cdddr(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cdddr: + asf 0 + pushl -3 + getf 2 + getf 2 + getf 2 + popr + jmp __263 +__263: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cons(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cons: + asf 0 + pushl -4 + pushl -3 + call _makeNode + drop 2 + pushr + popr + jmp __264 +__264: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } list(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_list: + asf 2 + pushg 10 + pushg 10 + call _makeNode + drop 2 + pushr + popl 0 + pushl 0 + pushl 0 + putf 1 + jmp __267 +__266: + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 1 + pushl 0 + getf 1 + pushl 1 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 0 + pushl 0 + getf 1 + getf 2 + putf 1 + pushl -3 + getf 2 + popl -3 +__267: + pushl -3 + getf 0 + pushg 2 + eq + brt __266 +__268: + pushl 0 + getf 1 + pushl -3 + putf 2 + pushl 0 + getf 2 + popr + jmp __265 +__265: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } reverse(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_reverse: + asf 1 + pushl -3 + popl 0 + jmp __271 +__270: + pushl -4 + getf 1 + pushl 0 + call _makeNode + drop 2 + pushr + popl 0 + pushl -4 + getf 2 + popl -4 +__271: + pushl -4 + getf 0 + pushg 2 + eq + brt __270 +__272: + pushl 0 + popr + jmp __269 +__269: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } oblist() +// +_oblist: + asf 0 + pushg 8 + call _copyTree + drop 1 + pushr + popr + jmp __273 +__273: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } rplaca(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_rplaca: + asf 0 + pushl -4 + pushl -3 + putf 1 + pushl -4 + popr + jmp __274 +__274: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } rplacd(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_rplacd: + asf 0 + pushl -4 + pushl -3 + putf 2 + pushl -4 + popr + jmp __275 +__275: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } nconc(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_nconc: + asf 1 + pushl -4 + getf 0 + pushg 2 + ne + brf __277 + pushl -3 + popr + jmp __276 +__277: + pushl -4 + popl 0 + jmp __279 +__278: + pushl 0 + getf 2 + popl 0 +__279: + pushl 0 + getf 2 + getf 0 + pushg 2 + eq + brt __278 +__280: + pushl 0 + pushl -3 + putf 2 + pushl -4 + popr + jmp __276 +__276: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } name(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_name: + asf 0 + pushl -3 + getf 0 + pushg 0 + eq + brf __282 + pushg 11 + popr + jmp __281 +__282: + pushg 10 + popr + jmp __281 +__281: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } numberp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_numberp: + asf 0 + pushl -3 + getf 0 + pushg 1 + eq + brf __284 + pushg 11 + popr + jmp __283 +__284: + pushg 10 + popr + jmp __283 +__283: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } atom(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_atom: + asf 0 + pushl -3 + getf 0 + pushg 2 + ne + brf __286 + pushg 11 + popr + jmp __285 +__286: + pushg 10 + popr + jmp __285 +__285: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } null(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_null: + asf 0 + pushl -3 + pushg 10 + refeq + brf __288 + pushg 11 + popr + jmp __287 +__288: + pushg 10 + popr + jmp __287 +__287: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } plusp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_plusp: + asf 0 + pushl -3 + getf 0 + pushg 1 + eq + dup + brf __291 + drop 1 + pushl -3 + getf 5 + pushc 0 + gt +__291: + brf __290 + pushg 11 + popr + jmp __289 +__290: + pushg 10 + popr + jmp __289 +__289: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } minusp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_minusp: + asf 0 + pushl -3 + getf 0 + pushg 1 + eq + dup + brf __294 + drop 1 + pushl -3 + getf 5 + pushc 0 + lt +__294: + brf __293 + pushg 11 + popr + jmp __292 +__293: + pushg 10 + popr + jmp __292 +__292: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } zerop(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_zerop: + asf 0 + pushl -3 + getf 0 + pushg 1 + eq + dup + brf __297 + drop 1 + pushl -3 + getf 5 + pushc 0 + eq +__297: + brf __296 + pushg 11 + popr + jmp __295 +__296: + pushg 10 + popr + jmp __295 +__295: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } even(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_even: + asf 0 + pushl -3 + getf 0 + pushg 1 + eq + dup + brf __300 + drop 1 + pushl -3 + getf 5 + pushc 2 + mod + pushc 0 + eq +__300: + brf __299 + pushg 11 + popr + jmp __298 +__299: + pushg 10 + popr + jmp __298 +__298: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } eq(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_eq: + asf 0 + pushl -4 + pushl -3 + refeq + brf __302 + pushg 11 + popr + jmp __301 +__302: + pushl -4 + getf 0 + pushg 1 + eq + dup + brf __305 + drop 1 + pushl -3 + getf 0 + pushg 1 + eq +__305: + dup + brf __304 + drop 1 + pushl -4 + getf 5 + pushl -3 + getf 5 + eq +__304: + brf __303 + pushg 11 + popr + jmp __301 +__303: + pushg 10 + popr + jmp __301 +__301: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } equal(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_equal: + asf 0 + jmp __308 +__307: + pushl -4 + getf 1 + pushl -3 + getf 1 + call _equal + drop 2 + pushr + pushg 10 + refeq + brf __310 + pushg 10 + popr + jmp __306 +__310: + pushl -4 + getf 2 + popl -4 + pushl -3 + getf 2 + popl -3 +__308: + pushl -4 + getf 0 + pushg 2 + eq + dup + brf __311 + drop 1 + pushl -3 + getf 0 + pushg 2 + eq +__311: + brt __307 +__309: + pushl -4 + pushl -3 + call _eq + drop 2 + pushr + popr + jmp __306 +__306: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } member(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_member: + asf 0 + jmp __314 +__313: + pushl -4 + pushl -3 + getf 1 + call _equal + drop 2 + pushr + pushg 11 + refeq + brf __316 + pushg 11 + popr + jmp __312 +__316: + pushl -3 + getf 2 + popl -3 +__314: + pushl -3 + getf 0 + pushg 2 + eq + brt __313 +__315: + pushl -3 + popr + jmp __312 +__312: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } greaterp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_greaterp: + asf 0 + pushl -4 + getf 0 + pushg 1 + eq + dup + brf __320 + drop 1 + pushl -3 + getf 0 + pushg 1 + eq +__320: + dup + brf __319 + drop 1 + pushl -4 + getf 5 + pushl -3 + getf 5 + gt +__319: + brf __318 + pushg 11 + popr + jmp __317 +__318: + pushg 10 + popr + jmp __317 +__317: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } lessp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_lessp: + asf 0 + pushl -4 + getf 0 + pushg 1 + eq + dup + brf __324 + drop 1 + pushl -3 + getf 0 + pushg 1 + eq +__324: + dup + brf __323 + drop 1 + pushl -4 + getf 5 + pushl -3 + getf 5 + lt +__323: + brf __322 + pushg 11 + popr + jmp __321 +__322: + pushg 10 + popr + jmp __321 +__321: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } orderp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_orderp: + asf 1 + pushl -4 + getf 0 + pushg 2 + eq + brf __326 + pushg 10 + popr + jmp __325 +__326: + pushl -3 + getf 0 + pushg 2 + eq + brf __327 + pushg 11 + popr + jmp __325 +__327: + pushl -4 + getf 0 + pushg 1 + eq + dup + brf __329 + drop 1 + pushl -3 + getf 0 + pushg 1 + eq +__329: + brf __328 + pushl -4 + getf 5 + pushl -3 + getf 5 + lt + brf __330 + pushg 11 + popr + jmp __325 +__330: + pushg 10 + popr + jmp __325 +__328: + pushl -4 + getf 0 + pushg 1 + eq + brf __331 + pushg 11 + popr + jmp __325 +__331: + pushl -3 + getf 0 + pushg 1 + eq + brf __332 + pushg 10 + popr + jmp __325 +__332: + pushg 8 + popl 0 + jmp __334 +__333: + pushl 0 + getf 1 + pushl -4 + refeq + brf __336 + pushg 10 + popr + jmp __325 +__336: + pushl 0 + getf 1 + pushl -3 + refeq + brf __337 + pushg 11 + popr + jmp __325 +__337: + pushl 0 + getf 2 + popl 0 +__334: + pushl 0 + getf 0 + pushg 2 + eq + brt __333 +__335: + pushg 10 + popr + jmp __325 +__325: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } not(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_not: + asf 0 + pushl -3 + pushg 10 + refeq + brf __339 + pushg 11 + popr + jmp __338 +__339: + pushg 10 + popr + jmp __338 +__338: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } and(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_and: + asf 0 + jmp __342 +__341: + pushl -3 + getf 1 + call _eval + drop 1 + pushr + pushg 10 + refeq + brf __344 + pushg 10 + popr + jmp __340 +__344: + pushl -3 + getf 2 + popl -3 +__342: + pushl -3 + getf 0 + pushg 2 + eq + brt __341 +__343: + pushg 11 + popr + jmp __340 +__340: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } or(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_or: + asf 0 + jmp __347 +__346: + pushl -3 + getf 1 + call _eval + drop 1 + pushr + pushg 10 + refne + brf __349 + pushg 11 + popr + jmp __345 +__349: + pushl -3 + getf 2 + popl -3 +__347: + pushl -3 + getf 0 + pushg 2 + eq + brt __346 +__348: + pushg 10 + popr + jmp __345 +__345: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } set(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_set: + asf 0 + pushl -4 + pushl -3 + putf 1 + pushl -3 + popr + jmp __350 +__350: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } setq(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_setq: + asf 1 + pushl -3 + getf 2 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl -3 + getf 1 + pushl 0 + putf 1 + pushl 0 + popr + jmp __351 +__351: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } pop(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_pop: + asf 1 + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl -3 + getf 1 + pushl 0 + getf 2 + putf 1 + pushl 0 + getf 1 + popr + jmp __352 +__352: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } push(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_push: + asf 3 + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl -3 + getf 2 + getf 1 + call _eval + drop 1 + pushr + popl 1 + pushl 0 + pushl 1 + call _makeNode + drop 2 + pushr + popl 2 + pushl -3 + getf 2 + getf 1 + pushl 2 + putf 1 + pushl 2 + popr + jmp __353 +__353: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } assoc(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_assoc: + asf 0 + jmp __356 +__355: + pushl -3 + getf 1 + getf 0 + pushg 2 + eq + dup + brf __359 + drop 1 + pushl -3 + getf 1 + getf 1 + pushl -4 + call _equal + drop 2 + pushr + pushg 11 + refeq +__359: + brf __358 + pushl -3 + getf 1 + popr + jmp __354 +__358: + pushl -3 + getf 2 + popl -3 +__356: + pushl -3 + getf 0 + pushg 2 + eq + brt __355 +__357: + pushl -3 + popr + jmp __354 +__354: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } get(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_get: + asf 1 + pushl -3 + pushl -4 + getf 2 + call _assoc + drop 2 + pushr + popl 0 + pushl 0 + getf 0 + pushg 2 + ne + brf __361 + pushg 10 + popr + jmp __360 +__361: + pushl 0 + getf 2 + popr + jmp __360 +__360: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } put(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_put: + asf 1 + pushl -4 + pushl -5 + getf 2 + call _assoc + drop 2 + pushr + popl 0 + pushl 0 + getf 0 + pushg 2 + ne + brf __363 + pushl -4 + pushl -3 + call _makeNode + drop 2 + pushr + popl 0 + pushl -5 + pushl 0 + pushl -5 + getf 2 + call _makeNode + drop 2 + pushr + putf 2 + pushl -3 + popr + jmp __362 +__363: + pushl 0 + pushl -3 + putf 2 + pushl -3 + popr + jmp __362 +__362: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } remprop(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_remprop: + asf 0 + jmp __366 +__365: + pushl -4 + getf 2 + getf 1 + getf 1 + pushl -3 + call _equal + drop 2 + pushr + pushg 11 + refeq + brf __368 + pushl -4 + getf 2 + getf 1 + getf 2 + popl -3 + pushl -4 + pushl -4 + getf 2 + getf 2 + putf 2 + pushl -3 + popr + jmp __364 +__368: + pushl -4 + getf 2 + popl -4 +__366: + pushl -4 + getf 2 + getf 0 + pushg 2 + eq + brt __365 +__367: + pushl -4 + getf 2 + popr + jmp __364 +__364: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } flagp(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_flagp: + asf 0 + pushl -3 + pushl -4 + getf 2 + call _member + drop 2 + pushr + popr + jmp __369 +__369: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } flag(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_flag: + asf 0 + pushl -3 + pushl -4 + getf 2 + call _member + drop 2 + pushr + pushg 11 + refeq + brf __371 + pushl -3 + popr + jmp __370 +__371: + pushl -4 + pushl -3 + pushl -4 + getf 2 + call _makeNode + drop 2 + pushr + putf 2 + pushl -3 + popr + jmp __370 +__370: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } remflag(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_remflag: + asf 0 + jmp __374 +__373: + pushl -3 + pushl -4 + getf 2 + getf 1 + call _equal + drop 2 + pushr + pushg 11 + refeq + brf __376 + pushl -4 + pushl -4 + getf 2 + getf 2 + putf 2 + pushl -3 + popr + jmp __372 +__376: + pushl -4 + getf 2 + popl -4 +__374: + pushl -4 + getf 2 + getf 0 + pushg 2 + eq + brt __373 +__375: + pushg 10 + popr + jmp __372 +__372: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } getd(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_getd: + asf 0 + pushl -3 + getf 0 + pushg 0 + ne + brf __378 + pushg 10 + popr + jmp __377 +__378: + pushl -3 + getf 3 + call _copyTree + drop 1 + pushr + popr + jmp __377 +__377: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } putd(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_putd: + asf 0 + pushl -4 + getf 0 + pushg 0 + ne + brf __380 + pushg 10 + popr + jmp __379 +__380: + pushl -4 + pushl -3 + call _copyTree + drop 1 + pushr + putf 3 + pushl -3 + popr + jmp __379 +__379: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } movd(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_movd: + asf 0 + pushl -4 + getf 0 + pushg 0 + ne + dup + brt __383 + drop 1 + pushl -3 + getf 0 + pushg 0 + ne +__383: + brf __382 + pushg 10 + popr + jmp __381 +__382: + pushl -3 + pushl -4 + getf 3 + putf 3 + pushl -3 + getf 3 + call _copyTree + drop 1 + pushr + popr + jmp __381 +__381: + rsf + ret + +// +// void addNumberToStringBuffer(record { String str; Integer len; }, Integer) +// +_addNumberToStringBuffer: + asf 2 + pushl -3 + pushc 0 + lt + brf __385 + pushl -4 + pushc 45 + call _addCharToStringBuffer + drop 2 + pushc 0 + pushl -3 + sub + popl -3 +__385: + pushl -3 + pushg 106 + div + popl 0 + pushl 0 + pushc 0 + ne + brf __386 + pushl -4 + pushl 0 + call _addNumberToStringBuffer + drop 2 +__386: + pushl -3 + pushg 106 + mod + popl 1 + pushl 1 + pushc 10 + lt + brf __387 + pushl -4 + pushc 48 + call _char2int + drop 1 + pushr + pushl 1 + add + call _int2char + drop 1 + pushr + call _addCharToStringBuffer + drop 2 + jmp __388 +__387: + pushl 0 + pushc 0 + eq + brf __389 + pushl -4 + pushc 48 + call _addCharToStringBuffer + drop 2 +__389: + pushl -4 + pushc 65 + call _char2int + drop 1 + pushr + pushl 1 + pushc 10 + sub + add + call _int2char + drop 1 + pushr + call _addCharToStringBuffer + drop 2 +__388: +__384: + rsf + ret + +// +// Integer countName(Character[]) +// +_countName: + asf 5 + pushc 0 + popl 0 + pushl -3 + getsz + popl 1 + pushc 0 + popl 2 + pushc 0 + popl 4 + jmp __392 +__391: + pushl -3 + pushl 2 + getfa + popl 3 + pushg 86 + getf 1 + pushg 10 + refeq + dup + brf __396 + drop 1 + pushl 3 + call _isSpecial + drop 1 + pushr +__396: + dup + brf __395 + drop 1 + pushc 1 + pushl 4 + sub +__395: + brf __394 + pushc 1 + popl 4 + pushl 0 + pushc 1 + add + popl 0 +__394: + pushl 0 + pushc 1 + add + popl 0 + pushl 3 + pushc 34 + eq + dup + brf __398 + drop 1 + pushl 4 +__398: + brf __397 + pushl 0 + pushc 1 + add + popl 0 +__397: + pushl 2 + pushc 1 + add + popl 2 +__392: + pushl 2 + pushl 1 + lt + brt __391 +__393: + pushl 4 + brf __399 + pushl 0 + pushc 1 + add + popl 0 +__399: + pushl 0 + popr + jmp __390 +__390: + rsf + ret + +// +// Integer countNumber(Integer) +// +_countNumber: + asf 3 + pushc 0 + popl 0 + pushl -3 + pushc 0 + lt + brf __401 + pushl 0 + pushc 1 + add + popl 0 + pushc 0 + pushl -3 + sub + popl -3 +__401: + pushl -3 + pushg 106 + div + popl 1 + pushl 1 + pushc 0 + ne + brf __402 + pushl 0 + pushl 1 + call _countNumber + drop 1 + pushr + add + popl 0 +__402: + pushl -3 + pushg 106 + mod + popl 2 + pushl 1 + pushc 0 + eq + dup + brf __404 + drop 1 + pushl 2 + pushc 10 + ge +__404: + brf __403 + pushl 0 + pushc 1 + add + popl 0 +__403: + pushl 0 + pushc 1 + add + popl 0 + pushl 0 + popr + jmp __400 +__400: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } pack(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_pack: + asf 2 + pushc 20 + call _newStringBuffer + drop 1 + pushr + popl 0 + jmp __407 +__406: + pushl -3 + getf 1 + getf 0 + pushg 0 + eq + brf __409 + pushl 0 + pushl -3 + getf 1 + getf 4 + call _addStringToStringBuffer + drop 2 + jmp __410 +__409: + pushl -3 + getf 1 + getf 0 + pushg 1 + eq + brf __411 + pushl 0 + pushl -3 + getf 1 + getf 5 + call _addNumberToStringBuffer + drop 2 +__411: +__410: + pushl -3 + getf 2 + popl -3 +__407: + pushl -3 + getf 0 + pushg 2 + eq + brt __406 +__408: + pushl 0 + call _stringBufferToString + drop 1 + pushr + popl 1 + pushl 1 + call _searchOblist + drop 1 + pushr + popr + jmp __405 +__405: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } unpack(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_unpack: + asf 5 + pushc 20 + call _newStringBuffer + drop 1 + pushr + popl 0 + pushl -3 + getf 0 + pushg 0 + eq + brf __413 + pushl 0 + pushl -3 + getf 4 + call _addStringToStringBuffer + drop 2 + jmp __414 +__413: + pushl -3 + getf 0 + pushg 1 + eq + brf __415 + pushl 0 + pushl -3 + getf 5 + call _addNumberToStringBuffer + drop 2 + jmp __416 +__415: + pushg 10 + popr + jmp __412 +__416: +__414: + pushl 0 + call _stringBufferToString + drop 1 + pushr + popl 1 + pushg 10 + pushg 10 + call _makeNode + drop 2 + pushr + popl 3 + pushl 3 + pushl 3 + putf 1 + pushc 0 + popl 2 + jmp __418 +__417: + pushl 1 + pushl 2 + getfa + call _toString + drop 1 + pushr + call _searchOblist + drop 1 + pushr + popl 4 + pushl 3 + getf 1 + pushl 4 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 3 + pushl 3 + getf 1 + getf 2 + putf 1 + pushl 2 + pushc 1 + add + popl 2 +__418: + pushl 2 + pushl 1 + getsz + lt + brt __417 +__419: + pushl 3 + getf 2 + popr + jmp __412 +__412: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } length(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_length: + asf 1 + pushl -3 + getf 0 + pushg 0 + eq + brf __421 + pushl -3 + getf 4 + call _countName + drop 1 + pushr + call _makeNumber + drop 1 + pushr + popr + jmp __420 +__421: + pushl -3 + getf 0 + pushg 1 + eq + brf __422 + pushl -3 + getf 5 + call _countNumber + drop 1 + pushr + call _makeNumber + drop 1 + pushr + popr + jmp __420 +__422: + pushc 0 + popl 0 + jmp __424 +__423: + pushl 0 + pushc 1 + add + popl 0 + pushl -3 + getf 2 + popl -3 +__424: + pushl -3 + getf 0 + pushg 2 + eq + brt __423 +__425: + pushl 0 + call _makeNumber + drop 1 + pushr + popr + jmp __420 +__420: + rsf + ret + +// +// void zeroDivideError() +// +_zeroDivideError: + asf 0 + pushc 17 + newa + dup + pushc 0 + pushc 90 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 82 + putfa + dup + pushc 3 + pushc 79 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 68 + putfa + dup + pushc 6 + pushc 105 + putfa + dup + pushc 7 + pushc 118 + putfa + dup + pushc 8 + pushc 105 + putfa + dup + pushc 9 + pushc 100 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 69 + putfa + dup + pushc 13 + pushc 114 + putfa + dup + pushc 14 + pushc 114 + putfa + dup + pushc 15 + pushc 111 + putfa + dup + pushc 16 + pushc 114 + putfa + pushc 0 + call _error + drop 2 +__426: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } minus(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_minus: + asf 0 + pushl -3 + getf 0 + pushg 1 + ne + brf __428 + pushg 10 + popr + jmp __427 +__428: + pushc 0 + pushl -3 + getf 5 + sub + call _makeNumber + drop 1 + pushr + popr + jmp __427 +__427: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } plus(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_plus: + asf 0 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __431 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__431: + brf __430 + pushg 10 + popr + jmp __429 +__430: + pushl -4 + getf 5 + pushl -3 + getf 5 + add + call _makeNumber + drop 1 + pushr + popr + jmp __429 +__429: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } difference(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_difference: + asf 0 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __434 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__434: + brf __433 + pushg 10 + popr + jmp __432 +__433: + pushl -4 + getf 5 + pushl -3 + getf 5 + sub + call _makeNumber + drop 1 + pushr + popr + jmp __432 +__432: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } times(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_times: + asf 0 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __437 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__437: + brf __436 + pushg 10 + popr + jmp __435 +__436: + pushl -4 + getf 5 + pushl -3 + getf 5 + mul + call _makeNumber + drop 1 + pushr + popr + jmp __435 +__435: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } quotient(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_quotient: + asf 2 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __440 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__440: + brf __439 + pushg 10 + popr + jmp __438 +__439: + pushl -3 + getf 5 + pushc 0 + eq + brf __441 + call _zeroDivideError + pushg 10 + popr + jmp __438 +__441: + pushl -4 + getf 5 + pushl -3 + getf 5 + div + popl 0 + pushl -4 + getf 5 + pushl -3 + getf 5 + mod + popl 1 + pushl 1 + pushc 0 + lt + brf __442 + pushl 0 + pushc 0 + lt + brf __443 + pushl 0 + pushc 1 + sub + popl 0 + jmp __444 +__443: + pushl 0 + pushc 1 + add + popl 0 +__444: +__442: + pushl 0 + call _makeNumber + drop 1 + pushr + popr + jmp __438 +__438: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } remainder(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_remainder: + asf 2 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __447 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__447: + brf __446 + pushg 10 + popr + jmp __445 +__446: + pushl -3 + getf 5 + pushc 0 + eq + brf __448 + call _zeroDivideError + pushg 10 + popr + jmp __445 +__448: + pushl -4 + getf 5 + pushl -3 + getf 5 + div + popl 0 + pushl -4 + getf 5 + pushl -3 + getf 5 + mod + popl 1 + pushl 1 + pushc 0 + lt + brf __449 + pushl 0 + pushc 0 + lt + brf __450 + pushl 1 + pushl -3 + getf 5 + add + popl 1 + jmp __451 +__450: + pushl 1 + pushl -3 + getf 5 + sub + popl 1 +__451: +__449: + pushl 1 + call _makeNumber + drop 1 + pushr + popr + jmp __445 +__445: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } divide(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_divide: + asf 2 + pushl -4 + getf 0 + pushg 1 + ne + dup + brt __454 + drop 1 + pushl -3 + getf 0 + pushg 1 + ne +__454: + brf __453 + pushg 10 + popr + jmp __452 +__453: + pushl -3 + getf 5 + pushc 0 + eq + brf __455 + call _zeroDivideError + pushg 10 + popr + jmp __452 +__455: + pushl -4 + getf 5 + pushl -3 + getf 5 + div + popl 0 + pushl -4 + getf 5 + pushl -3 + getf 5 + mod + popl 1 + pushl 1 + pushc 0 + lt + brf __456 + pushl 0 + pushc 0 + lt + brf __457 + pushl 0 + pushc 1 + sub + popl 0 + pushl 1 + pushl -3 + getf 5 + add + popl 1 + jmp __458 +__457: + pushl 0 + pushc 1 + add + popl 0 + pushl 1 + pushl -3 + getf 5 + sub + popl 1 +__458: +__456: + pushl 0 + call _makeNumber + drop 1 + pushr + pushl 1 + call _makeNumber + drop 1 + pushr + call _makeNode + drop 2 + pushr + popr + jmp __452 +__452: + rsf + ret + +// +// void unread(Character) +// +_unread: + asf 0 + pushc 1 + popg 108 + pushl -3 + popg 109 +__459: + rsf + ret + +// +// Character readChar() +// +_readChar: + asf 1 + pushg 108 + brf __461 + pushc 0 + popg 108 + pushg 109 + popr + jmp __460 +__461: + pushg 79 + getf 1 + pushg 10 + refeq + brf __462 + pushg 82 + getf 1 + pushg 10 + refeq + brf __464 + call _readCharacter + pushr + popl 0 + jmp __465 +__464: + call _readCharacter + pushr + popl 0 +__465: + jmp __463 +__462: + pushc 32 + popl 0 + pushg 83 + getf 1 + pushg 10 + refne + brf __466 + pushl 0 + call _printChar + drop 1 +__466: +__463: + pushg 81 + getf 1 + pushg 10 + refeq + brf __467 + pushl 0 + call _toUpper + drop 1 + pushr + popl 0 +__467: + pushl 0 + popr + jmp __460 +__460: + rsf + ret + +// +// Character[] readToken(Boolean[], Boolean[]) +// +_readToken: + asf 3 + pushc 0 + popl 0 + call _readChar + pushr + popl 1 + jmp __470 +__469: + pushl 1 + pushc 37 + eq + brf __472 + jmp __474 +__473: +__474: + call _readChar + pushr + pushc 37 + ne + brt __473 +__475: +__472: + call _readChar + pushr + popl 1 +__470: + pushl 1 + pushc 37 + eq + dup + brt __476 + drop 1 + pushl -4 + pushl 1 + call _char2int + drop 1 + pushr + getfa +__476: + brt __469 +__471: + pushl -3 + pushl 1 + call _char2int + drop 1 + pushr + getfa + brf __477 + pushc 1 + popg 107 + pushl 1 + call _toString + drop 1 + pushr + popr + jmp __468 +__477: + pushc 20 + call _newStringBuffer + drop 1 + pushr + popl 2 + jmp __479 +__478: + pushl 0 + brf __481 + pushl 1 + pushc 34 + eq + brf __483 + call _readChar + pushr + popl 1 + pushl 1 + pushc 34 + eq + brf __485 + pushl 2 + pushl 1 + call _addCharToStringBuffer + drop 2 + call _readChar + pushr + popl 1 + jmp __486 +__485: + pushc 0 + popl 0 +__486: + jmp __484 +__483: + pushl 2 + pushl 1 + call _addCharToStringBuffer + drop 2 + call _readChar + pushr + popl 1 +__484: + jmp __482 +__481: + pushl 1 + pushc 34 + eq + brf __487 + pushc 1 + popl 0 + call _readChar + pushr + popl 1 + jmp __488 +__487: + pushl 1 + pushc 37 + eq + brf __489 + jmp __492 +__491: +__492: + call _readChar + pushr + pushc 37 + ne + brt __491 +__493: + call _readChar + pushr + popl 1 + jmp __490 +__489: + pushl -4 + pushl 1 + call _char2int + drop 1 + pushr + getfa + dup + brt __496 + drop 1 + pushl -3 + pushl 1 + call _char2int + drop 1 + pushr + getfa +__496: + brf __494 + pushl 1 + call _unread + drop 1 + pushc 0 + popg 107 + pushl 2 + call _stringBufferToString + drop 1 + pushr + popr + jmp __468 + jmp __495 +__494: + pushl 2 + pushl 1 + call _addCharToStringBuffer + drop 2 + call _readChar + pushr + popl 1 +__495: +__490: +__488: +__482: +__479: + pushc 1 + brt __478 +__480: +__468: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } tokenToAtom(Character[]) +// +_tokenToAtom: + asf 7 + pushc 1 + popl 0 + pushc 0 + popl 1 + pushc 0 + popl 2 + pushc 0 + popl 3 + pushl 3 + pushl -3 + getsz + lt + dup + brf __499 + drop 1 + pushl -3 + pushl 3 + getfa + pushc 45 + eq +__499: + brf __498 + pushc 1 + popl 1 + pushl 3 + pushc 1 + add + popl 3 +__498: + pushl 3 + pushl -3 + getsz + lt + dup + brf __502 + drop 1 + pushl -3 + pushl 3 + getfa + call _isDigit + drop 1 + pushr +__502: + brf __500 + jmp __504 +__503: + pushl -3 + pushl 3 + getfa + popl 4 + pushl 3 + pushc 1 + add + popl 3 + pushl 4 + call _isDigit + drop 1 + pushr + brf __506 + pushl 4 + call _char2int + drop 1 + pushr + pushc 48 + call _char2int + drop 1 + pushr + sub + popl 5 + pushl 5 + pushg 106 + lt + brf __508 + pushl 2 + pushg 106 + mul + pushl 5 + add + popl 2 + jmp __509 +__508: + pushc 0 + popl 0 + jmp __505 +__509: + jmp __507 +__506: + pushl 4 + call _isAlpha + drop 1 + pushr + brf __510 + pushl 4 + call _toUpper + drop 1 + pushr + popl 4 + pushl 4 + call _char2int + drop 1 + pushr + pushc 65 + call _char2int + drop 1 + pushr + sub + popl 5 + pushl 5 + pushg 106 + lt + brf __512 + pushl 2 + pushg 106 + mul + pushl 5 + add + popl 2 + jmp __513 +__512: + pushc 0 + popl 0 + jmp __505 +__513: + jmp __511 +__510: + pushc 0 + popl 0 + jmp __505 +__511: +__507: +__504: + pushl 3 + pushl -3 + getsz + lt + brt __503 +__505: + jmp __501 +__500: + pushc 0 + popl 0 +__501: + pushl 0 + brf __514 + pushl 1 + brf __516 + pushc 0 + pushl 2 + sub + popl 2 +__516: + pushl 2 + call _makeNumber + drop 1 + pushr + popl 6 + jmp __515 +__514: + pushl -3 + call _searchOblist + drop 1 + pushr + popl 6 +__515: + pushg 80 + pushl 6 + putf 1 + pushl 6 + popr + jmp __497 +__497: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } read0(Character[]) +// +_read0: + asf 1 + jmp __519 +__518: + pushc 1 + pushg 107 + sub + brf __521 + pushl -3 + call _tokenToAtom + drop 1 + pushr + popr + jmp __517 +__521: + pushl -3 + pushc 0 + getfa + popl 0 + pushl 0 + pushc 40 + eq + brf __522 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + pushl -3 + call _readList + drop 1 + pushr + popr + jmp __517 + jmp __523 +__522: + pushl 0 + pushc 91 + eq + brf __524 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + pushl -3 + call _readBracket + drop 1 + pushr + popr + jmp __517 + jmp __525 +__524: + pushl 0 + pushc 41 + eq + dup + brt __529 + drop 1 + pushl 0 + pushc 93 + eq +__529: + dup + brt __528 + drop 1 + pushl 0 + pushc 46 + eq +__528: + brf __526 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + jmp __527 +__526: + pushc 20 + newa + dup + pushc 0 + pushc 105 + putfa + dup + pushc 1 + pushc 110 + putfa + dup + pushc 2 + pushc 116 + putfa + dup + pushc 3 + pushc 101 + putfa + dup + pushc 4 + pushc 114 + putfa + dup + pushc 5 + pushc 110 + putfa + dup + pushc 6 + pushc 97 + putfa + dup + pushc 7 + pushc 108 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 114 + putfa + dup + pushc 10 + pushc 101 + putfa + dup + pushc 11 + pushc 97 + putfa + dup + pushc 12 + pushc 100 + putfa + dup + pushc 13 + pushc 48 + putfa + dup + pushc 14 + pushc 32 + putfa + dup + pushc 15 + pushc 101 + putfa + dup + pushc 16 + pushc 114 + putfa + dup + pushc 17 + pushc 114 + putfa + dup + pushc 18 + pushc 111 + putfa + dup + pushc 19 + pushc 114 + putfa + pushc 1 + call _error + drop 2 +__527: +__525: +__523: +__519: + pushc 1 + brt __518 +__520: +__517: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } readList(Character[]) +// +_readList: + asf 2 + pushg 10 + pushg 10 + call _makeNode + drop 2 + pushr + popl 0 + pushl 0 + pushl 0 + putf 1 + jmp __532 +__531: + pushg 107 + dup + brf __536 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 41 + eq +__536: + brf __534 + pushl 0 + getf 2 + popr + jmp __530 + jmp __535 +__534: + pushg 107 + dup + brf __539 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 93 + eq +__539: + brf __537 + pushc 93 + call _unread + drop 1 + pushl 0 + getf 2 + popr + jmp __530 + jmp __538 +__537: + pushg 107 + dup + brf __542 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 46 + eq +__542: + brf __540 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + pushl -3 + call _read0 + drop 1 + pushr + popl 1 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + pushg 107 + dup + brf __545 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 41 + eq +__545: + brf __543 + pushl 0 + getf 1 + pushl 1 + putf 2 + pushl 0 + getf 2 + popr + jmp __530 + jmp __544 +__543: + pushg 107 + dup + brf __548 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 93 + eq +__548: + brf __546 + pushc 93 + call _unread + drop 1 + pushl 0 + getf 1 + pushl 1 + putf 2 + pushl 0 + getf 2 + popr + jmp __530 + jmp __547 +__546: + pushl 0 + getf 1 + pushl 1 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 0 + pushl 0 + getf 1 + getf 2 + putf 1 +__547: +__544: + jmp __541 +__540: + pushl -3 + call _read0 + drop 1 + pushr + popl 1 + pushl 0 + getf 1 + pushl 1 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 0 + pushl 0 + getf 1 + getf 2 + putf 1 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 +__541: +__538: +__535: +__532: + pushc 1 + brt __531 +__533: +__530: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } readBracket(Character[]) +// +_readBracket: + asf 2 + pushl -3 + call _readList + drop 1 + pushr + popl 0 + jmp __551 +__550: + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl -3 + pushg 107 + dup + brf __555 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 41 + eq +__555: + brf __553 + pushl 0 + popr + jmp __549 + jmp __554 +__553: + pushg 107 + dup + brf __558 + drop 1 + pushl -3 + pushc 0 + getfa + pushc 93 + eq +__558: + brf __556 + pushl 0 + popr + jmp __549 + jmp __557 +__556: + pushl -3 + call _readList + drop 1 + pushr + popl 1 + pushl 0 + pushl 1 + call _makeNode + drop 2 + pushr + popl 0 +__557: +__554: +__551: + pushc 1 + brt __550 +__552: +__549: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } rds(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_rds: + asf 0 + pushg 10 + popr + jmp __559 +__559: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } ratom() +// +_ratom: + asf 1 + pushg 3 + pushg 4 + call _readToken + drop 2 + pushr + popl 0 + pushl 0 + call _tokenToAtom + drop 1 + pushr + popr + jmp __560 +__560: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } read() +// +_read: + asf 1 + pushg 5 + pushg 6 + call _readToken + drop 2 + pushr + popl 0 + pushl 0 + call _read0 + drop 1 + pushr + popr + jmp __561 +__561: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } readch() +// +_readch: + asf 4 + call _readChar + pushr + popl 0 + pushl 0 + call _isDigit + drop 1 + pushr + brf __563 + pushl 0 + call _char2int + drop 1 + pushr + pushc 48 + call _char2int + drop 1 + pushr + sub + popl 1 + pushl 1 + pushg 106 + lt + brf __565 + pushl 1 + call _makeNumber + drop 1 + pushr + popl 3 + jmp __566 +__565: + pushl 0 + call _toString + drop 1 + pushr + popl 2 + pushl 2 + call _searchOblist + drop 1 + pushr + popl 3 +__566: + jmp __564 +__563: + pushl 0 + call _toString + drop 1 + pushr + popl 2 + pushl 2 + call _searchOblist + drop 1 + pushr + popl 3 +__564: + pushg 80 + pushl 3 + putf 1 + pushl 3 + popr + jmp __562 +__562: + rsf + ret + +// +// void putConsole(Character) +// +_putConsole: + asf 0 + pushl -3 + call _writeCharacter + drop 1 +__567: + rsf + ret + +// +// void printChar(Character) +// +_printChar: + asf 1 + pushg 85 + getf 1 + pushg 10 + refeq + brf __569 + pushl -3 + call _toLower + drop 1 + pushr + popl -3 +__569: + pushg 84 + getf 1 + pushg 10 + refeq + brf __570 + pushl -3 + call _putConsole + drop 1 + jmp __571 +__570: + pushg 83 + getf 1 + pushg 10 + refne + brf __572 + pushl -3 + call _putConsole + drop 1 +__572: +__571: + pushl -3 + call _char2int + drop 1 + pushr + popl 0 + pushl 0 + pushc 8 + eq + brf __573 + pushg 104 + pushc 1 + sub + popg 104 + jmp __574 +__573: + pushl 0 + pushc 9 + eq + brf __575 + pushg 104 + pushc 8 + add + pushc 8 + div + pushc 8 + mul + popg 104 + jmp __576 +__575: + pushl 0 + pushc 10 + eq + brf __577 + pushc 0 + popg 104 + jmp __578 +__577: + pushl 0 + pushc 11 + eq + brf __579 + pushc 0 + popg 104 + jmp __580 +__579: + pushl 0 + pushc 12 + eq + brf __581 + pushc 0 + popg 104 + jmp __582 +__581: + pushl 0 + pushc 13 + eq + brf __583 + pushc 0 + popg 104 + jmp __584 +__583: + pushg 104 + pushc 1 + add + popg 104 +__584: +__582: +__580: +__578: +__576: +__574: +__568: + rsf + ret + +// +// Boolean isSpecial(Character) +// +_isSpecial: + asf 1 + pushl -3 + call _char2int + drop 1 + pushr + popl 0 + pushg 7 + pushl 0 + getfa + dup + brt __587 + drop 1 + pushg 6 + pushl 0 + getfa +__587: + dup + brt __586 + drop 1 + pushg 5 + pushl 0 + getfa +__586: + popr + jmp __585 +__585: + rsf + ret + +// +// void printName(Character[]) +// +_printName: + asf 4 + pushl -3 + getsz + popl 0 + pushc 0 + popl 1 + pushc 0 + popl 3 + jmp __590 +__589: + pushl -3 + pushl 1 + getfa + popl 2 + pushg 86 + getf 1 + pushg 10 + refeq + dup + brf __594 + drop 1 + pushl 2 + call _isSpecial + drop 1 + pushr +__594: + dup + brf __593 + drop 1 + pushc 1 + pushl 3 + sub +__593: + brf __592 + pushc 1 + popl 3 + pushc 34 + call _printChar + drop 1 +__592: + pushl 2 + call _printChar + drop 1 + pushl 2 + pushc 34 + eq + dup + brf __596 + drop 1 + pushl 3 +__596: + brf __595 + pushc 34 + call _printChar + drop 1 +__595: + pushl 1 + pushc 1 + add + popl 1 +__590: + pushl 1 + pushl 0 + lt + brt __589 +__591: + pushl 3 + brf __597 + pushc 34 + call _printChar + drop 1 +__597: +__588: + rsf + ret + +// +// void printNumber(Integer) +// +_printNumber: + asf 2 + pushl -3 + pushc 0 + lt + brf __599 + pushc 45 + call _printChar + drop 1 + pushc 0 + pushl -3 + sub + popl -3 +__599: + pushl -3 + pushg 106 + div + popl 0 + pushl 0 + pushc 0 + ne + brf __600 + pushl 0 + call _printNumber + drop 1 +__600: + pushl -3 + pushg 106 + mod + popl 1 + pushl 1 + pushc 10 + lt + brf __601 + pushc 48 + call _char2int + drop 1 + pushr + pushl 1 + add + call _int2char + drop 1 + pushr + call _printChar + drop 1 + jmp __602 +__601: + pushl 0 + pushc 0 + eq + brf __603 + pushc 48 + call _printChar + drop 1 +__603: + pushc 65 + call _char2int + drop 1 + pushr + pushl 1 + pushc 10 + sub + add + call _int2char + drop 1 + pushr + call _printChar + drop 1 +__602: +__598: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } wrs(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_wrs: + asf 0 + pushg 10 + popr + jmp __604 +__604: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } print(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_print: + asf 0 + pushl -3 + call _prin1 + drop 1 + pushc 10 + call _printChar + drop 1 + pushl -3 + popr + jmp __605 +__605: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } prin1(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_prin1: + asf 0 + pushl -3 + getf 0 + pushg 0 + eq + brf __607 + pushl -3 + getf 4 + call _printName + drop 1 + pushl -3 + popr + jmp __606 +__607: + pushl -3 + getf 0 + pushg 1 + eq + brf __608 + pushl -3 + getf 5 + call _printNumber + drop 1 + pushl -3 + popr + jmp __606 +__608: + pushc 40 + call _printChar + drop 1 + pushl -3 + getf 1 + call _prin1 + drop 1 + pushl -3 + getf 2 + popl -3 + jmp __610 +__609: + pushc 32 + call _printChar + drop 1 + pushl -3 + getf 1 + call _prin1 + drop 1 + pushl -3 + getf 2 + popl -3 +__610: + pushl -3 + getf 0 + pushg 2 + eq + brt __609 +__611: + pushl -3 + pushg 10 + refne + brf __612 + pushc 32 + call _printChar + drop 1 + pushc 46 + call _printChar + drop 1 + pushc 32 + call _printChar + drop 1 + pushl -3 + call _prin1 + drop 1 +__612: + pushc 41 + call _printChar + drop 1 + pushl -3 + popr + jmp __606 +__606: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } terpri(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_terpri: + asf 1 + pushl -3 + getf 0 + pushg 1 + eq + brf __614 + pushl -3 + getf 5 + popl 0 + pushl 0 + pushc 0 + lt + dup + brt __616 + drop 1 + pushl 0 + pushc 255 + gt +__616: + brf __615 + pushc 10 + call _printChar + drop 1 + pushg 10 + popr + jmp __613 +__615: + jmp __618 +__617: + pushc 10 + call _printChar + drop 1 + pushl 0 + pushc 1 + sub + popl 0 +__618: + pushl 0 + pushc 0 + gt + brt __617 +__619: + pushg 10 + popr + jmp __613 +__614: + pushc 10 + call _printChar + drop 1 + pushg 10 + popr + jmp __613 +__613: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } spaces(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_spaces: + asf 1 + pushl -3 + getf 0 + pushg 1 + eq + brf __621 + pushl -3 + getf 5 + popl 0 + pushl 0 + pushc 0 + lt + dup + brt __623 + drop 1 + pushl 0 + pushc 255 + gt +__623: + brf __622 + pushg 104 + call _makeNumber + drop 1 + pushr + popr + jmp __620 +__622: + jmp __625 +__624: + pushc 32 + call _printChar + drop 1 + pushl 0 + pushc 1 + sub + popl 0 +__625: + pushl 0 + pushc 0 + gt + brt __624 +__626: + pushg 104 + call _makeNumber + drop 1 + pushr + popr + jmp __620 +__621: + pushg 104 + call _makeNumber + drop 1 + pushr + popr + jmp __620 +__620: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } linelength(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_linelength: + asf 2 + pushl -3 + getf 0 + pushg 1 + eq + brf __628 + pushl -3 + getf 5 + popl 0 + pushl 0 + pushc 11 + gt + dup + brf __630 + drop 1 + pushl 0 + pushc 256 + lt +__630: + brf __629 + pushg 105 + call _makeNumber + drop 1 + pushr + popl 1 + pushl 0 + popg 105 + pushl 1 + popr + jmp __627 +__629: + pushg 105 + call _makeNumber + drop 1 + pushr + popr + jmp __627 +__628: + pushg 105 + call _makeNumber + drop 1 + pushr + popr + jmp __627 +__627: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } radix(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_radix: + asf 2 + pushl -3 + getf 0 + pushg 1 + eq + brf __632 + pushl -3 + getf 5 + popl 0 + pushl 0 + pushc 1 + gt + dup + brf __634 + drop 1 + pushl 0 + pushc 37 + lt +__634: + brf __633 + pushg 106 + call _makeNumber + drop 1 + pushr + popl 1 + pushl 0 + popg 106 + pushl 1 + popr + jmp __631 +__633: + pushg 106 + call _makeNumber + drop 1 + pushr + popr + jmp __631 +__632: + pushg 106 + call _makeNumber + drop 1 + pushr + popr + jmp __631 +__631: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } evlis(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_evlis: + asf 2 + pushg 10 + pushg 10 + call _makeNode + drop 2 + pushr + popl 0 + pushl 0 + pushl 0 + putf 1 + jmp __637 +__636: + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 1 + pushl 0 + getf 1 + pushl 1 + pushg 10 + call _makeNode + drop 2 + pushr + putf 2 + pushl 0 + pushl 0 + getf 1 + getf 2 + putf 1 + pushl -3 + getf 2 + popl -3 +__637: + pushl -3 + getf 0 + pushg 2 + eq + brt __636 +__638: + pushl 0 + getf 1 + pushl -3 + putf 2 + pushl 0 + getf 2 + popr + jmp __635 +__635: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } evalbody(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_evalbody: + asf 1 + pushl -4 + popl 0 + jmp __641 +__640: + pushl -3 + getf 1 + getf 0 + pushg 2 + ne + dup + brt __645 + drop 1 + pushl -3 + getf 1 + getf 1 + getf 0 + pushg 2 + ne +__645: + brf __643 + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl -3 + getf 2 + popl -3 + jmp __644 +__643: + pushl -3 + getf 1 + getf 1 + getf 1 + getf 0 + pushg 2 + ne + brf __646 + pushl -3 + getf 1 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl 0 + pushg 10 + refeq + brf __648 + pushl -3 + getf 2 + popl -3 + jmp __649 +__648: + pushl -3 + getf 1 + getf 2 + popl -3 +__649: + jmp __647 +__646: + pushl 0 + pushl -3 + getf 1 + call _evalbody + drop 2 + pushr + popl 0 + pushl -3 + getf 2 + popl -3 +__647: +__644: +__641: + pushl -3 + getf 0 + pushg 2 + eq + brt __640 +__642: + pushl 0 + popr + jmp __639 +__639: + rsf + ret + +// +// void bind(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_bind: + asf 0 + pushl -4 + getf 0 + pushg 2 + ne + brf __651 + pushl -4 + pushg 10 + refne + brf __652 + pushl -4 + getf 1 + pushg 9 + call _makeNode + drop 2 + pushr + popg 9 + pushl -4 + pushl -3 + putf 1 +__652: + jmp __650 +__651: + jmp __654 +__653: + pushl -4 + getf 1 + getf 1 + pushg 9 + call _makeNode + drop 2 + pushr + popg 9 + pushl -4 + getf 1 + pushl -3 + getf 1 + putf 1 + pushl -4 + getf 2 + popl -4 + pushl -3 + getf 2 + popl -3 +__654: + pushl -4 + getf 0 + pushg 2 + eq + dup + brf __656 + drop 1 + pushl -3 + getf 0 + pushg 2 + eq +__656: + brt __653 +__655: + jmp __658 +__657: + pushl -4 + getf 1 + getf 1 + pushg 9 + call _makeNode + drop 2 + pushr + popg 9 + pushl -4 + getf 1 + pushg 10 + putf 1 + pushl -4 + getf 2 + popl -4 +__658: + pushl -4 + getf 0 + pushg 2 + eq + brt __657 +__659: +__650: + rsf + ret + +// +// void unbind(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_unbind: + asf 1 + pushl -3 + getf 0 + pushg 2 + ne + brf __661 + pushl -3 + pushg 10 + refne + brf __662 + pushl -3 + pushg 9 + getf 1 + putf 1 + pushg 9 + getf 2 + popg 9 +__662: + jmp __660 +__661: + pushg 10 + popl 0 + jmp __664 +__663: + pushl -3 + getf 1 + pushl 0 + call _makeNode + drop 2 + pushr + popl 0 + pushl -3 + getf 2 + popl -3 +__664: + pushl -3 + getf 0 + pushg 2 + eq + brt __663 +__665: + jmp __667 +__666: + pushl 0 + getf 1 + pushg 9 + getf 1 + putf 1 + pushg 9 + getf 2 + popg 9 + pushl 0 + getf 2 + popl 0 +__667: + pushl 0 + getf 0 + pushg 2 + eq + brt __666 +__668: +__660: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } quote(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_quote: + asf 0 + pushl -3 + getf 1 + popr + jmp __669 +__669: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } eval(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_eval: + asf 1 + pushl -3 + getf 0 + pushg 2 + ne + brf __671 + pushl -3 + getf 1 + popr + jmp __670 +__671: + pushl -3 + getf 1 + getf 0 + pushg 0 + eq + brf __672 + pushl -3 + getf 1 + getf 3 + pushg 10 + refeq + brf __673 + pushl -3 + getf 1 + pushl -3 + getf 1 + getf 1 + refeq + brf __674 + pushl -3 + call _evlis + drop 1 + pushr + popr + jmp __670 +__674: + pushl -3 + getf 1 + getf 1 + pushl -3 + getf 2 + call _makeNode + drop 2 + pushr + popl 0 + pushl 0 + call _eval + drop 1 + pushr + popr + jmp __670 +__673: + pushl -3 + getf 1 + getf 3 + getf 1 + pushg 12 + refeq + dup + brt __676 + drop 1 + pushl -3 + getf 1 + getf 3 + getf 1 + pushg 14 + refeq +__676: + brf __675 + pushl -3 + getf 2 + call _evlis + drop 1 + pushr + popl 0 + pushl -3 + getf 1 + pushl 0 + call _apply + drop 2 + pushr + popr + jmp __670 +__675: + pushl -3 + getf 1 + getf 3 + getf 1 + pushg 13 + refeq + dup + brt __678 + drop 1 + pushl -3 + getf 1 + getf 3 + getf 1 + pushg 15 + refeq +__678: + brf __677 + pushl -3 + getf 1 + pushl -3 + getf 2 + call _apply + drop 2 + pushr + popr + jmp __670 +__677: + pushl -3 + call _evlis + drop 1 + pushr + popr + jmp __670 +__672: + pushl -3 + getf 1 + getf 1 + pushg 14 + refeq + brf __679 + pushl -3 + getf 2 + call _evlis + drop 1 + pushr + popl 0 + pushl -3 + getf 1 + pushl 0 + call _apply + drop 2 + pushr + popr + jmp __670 +__679: + pushl -3 + getf 1 + getf 1 + pushg 15 + refeq + brf __680 + pushl -3 + getf 1 + pushl -3 + getf 2 + call _apply + drop 2 + pushr + popr + jmp __670 +__680: + pushl -3 + call _evlis + drop 1 + pushr + popr + jmp __670 +__670: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } apply(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_apply: + asf 1 + pushl -4 + getf 0 + pushg 0 + eq + brf __682 + pushl -4 + getf 3 + pushg 10 + refeq + brf __683 + pushl -4 + pushl -4 + getf 1 + refeq + brf __684 + pushg 10 + popr + jmp __681 +__684: + pushl -4 + getf 1 + pushl -3 + call _apply + drop 2 + pushr + popr + jmp __681 +__683: + pushl -4 + getf 3 + getf 1 + pushg 12 + refeq + brf __685 + pushl -3 + getf 0 + pushg 2 + ne + brf __686 + pushl -4 + getf 3 + getf 2 + getf 5 + pushg 10 + pushg 10 + pushg 10 + call _exec + drop 4 + pushr + popr + jmp __681 +__686: + pushl -3 + getf 2 + getf 0 + pushg 2 + ne + brf __687 + pushl -4 + getf 3 + getf 2 + getf 5 + pushl -3 + getf 1 + pushg 10 + pushg 10 + call _exec + drop 4 + pushr + popr + jmp __681 +__687: + pushl -3 + getf 2 + getf 2 + getf 0 + pushg 2 + ne + brf __688 + pushl -4 + getf 3 + getf 2 + getf 5 + pushl -3 + getf 1 + pushl -3 + getf 2 + getf 1 + pushg 10 + call _exec + drop 4 + pushr + popr + jmp __681 +__688: + pushl -4 + getf 3 + getf 2 + getf 5 + pushl -3 + getf 1 + pushl -3 + getf 2 + getf 1 + pushl -3 + getf 2 + getf 2 + getf 1 + call _exec + drop 4 + pushr + popr + jmp __681 +__685: + pushl -4 + getf 3 + getf 1 + pushg 13 + refeq + brf __689 + pushl -4 + getf 3 + getf 2 + getf 5 + pushl -3 + pushg 10 + pushg 10 + call _exec + drop 4 + pushr + popr + jmp __681 +__689: + pushl -4 + getf 3 + getf 1 + pushg 14 + refeq + dup + brt __691 + drop 1 + pushl -4 + getf 3 + getf 1 + pushg 15 + refeq +__691: + brf __690 + pushl -4 + getf 3 + getf 2 + getf 1 + pushl -3 + call _bind + drop 2 + pushg 10 + pushl -4 + getf 3 + getf 2 + getf 2 + call _evalbody + drop 2 + pushr + popl 0 + pushl -4 + getf 3 + getf 2 + getf 1 + call _unbind + drop 1 + pushl 0 + popr + jmp __681 +__690: + pushg 10 + popr + jmp __681 +__682: + pushl -4 + getf 1 + pushg 14 + refeq + dup + brt __693 + drop 1 + pushl -4 + getf 1 + pushg 15 + refeq +__693: + brf __692 + pushl -4 + getf 2 + getf 1 + pushl -3 + call _bind + drop 2 + pushg 10 + pushl -4 + getf 2 + getf 2 + call _evalbody + drop 2 + pushr + popl 0 + pushl -4 + getf 2 + getf 1 + call _unbind + drop 1 + pushl 0 + popr + jmp __681 +__692: + pushg 10 + popr + jmp __681 +__681: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } cond(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_cond: + asf 1 + jmp __696 +__695: + pushl -3 + getf 1 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl 0 + pushg 10 + refne + brf __698 + pushl 0 + pushl -3 + getf 1 + getf 2 + call _evalbody + drop 2 + pushr + popr + jmp __694 +__698: + pushl -3 + getf 2 + popl -3 +__696: + pushl -3 + getf 0 + pushg 2 + eq + brt __695 +__697: + pushg 10 + popr + jmp __694 +__694: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } loop(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_loop: + asf 2 + jmp __701 +__700: + pushl -3 + popl 0 + jmp __704 +__703: + pushl 0 + getf 1 + getf 0 + pushg 2 + ne + dup + brt __708 + drop 1 + pushl 0 + getf 1 + getf 1 + getf 0 + pushg 2 + ne +__708: + brf __706 + pushl 0 + getf 1 + call _eval + drop 1 + pushl 0 + getf 2 + popl 0 + jmp __707 +__706: + pushl 0 + getf 1 + getf 1 + getf 1 + getf 0 + pushg 2 + ne + brf __709 + pushl 0 + getf 1 + getf 1 + call _eval + drop 1 + pushr + popl 1 + pushl 1 + pushg 10 + refne + brf __711 + pushl 1 + pushl 0 + getf 1 + getf 2 + call _evalbody + drop 2 + pushr + popr + jmp __699 +__711: + pushl 0 + getf 2 + popl 0 + jmp __710 +__709: + pushg 10 + pushl 0 + getf 1 + call _evalbody + drop 2 + pushl 0 + getf 2 + popl 0 +__710: +__707: +__704: + pushl 0 + getf 0 + pushg 2 + eq + brt __703 +__705: +__701: + pushc 1 + brt __700 +__702: +__699: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } prog1(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_prog1: + asf 1 + pushl -3 + getf 1 + call _eval + drop 1 + pushr + popl 0 + pushl -3 + getf 2 + popl -3 + jmp __714 +__713: + pushl -3 + getf 1 + call _eval + drop 1 + pushl -3 + getf 2 + popl -3 +__714: + pushl -3 + getf 0 + pushg 2 + eq + brt __713 +__715: + pushl 0 + popr + jmp __712 +__712: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } driver() +// +_driver: + asf 2 + pushg 79 + pushg 10 + putf 1 + pushg 84 + pushg 10 + putf 1 + pushg 83 + pushg 10 + putf 1 + pushg 82 + pushg 82 + putf 1 + jmp __718 +__717: + pushc 10 + call _printChar + drop 1 + pushc 36 + call _printChar + drop 1 + pushc 10 + call _printChar + drop 1 + call _read + pushr + popl 0 + pushl 0 + call _eval + drop 1 + pushr + popl 1 + pushl 1 + call _print + drop 1 +__718: + pushc 1 + brt __717 +__719: + pushg 10 + popr + jmp __716 +__716: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } reclaim() +// +_reclaim: + asf 0 + pushc 23 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 67 + putfa + dup + pushc 3 + pushc 76 + putfa + dup + pushc 4 + pushc 65 + putfa + dup + pushc 5 + pushc 73 + putfa + dup + pushc 6 + pushc 77 + putfa + dup + pushc 7 + pushc 32 + putfa + dup + pushc 8 + pushc 110 + putfa + dup + pushc 9 + pushc 111 + putfa + dup + pushc 10 + pushc 116 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 105 + putfa + dup + pushc 13 + pushc 109 + putfa + dup + pushc 14 + pushc 112 + putfa + dup + pushc 15 + pushc 108 + putfa + dup + pushc 16 + pushc 101 + putfa + dup + pushc 17 + pushc 109 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 110 + putfa + dup + pushc 20 + pushc 116 + putfa + dup + pushc 21 + pushc 101 + putfa + dup + pushc 22 + pushc 100 + putfa + pushc 0 + call _error + drop 2 + pushg 10 + popr + jmp __720 +__720: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } save(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_save: + asf 0 + pushc 20 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 86 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 110 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 116 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 105 + putfa + dup + pushc 10 + pushc 109 + putfa + dup + pushc 11 + pushc 112 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 109 + putfa + dup + pushc 15 + pushc 101 + putfa + dup + pushc 16 + pushc 110 + putfa + dup + pushc 17 + pushc 116 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 100 + putfa + pushc 0 + call _error + drop 2 + pushg 10 + popr + jmp __721 +__721: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } load(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_load: + asf 0 + pushc 20 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 32 + putfa + dup + pushc 5 + pushc 110 + putfa + dup + pushc 6 + pushc 111 + putfa + dup + pushc 7 + pushc 116 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 105 + putfa + dup + pushc 10 + pushc 109 + putfa + dup + pushc 11 + pushc 112 + putfa + dup + pushc 12 + pushc 108 + putfa + dup + pushc 13 + pushc 101 + putfa + dup + pushc 14 + pushc 109 + putfa + dup + pushc 15 + pushc 101 + putfa + dup + pushc 16 + pushc 110 + putfa + dup + pushc 17 + pushc 116 + putfa + dup + pushc 18 + pushc 101 + putfa + dup + pushc 19 + pushc 100 + putfa + pushc 0 + call _error + drop 2 + pushg 10 + popr + jmp __722 +__722: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } system() +// +_system: + asf 0 + pushc 31 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 84 + putfa + dup + pushc 2 + pushc 104 + putfa + dup + pushc 3 + pushc 97 + putfa + dup + pushc 4 + pushc 110 + putfa + dup + pushc 5 + pushc 107 + putfa + dup + pushc 6 + pushc 115 + putfa + dup + pushc 7 + pushc 32 + putfa + dup + pushc 8 + pushc 102 + putfa + dup + pushc 9 + pushc 111 + putfa + dup + pushc 10 + pushc 114 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 117 + putfa + dup + pushc 13 + pushc 115 + putfa + dup + pushc 14 + pushc 105 + putfa + dup + pushc 15 + pushc 110 + putfa + dup + pushc 16 + pushc 103 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 78 + putfa + dup + pushc 19 + pushc 105 + putfa + dup + pushc 20 + pushc 110 + putfa + dup + pushc 21 + pushc 106 + putfa + dup + pushc 22 + pushc 97 + putfa + dup + pushc 23 + pushc 32 + putfa + dup + pushc 24 + pushc 76 + putfa + dup + pushc 25 + pushc 73 + putfa + dup + pushc 26 + pushc 83 + putfa + dup + pushc 27 + pushc 80 + putfa + dup + pushc 28 + pushc 33 + putfa + dup + pushc 29 + pushc 10 + putfa + dup + pushc 30 + pushc 10 + putfa + call _writeString + drop 1 + call _exit + pushg 10 + popr + jmp __723 +__723: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } xchgpname(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }, record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_xchgpname: + asf 1 + pushl -4 + getf 0 + pushg 0 + ne + dup + brt __726 + drop 1 + pushl -3 + getf 0 + pushg 0 + ne +__726: + brf __725 + pushg 10 + popr + jmp __724 +__725: + pushl -4 + getf 4 + popl 0 + pushl -4 + pushl -3 + getf 4 + putf 4 + pushl -3 + pushl 0 + putf 4 + pushg 11 + popr + jmp __724 +__724: + rsf + ret + +// +// record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; } purgename(record { Integer typ; Cell car; Cell cdr; Cell func; String name; Integer val; }) +// +_purgename: + asf 1 + pushl -3 + getf 0 + pushg 0 + ne + brf __728 + pushg 10 + popr + jmp __727 +__728: + pushg 8 + popl 0 + pushl 0 + getf 0 + pushg 2 + eq + brf __729 + pushl 0 + getf 1 + pushl -3 + refeq + brf __730 + pushl 0 + getf 2 + popg 8 + pushg 11 + popr + jmp __727 +__730: + jmp __732 +__731: + pushl 0 + getf 2 + getf 1 + pushl -3 + refeq + brf __734 + pushl 0 + pushl 0 + getf 2 + getf 2 + putf 2 + pushg 11 + popr + jmp __727 +__734: + pushl 0 + getf 2 + popl 0 +__732: + pushl 0 + getf 2 + getf 0 + pushg 2 + eq + brt __731 +__733: +__729: + pushg 10 + popr + jmp __727 +__727: + rsf + ret + +// +// void initConstants() +// +_initConstants: + asf 0 + pushc 0 + popg 0 + pushc 1 + popg 1 + pushc 2 + popg 2 +__735: + rsf + ret + +// +// void initCharTypes() +// +_initCharTypes: + asf 1 + pushc 128 + newa + popg 3 + pushc 128 + newa + popg 4 + pushc 128 + newa + popg 5 + pushc 128 + newa + popg 6 + pushc 128 + newa + popg 7 + pushc 0 + popl 0 + jmp __738 +__737: + pushg 3 + pushl 0 + pushc 0 + putfa + pushg 4 + pushl 0 + pushc 0 + putfa + pushg 5 + pushl 0 + pushc 0 + putfa + pushg 6 + pushl 0 + pushc 0 + putfa + pushg 7 + pushl 0 + pushc 0 + putfa + pushl 0 + pushc 1 + add + popl 0 +__738: + pushl 0 + pushc 128 + lt + brt __737 +__739: + pushg 3 + pushc 32 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 3 + pushc 13 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 3 + pushc 10 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 3 + pushc 9 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 33 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 36 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 38 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 39 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 40 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 41 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 42 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 43 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 44 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 45 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 46 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 47 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 64 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 58 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 59 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 60 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 61 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 62 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 63 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 91 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 92 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 93 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 94 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 95 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 96 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 123 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 124 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 125 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 4 + pushc 126 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 5 + pushc 32 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 5 + pushc 44 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 5 + pushc 13 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 5 + pushc 10 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 5 + pushc 9 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 6 + pushc 40 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 6 + pushc 41 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 6 + pushc 46 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 6 + pushc 91 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 6 + pushc 93 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 7 + pushc 34 + call _char2int + drop 1 + pushr + pushc 1 + putfa + pushg 7 + pushc 37 + call _char2int + drop 1 + pushr + pushc 1 + putfa +__736: + rsf + ret + +// +// void initObjects() +// +_initObjects: + asf 0 + call _makeNil + pushr + popg 10 + pushg 10 + popg 8 + pushg 10 + call _addOblist + drop 1 + pushg 10 + popg 9 + pushc 1 + newa + dup + pushc 0 + pushc 84 + putfa + call _makeObject + drop 1 + pushr + popg 11 + pushc 4 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 66 + putfa + dup + pushc 3 + pushc 82 + putfa + call _makeObject + drop 1 + pushr + popg 12 + pushc 5 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 83 + putfa + dup + pushc 2 + pushc 85 + putfa + dup + pushc 3 + pushc 66 + putfa + dup + pushc 4 + pushc 82 + putfa + call _makeObject + drop 1 + pushr + popg 13 + pushc 6 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 66 + putfa + dup + pushc 4 + pushc 68 + putfa + dup + pushc 5 + pushc 65 + putfa + call _makeObject + drop 1 + pushr + popg 14 + pushc 7 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 76 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 77 + putfa + dup + pushc 4 + pushc 66 + putfa + dup + pushc 5 + pushc 68 + putfa + dup + pushc 6 + pushc 65 + putfa + call _makeObject + drop 1 + pushr + popg 15 + pushc 4 + newa + dup + pushc 0 + pushc 69 + putfa + dup + pushc 1 + pushc 67 + putfa + dup + pushc 2 + pushc 72 + putfa + dup + pushc 3 + pushc 79 + putfa + call _makeObject + drop 1 + pushr + popg 83 + pushc 4 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 12 + pushc 64 + call _makeBuiltin + drop 3 + pushr + popg 81 + pushc 5 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 84 + putfa + dup + pushc 3 + pushc 79 + putfa + dup + pushc 4 + pushc 77 + putfa + pushg 12 + pushc 63 + call _makeBuiltin + drop 3 + pushr + popg 80 + pushc 6 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 67 + putfa + dup + pushc 5 + pushc 72 + putfa + pushg 12 + pushc 65 + call _makeBuiltin + drop 3 + pushr + popg 82 + pushc 3 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 83 + putfa + pushg 12 + pushc 62 + call _makeBuiltin + drop 3 + pushr + popg 79 + pushc 5 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 73 + putfa + dup + pushc 3 + pushc 78 + putfa + dup + pushc 4 + pushc 84 + putfa + pushg 12 + pushc 67 + call _makeBuiltin + drop 3 + pushr + popg 85 + pushc 5 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 73 + putfa + dup + pushc 3 + pushc 78 + putfa + dup + pushc 4 + pushc 49 + putfa + pushg 12 + pushc 68 + call _makeBuiltin + drop 3 + pushr + popg 86 + pushc 3 + newa + dup + pushc 0 + pushc 87 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 83 + putfa + pushg 12 + pushc 66 + call _makeBuiltin + drop 3 + pushr + popg 84 + pushc 6 + newa + dup + pushc 0 + pushc 68 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 73 + putfa + dup + pushc 3 + pushc 86 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 82 + putfa + pushg 12 + pushc 79 + call _makeBuiltin + drop 3 + pushr + popg 97 + pushc 3 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 82 + putfa + pushg 12 + pushc 0 + call _makeBuiltin + drop 3 + pushr + popg 16 + pushc 3 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 82 + putfa + pushg 12 + pushc 1 + call _makeBuiltin + drop 3 + pushr + popg 17 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 82 + putfa + pushg 12 + pushc 3 + call _makeBuiltin + drop 3 + pushr + popg 19 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 82 + putfa + pushg 12 + pushc 5 + call _makeBuiltin + drop 3 + pushr + popg 21 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 9 + call _makeBuiltin + drop 3 + pushr + popg 25 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 13 + call _makeBuiltin + drop 3 + pushr + popg 29 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 82 + putfa + pushg 12 + pushc 2 + call _makeBuiltin + drop 3 + pushr + popg 18 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 82 + putfa + pushg 12 + pushc 4 + call _makeBuiltin + drop 3 + pushr + popg 20 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 6 + call _makeBuiltin + drop 3 + pushr + popg 22 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 10 + call _makeBuiltin + drop 3 + pushr + popg 26 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 8 + call _makeBuiltin + drop 3 + pushr + popg 24 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 12 + call _makeBuiltin + drop 3 + pushr + popg 28 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 7 + call _makeBuiltin + drop 3 + pushr + popg 23 + pushc 5 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 68 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + dup + pushc 4 + pushc 82 + putfa + pushg 12 + pushc 11 + call _makeBuiltin + drop 3 + pushr + popg 27 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 83 + putfa + pushg 12 + pushc 14 + call _makeBuiltin + drop 3 + pushr + popg 30 + pushc 6 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 80 + putfa + dup + pushc 2 + pushc 76 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 67 + putfa + dup + pushc 5 + pushc 65 + putfa + pushg 12 + pushc 18 + call _makeBuiltin + drop 3 + pushr + popg 34 + pushc 6 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 80 + putfa + dup + pushc 2 + pushc 76 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 67 + putfa + dup + pushc 5 + pushc 68 + putfa + pushg 12 + pushc 19 + call _makeBuiltin + drop 3 + pushr + popg 35 + pushc 5 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 67 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 78 + putfa + dup + pushc 4 + pushc 67 + putfa + pushg 12 + pushc 20 + call _makeBuiltin + drop 3 + pushr + popg 36 + pushc 3 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 84 + putfa + pushg 12 + pushc 38 + call _makeBuiltin + drop 3 + pushr + popg 55 + pushc 5 + newa + dup + pushc 0 + pushc 65 + putfa + dup + pushc 1 + pushc 83 + putfa + dup + pushc 2 + pushc 83 + putfa + dup + pushc 3 + pushc 79 + putfa + dup + pushc 4 + pushc 67 + putfa + pushg 12 + pushc 42 + call _makeBuiltin + drop 3 + pushr + popg 59 + pushc 3 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 84 + putfa + pushg 12 + pushc 44 + call _makeBuiltin + drop 3 + pushr + popg 61 + pushc 3 + newa + dup + pushc 0 + pushc 71 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 84 + putfa + pushg 12 + pushc 43 + call _makeBuiltin + drop 3 + pushr + popg 60 + pushc 6 + newa + dup + pushc 0 + pushc 77 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 66 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 82 + putfa + pushg 12 + pushc 31 + call _makeBuiltin + drop 3 + pushr + popg 47 + pushc 7 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 80 + putfa + dup + pushc 4 + pushc 82 + putfa + dup + pushc 5 + pushc 79 + putfa + dup + pushc 6 + pushc 80 + putfa + pushg 12 + pushc 45 + call _makeBuiltin + drop 3 + pushr + popg 62 + pushc 5 + newa + dup + pushc 0 + pushc 70 + putfa + dup + pushc 1 + pushc 76 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 71 + putfa + dup + pushc 4 + pushc 80 + putfa + pushg 12 + pushc 46 + call _makeBuiltin + drop 3 + pushr + popg 63 + pushc 4 + newa + dup + pushc 0 + pushc 70 + putfa + dup + pushc 1 + pushc 76 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 71 + putfa + pushg 12 + pushc 47 + call _makeBuiltin + drop 3 + pushr + popg 64 + pushc 7 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 70 + putfa + dup + pushc 4 + pushc 76 + putfa + dup + pushc 5 + pushc 65 + putfa + dup + pushc 6 + pushc 71 + putfa + pushg 12 + pushc 48 + call _makeBuiltin + drop 3 + pushr + popg 65 + pushc 4 + newa + dup + pushc 0 + pushc 77 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 86 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 12 + pushc 51 + call _makeBuiltin + drop 3 + pushr + popg 68 + pushc 4 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 84 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 12 + pushc 50 + call _makeBuiltin + drop 3 + pushr + popg 67 + pushc 4 + newa + dup + pushc 0 + pushc 71 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 84 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 12 + pushc 49 + call _makeBuiltin + drop 3 + pushr + popg 66 + pushc 4 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 67 + putfa + dup + pushc 3 + pushc 75 + putfa + pushg 12 + pushc 52 + call _makeBuiltin + drop 3 + pushr + popg 69 + pushc 6 + newa + dup + pushc 0 + pushc 85 + putfa + dup + pushc 1 + pushc 78 + putfa + dup + pushc 2 + pushc 80 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 67 + putfa + dup + pushc 5 + pushc 75 + putfa + pushg 12 + pushc 53 + call _makeBuiltin + drop 3 + pushr + popg 70 + pushc 6 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 71 + putfa + dup + pushc 4 + pushc 84 + putfa + dup + pushc 5 + pushc 72 + putfa + pushg 12 + pushc 54 + call _makeBuiltin + drop 3 + pushr + popg 71 + pushc 7 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 86 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 82 + putfa + dup + pushc 5 + pushc 83 + putfa + dup + pushc 6 + pushc 69 + putfa + pushg 12 + pushc 16 + call _makeBuiltin + drop 3 + pushr + popg 32 + pushc 6 + newa + dup + pushc 0 + pushc 79 + putfa + dup + pushc 1 + pushc 66 + putfa + dup + pushc 2 + pushc 76 + putfa + dup + pushc 3 + pushc 73 + putfa + dup + pushc 4 + pushc 83 + putfa + dup + pushc 5 + pushc 84 + putfa + pushg 12 + pushc 17 + call _makeBuiltin + drop 3 + pushr + popg 33 + pushc 4 + newa + dup + pushc 0 + pushc 65 + putfa + dup + pushc 1 + pushc 84 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 77 + putfa + pushg 12 + pushc 23 + call _makeBuiltin + drop 3 + pushr + popg 39 + pushc 4 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 69 + putfa + pushg 12 + pushc 21 + call _makeBuiltin + drop 3 + pushr + popg 37 + pushc 4 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 76 + putfa + dup + pushc 3 + pushc 76 + putfa + pushg 12 + pushc 24 + call _makeBuiltin + drop 3 + pushr + popg 40 + pushc 3 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 84 + putfa + pushg 12 + pushc 35 + call _makeBuiltin + drop 3 + pushr + popg 52 + pushc 6 + newa + dup + pushc 0 + pushc 79 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 82 + putfa + dup + pushc 5 + pushc 80 + putfa + pushg 12 + pushc 34 + call _makeBuiltin + drop 3 + pushr + popg 50 + pushc 7 + newa + dup + pushc 0 + pushc 79 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 82 + putfa + dup + pushc 5 + pushc 69 + putfa + dup + pushc 6 + pushc 68 + putfa + call _makeObject + drop 1 + pushr + popg 51 + pushc 2 + newa + dup + pushc 0 + pushc 69 + putfa + dup + pushc 1 + pushc 81 + putfa + pushg 12 + pushc 29 + call _makeBuiltin + drop 3 + pushr + popg 45 + pushc 5 + newa + dup + pushc 0 + pushc 69 + putfa + dup + pushc 1 + pushc 81 + putfa + dup + pushc 2 + pushc 85 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 76 + putfa + pushg 12 + pushc 30 + call _makeBuiltin + drop 3 + pushr + popg 46 + pushc 5 + newa + dup + pushc 0 + pushc 65 + putfa + dup + pushc 1 + pushc 80 + putfa + dup + pushc 2 + pushc 80 + putfa + dup + pushc 3 + pushc 76 + putfa + dup + pushc 4 + pushc 89 + putfa + pushg 12 + pushc 75 + call _makeBuiltin + drop 3 + pushr + popg 93 + pushc 4 + newa + dup + pushc 0 + pushc 69 + putfa + dup + pushc 1 + pushc 86 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 76 + putfa + pushg 12 + pushc 74 + call _makeBuiltin + drop 3 + pushr + popg 92 + pushc 7 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 67 + putfa + dup + pushc 3 + pushc 76 + putfa + dup + pushc 4 + pushc 65 + putfa + dup + pushc 5 + pushc 73 + putfa + dup + pushc 6 + pushc 77 + putfa + pushg 12 + pushc 80 + call _makeBuiltin + drop 3 + pushr + popg 98 + pushc 6 + newa + dup + pushc 0 + pushc 84 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 82 + putfa + dup + pushc 3 + pushc 80 + putfa + dup + pushc 4 + pushc 82 + putfa + dup + pushc 5 + pushc 73 + putfa + pushg 12 + pushc 69 + call _makeBuiltin + drop 3 + pushr + popg 87 + pushc 6 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 80 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 67 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 83 + putfa + pushg 12 + pushc 70 + call _makeBuiltin + drop 3 + pushr + popg 88 + pushc 10 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 76 + putfa + dup + pushc 5 + pushc 69 + putfa + dup + pushc 6 + pushc 78 + putfa + dup + pushc 7 + pushc 71 + putfa + dup + pushc 8 + pushc 84 + putfa + dup + pushc 9 + pushc 72 + putfa + pushg 12 + pushc 71 + call _makeBuiltin + drop 3 + pushr + popg 89 + pushc 5 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 68 + putfa + dup + pushc 3 + pushc 73 + putfa + dup + pushc 4 + pushc 88 + putfa + pushg 12 + pushc 72 + call _makeBuiltin + drop 3 + pushr + popg 90 + pushc 4 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 65 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 12 + pushc 82 + call _makeBuiltin + drop 3 + pushr + popg 100 + pushc 4 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 65 + putfa + dup + pushc 2 + pushc 86 + putfa + dup + pushc 3 + pushc 69 + putfa + pushg 12 + pushc 81 + call _makeBuiltin + drop 3 + pushr + popg 99 + pushc 6 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 89 + putfa + dup + pushc 2 + pushc 83 + putfa + dup + pushc 3 + pushc 84 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 77 + putfa + pushg 12 + pushc 83 + call _makeBuiltin + drop 3 + pushr + popg 101 + pushc 7 + newa + dup + pushc 0 + pushc 78 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 66 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 82 + putfa + dup + pushc 6 + pushc 80 + putfa + pushg 12 + pushc 22 + call _makeBuiltin + drop 3 + pushr + popg 38 + pushc 8 + newa + dup + pushc 0 + pushc 71 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 69 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 84 + putfa + dup + pushc 5 + pushc 69 + putfa + dup + pushc 6 + pushc 82 + putfa + dup + pushc 7 + pushc 80 + putfa + pushg 12 + pushc 32 + call _makeBuiltin + drop 3 + pushr + popg 48 + pushc 5 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 83 + putfa + dup + pushc 3 + pushc 83 + putfa + dup + pushc 4 + pushc 80 + putfa + pushg 12 + pushc 33 + call _makeBuiltin + drop 3 + pushr + popg 49 + pushc 5 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 76 + putfa + dup + pushc 2 + pushc 85 + putfa + dup + pushc 3 + pushc 83 + putfa + dup + pushc 4 + pushc 80 + putfa + pushg 12 + pushc 25 + call _makeBuiltin + drop 3 + pushr + popg 41 + pushc 6 + newa + dup + pushc 0 + pushc 77 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 85 + putfa + dup + pushc 4 + pushc 83 + putfa + dup + pushc 5 + pushc 80 + putfa + pushg 12 + pushc 26 + call _makeBuiltin + drop 3 + pushr + popg 42 + pushc 5 + newa + dup + pushc 0 + pushc 90 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 82 + putfa + dup + pushc 3 + pushc 79 + putfa + dup + pushc 4 + pushc 80 + putfa + pushg 12 + pushc 27 + call _makeBuiltin + drop 3 + pushr + popg 43 + pushc 4 + newa + dup + pushc 0 + pushc 69 + putfa + dup + pushc 1 + pushc 86 + putfa + dup + pushc 2 + pushc 69 + putfa + dup + pushc 3 + pushc 78 + putfa + pushg 12 + pushc 28 + call _makeBuiltin + drop 3 + pushr + popg 44 + pushc 5 + newa + dup + pushc 0 + pushc 77 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 85 + putfa + dup + pushc 4 + pushc 83 + putfa + pushg 12 + pushc 55 + call _makeBuiltin + drop 3 + pushr + popg 72 + pushc 4 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 76 + putfa + dup + pushc 2 + pushc 85 + putfa + dup + pushc 3 + pushc 83 + putfa + pushg 12 + pushc 56 + call _makeBuiltin + drop 3 + pushr + popg 73 + pushc 10 + newa + dup + pushc 0 + pushc 68 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 70 + putfa + dup + pushc 3 + pushc 70 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 82 + putfa + dup + pushc 6 + pushc 69 + putfa + dup + pushc 7 + pushc 78 + putfa + dup + pushc 8 + pushc 67 + putfa + dup + pushc 9 + pushc 69 + putfa + pushg 12 + pushc 57 + call _makeBuiltin + drop 3 + pushr + popg 74 + pushc 5 + newa + dup + pushc 0 + pushc 84 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 69 + putfa + dup + pushc 4 + pushc 83 + putfa + pushg 12 + pushc 58 + call _makeBuiltin + drop 3 + pushr + popg 75 + pushc 6 + newa + dup + pushc 0 + pushc 68 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 86 + putfa + dup + pushc 3 + pushc 73 + putfa + dup + pushc 4 + pushc 68 + putfa + dup + pushc 5 + pushc 69 + putfa + pushg 12 + pushc 61 + call _makeBuiltin + drop 3 + pushr + popg 78 + pushc 8 + newa + dup + pushc 0 + pushc 81 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 84 + putfa + dup + pushc 4 + pushc 73 + putfa + dup + pushc 5 + pushc 69 + putfa + dup + pushc 6 + pushc 78 + putfa + dup + pushc 7 + pushc 84 + putfa + pushg 12 + pushc 59 + call _makeBuiltin + drop 3 + pushr + popg 76 + pushc 9 + newa + dup + pushc 0 + pushc 82 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 77 + putfa + dup + pushc 3 + pushc 65 + putfa + dup + pushc 4 + pushc 73 + putfa + dup + pushc 5 + pushc 78 + putfa + dup + pushc 6 + pushc 68 + putfa + dup + pushc 7 + pushc 69 + putfa + dup + pushc 8 + pushc 82 + putfa + pushg 12 + pushc 60 + call _makeBuiltin + drop 3 + pushr + popg 77 + pushc 4 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 73 + putfa + dup + pushc 2 + pushc 83 + putfa + dup + pushc 3 + pushc 84 + putfa + pushg 13 + pushc 15 + call _makeBuiltin + drop 3 + pushr + popg 31 + pushc 5 + newa + dup + pushc 0 + pushc 81 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 84 + putfa + dup + pushc 4 + pushc 69 + putfa + pushg 13 + pushc 73 + call _makeBuiltin + drop 3 + pushr + popg 91 + pushc 4 + newa + dup + pushc 0 + pushc 67 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 78 + putfa + dup + pushc 3 + pushc 68 + putfa + pushg 13 + pushc 76 + call _makeBuiltin + drop 3 + pushr + popg 94 + pushc 4 + newa + dup + pushc 0 + pushc 76 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 80 + putfa + pushg 13 + pushc 77 + call _makeBuiltin + drop 3 + pushr + popg 95 + pushc 5 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 82 + putfa + dup + pushc 2 + pushc 79 + putfa + dup + pushc 3 + pushc 71 + putfa + dup + pushc 4 + pushc 49 + putfa + pushg 13 + pushc 78 + call _makeBuiltin + drop 3 + pushr + popg 96 + pushc 3 + newa + dup + pushc 0 + pushc 65 + putfa + dup + pushc 1 + pushc 78 + putfa + dup + pushc 2 + pushc 68 + putfa + pushg 13 + pushc 36 + call _makeBuiltin + drop 3 + pushr + popg 53 + pushc 2 + newa + dup + pushc 0 + pushc 79 + putfa + dup + pushc 1 + pushc 82 + putfa + pushg 13 + pushc 37 + call _makeBuiltin + drop 3 + pushr + popg 54 + pushc 4 + newa + dup + pushc 0 + pushc 83 + putfa + dup + pushc 1 + pushc 69 + putfa + dup + pushc 2 + pushc 84 + putfa + dup + pushc 3 + pushc 81 + putfa + pushg 13 + pushc 39 + call _makeBuiltin + drop 3 + pushr + popg 56 + pushc 3 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 79 + putfa + dup + pushc 2 + pushc 80 + putfa + pushg 13 + pushc 40 + call _makeBuiltin + drop 3 + pushr + popg 57 + pushc 4 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 83 + putfa + dup + pushc 3 + pushc 72 + putfa + pushg 13 + pushc 41 + call _makeBuiltin + drop 3 + pushr + popg 58 + pushc 9 + newa + dup + pushc 0 + pushc 88 + putfa + dup + pushc 1 + pushc 67 + putfa + dup + pushc 2 + pushc 72 + putfa + dup + pushc 3 + pushc 71 + putfa + dup + pushc 4 + pushc 80 + putfa + dup + pushc 5 + pushc 78 + putfa + dup + pushc 6 + pushc 65 + putfa + dup + pushc 7 + pushc 77 + putfa + dup + pushc 8 + pushc 69 + putfa + pushg 12 + pushc 84 + call _makeBuiltin + drop 3 + pushr + popg 102 + pushc 9 + newa + dup + pushc 0 + pushc 80 + putfa + dup + pushc 1 + pushc 85 + putfa + dup + pushc 2 + pushc 82 + putfa + dup + pushc 3 + pushc 71 + putfa + dup + pushc 4 + pushc 69 + putfa + dup + pushc 5 + pushc 78 + putfa + dup + pushc 6 + pushc 65 + putfa + dup + pushc 7 + pushc 77 + putfa + dup + pushc 8 + pushc 69 + putfa + pushg 12 + pushc 85 + call _makeBuiltin + drop 3 + pushr + popg 103 +__740: + rsf + ret + +// +// void initCtlVars() +// +_initCtlVars: + asf 0 + pushc 0 + popg 108 + pushg 79 + pushg 10 + putf 1 + pushg 81 + pushg 81 + putf 1 + pushg 82 + pushg 82 + putf 1 + pushg 83 + pushg 10 + putf 1 + pushg 84 + pushg 10 + putf 1 + pushg 85 + pushg 85 + putf 1 + pushg 86 + pushg 86 + putf 1 + pushc 0 + popg 104 + pushc 79 + popg 105 + pushc 10 + popg 106 +__741: + rsf + ret + +// +// void main() +// +_main: + asf 0 + pushc 24 + newa + dup + pushc 0 + pushc 10 + putfa + dup + pushc 1 + pushc 87 + putfa + dup + pushc 2 + pushc 101 + putfa + dup + pushc 3 + pushc 108 + putfa + dup + pushc 4 + pushc 99 + putfa + dup + pushc 5 + pushc 111 + putfa + dup + pushc 6 + pushc 109 + putfa + dup + pushc 7 + pushc 101 + putfa + dup + pushc 8 + pushc 32 + putfa + dup + pushc 9 + pushc 116 + putfa + dup + pushc 10 + pushc 111 + putfa + dup + pushc 11 + pushc 32 + putfa + dup + pushc 12 + pushc 78 + putfa + dup + pushc 13 + pushc 105 + putfa + dup + pushc 14 + pushc 110 + putfa + dup + pushc 15 + pushc 106 + putfa + dup + pushc 16 + pushc 97 + putfa + dup + pushc 17 + pushc 32 + putfa + dup + pushc 18 + pushc 76 + putfa + dup + pushc 19 + pushc 73 + putfa + dup + pushc 20 + pushc 83 + putfa + dup + pushc 21 + pushc 80 + putfa + dup + pushc 22 + pushc 33 + putfa + dup + pushc 23 + pushc 10 + putfa + call _writeString + drop 1 + call _initConstants + call _initCharTypes + call _initObjects + call _initCtlVars + jmp __744 +__743: + pushg 97 + pushg 10 + call _apply + drop 2 +__744: + pushc 1 + brt __743 +__745: +__742: + rsf + ret diff --git a/njlisp.bin b/njlisp.bin new file mode 100644 index 0000000000000000000000000000000000000000..bdf9d648ea1905908784d063e77a32ac9a8d66a1 GIT binary patch literal 38424 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 literal 0 HcmV?d00001 diff --git a/njlisp.nj b/njlisp.nj new file mode 100644 index 0000000..1a7ab3e --- /dev/null +++ b/njlisp.nj @@ -0,0 +1,2580 @@ +// ------------------------------------------------------------- +// +// njlisp.nj -- Ninja LISP +// +// This is a re-implementation of the old muLISP-80 system, +// developed in 1980 by Albert D. Rich and David Stoutemyer +// of The Soft Warehouse in Honolulu, Hawaii. +// +// ------------------------------------------------------------- + +// ------------------------------------------------------------- +// Cell Definition +// ------------------------------------------------------------- + +type Cell = record { + Integer typ; // one of NAME, NUMBER, or NODE + Cell car; // valid for typ in { NAME, NUMBER, NODE } + // typ = NAME : the name's value + // typ = NUMBER : the number itself + // typ = NODE : the node's left subtree + Cell cdr; // valid for typ in { NAME, NUMBER, NODE } + // typ = NAME : the name's property list + // typ = NUMBER : the number's sign + // typ = NODE : the node's right subtree + Cell func; // valid only for typ = NAME + // the name's functional binding + String name; // valid only for typ = NAME + // the name's external representation + Integer val; // valid only for typ = NUMBER + // the number's value (signed integer) +}; + +// ------------------------------------------------------------- +// Global Constants +// ------------------------------------------------------------- + +global Integer NAME; // name cell +global Integer NUMBER; // number cell +global Integer NODE; // node cell + +global Boolean[] RAS; // ratom separator character +global Boolean[] RAB; // ratom break character +global Boolean[] RES; // read separator character +global Boolean[] REB; // read break character +global Boolean[] OSP; // other special character (% and ") + +// ------------------------------------------------------------- +// Global Variables +// ------------------------------------------------------------- + +global Cell objectList; +global Cell argStack; + +global Cell nilAtom; +global Cell tAtom; +global Cell subrAtom; +global Cell nsubrAtom; +global Cell lambdaAtom; +global Cell nlambdaAtom; +global Cell carAtom; +global Cell cdrAtom; +global Cell caarAtom; +global Cell cadrAtom; +global Cell cdarAtom; +global Cell cddrAtom; +global Cell caaarAtom; +global Cell caadrAtom; +global Cell cadarAtom; +global Cell caddrAtom; +global Cell cdaarAtom; +global Cell cdadrAtom; +global Cell cddarAtom; +global Cell cdddrAtom; +global Cell consAtom; +global Cell listAtom; +global Cell reverseAtom; +global Cell oblistAtom; +global Cell rplacaAtom; +global Cell rplacdAtom; +global Cell nconcAtom; +global Cell nameAtom; +global Cell numberpAtom; +global Cell atomAtom; +global Cell nullAtom; +global Cell pluspAtom; +global Cell minuspAtom; +global Cell zeropAtom; +global Cell evenAtom; +global Cell eqAtom; +global Cell equalAtom; +global Cell memberAtom; +global Cell greaterpAtom; +global Cell lesspAtom; +global Cell orderpAtom; +global Cell orderedAtom; +global Cell notAtom; +global Cell andAtom; +global Cell orAtom; +global Cell setAtom; +global Cell setqAtom; +global Cell popAtom; +global Cell pushAtom; +global Cell assocAtom; +global Cell getAtom; +global Cell putAtom; +global Cell rempropAtom; +global Cell flagpAtom; +global Cell flagAtom; +global Cell remflagAtom; +global Cell getdAtom; +global Cell putdAtom; +global Cell movdAtom; +global Cell packAtom; +global Cell unpackAtom; +global Cell lengthAtom; +global Cell minusAtom; +global Cell plusAtom; +global Cell differenceAtom; +global Cell timesAtom; +global Cell quotientAtom; +global Cell remainderAtom; +global Cell divideAtom; +global Cell rdsAtom; +global Cell ratomAtom; +global Cell readAtom; +global Cell readchAtom; +global Cell echoAtom; +global Cell wrsAtom; +global Cell printAtom; +global Cell prin1Atom; +global Cell terpriAtom; +global Cell spacesAtom; +global Cell linelengthAtom; +global Cell radixAtom; +global Cell quoteAtom; +global Cell evalAtom; +global Cell applyAtom; +global Cell condAtom; +global Cell loopAtom; +global Cell prog1Atom; +global Cell driverAtom; +global Cell reclaimAtom; +global Cell saveAtom; +global Cell loadAtom; +global Cell systemAtom; +global Cell xchgpnameAtom; +global Cell purgenameAtom; + +global Integer cursPos; +global Integer lineLen; +global Integer numBase; + +// ------------------------------------------------------------- +// Debugging +// ------------------------------------------------------------- + +void debug(Integer n) { + writeString("DEBUG: "); + writeInteger(n); + writeString("\n"); +} + +// ------------------------------------------------------------- +// Library Functions +// ------------------------------------------------------------- + +Boolean isAlpha(Character ch) { + return ch >= 'A' && ch <= 'Z' || + ch >= 'a' && ch <= 'z'; +} + +Boolean isDigit(Character ch) { + return ch >= '0' && ch <= '9'; +} + +Character toLower(Character ch) { + if (ch >= 'A' && ch <= 'Z') { + ch = int2char(char2int(ch) + 0x20); + } + return ch; +} + +Character toUpper(Character ch) { + if (ch >= 'a' && ch <= 'z') { + ch = int2char(char2int(ch) - 0x20); + } + return ch; +} + +String toString(Character ch) { + local String str; + str = new(Character[1]); + str[0] = ch; + return str; +} + +Integer stringCompare(String s1, String s2) { + local Integer n1; + local Integer n2; + local Integer i; + n1 = sizeof(s1); + n2 = sizeof(s2); + i = 0; + while (i < n1 && i < n2) { + if (s1[i] != s2[i]) { + return char2int(s1[i]) - char2int(s2[i]); + } + i = i + 1; + } + return n1 - n2; +} + +type StringBuffer = record { + String str; + Integer len; +}; + +StringBuffer newStringBuffer(Integer size) { + local StringBuffer strBuf; + strBuf = new(StringBuffer); + strBuf.str = new(Character[size]); + strBuf.len = 0; + return strBuf; +} + +void addCharToStringBuffer(StringBuffer strBuf, Character ch) { + local String newStr; + local Integer i; + if (strBuf.len + 1 > sizeof(strBuf.str)) { + newStr = new(Character[2 * sizeof(strBuf.str)]); + i = 0; + while (i < strBuf.len) { + newStr[i] = strBuf.str[i]; + i = i + 1; + } + strBuf.str = newStr; + } + strBuf.str[strBuf.len] = ch; + strBuf.len = strBuf.len + 1; +} + +void addStringToStringBuffer(StringBuffer strBuf, String str) { + local Integer n; + local Integer i; + n = sizeof(str); + i = 0; + while (i < n) { + addCharToStringBuffer(strBuf, str[i]); + i = i + 1; + } +} + +String stringBufferToString(StringBuffer strBuf) { + local String str; + local Integer i; + str = new(Character[strBuf.len]); + i = 0; + while (i < strBuf.len) { + str[i] = strBuf.str[i]; + i = i + 1; + } + return str; +} + +// ------------------------------------------------------------- +// Auxiliary Functions +// ------------------------------------------------------------- + +void error(String message, Boolean fatal) { + writeString("\n"); + writeString(message); + writeString("\n\n"); + if (fatal) { + exit(); + } +} + +Cell makeNil() { + local Cell aux; + aux = new(Cell); + aux.typ = NAME; // NAME + aux.car = aux; // auto-quoting + aux.cdr = aux; // empty property list + aux.func = aux; // no functional binding + aux.name = "NIL"; // name is NIL + return aux; +} + +Cell makeName(String name) { + local Cell aux; + aux = new(Cell); + aux.typ = NAME; // NAME + aux.car = aux; // auto-quoting + aux.cdr = nilAtom; // empty property list + aux.func = nilAtom; // no functional binding + aux.name = name; // name as given in parameter + return aux; +} + +Cell makeNumber(Integer n) { + local Cell aux; + aux = new(Cell); + aux.typ = NUMBER; // NUMBER + aux.car = aux; // auto-quoting + if (n < 0) { + aux.cdr = tAtom; // number is negative + } else { + aux.cdr = nilAtom; // number is non-negative + } + aux.val = n; // value as given in parameter + return aux; +} + +Cell makeNode(Cell x, Cell y) { + local Cell aux; + aux = new(Cell); + aux.typ = NODE; // NODE + aux.car = x; // car as given in parameter + aux.cdr = y; // cdr as given in parameter + return aux; +} + +void addOblist(Cell x) { + objectList = makeNode(x, objectList); +} + +Cell makeObject(String name) { + local Cell aux; + aux = makeName(name); + addOblist(aux); + return aux; +} + +Cell makeBuiltin(String name, Cell kind, Integer n) { + local Cell aux; + aux = makeObject(name); + aux.func = makeNode(kind, makeNumber(n)); + return aux; +} + +Cell searchOblist(String name) { + local Cell aux; + aux = objectList; + while (aux.typ == NODE) { + if (stringCompare(aux.car.name, name) == 0) { + return aux.car; + } + aux = aux.cdr; + } + return makeObject(name); +} + +Cell copyTree(Cell x) { + local Cell anchor; + local Cell aux; + anchor = makeNode(nilAtom, nilAtom); + anchor.car = anchor; + while (x.typ == NODE) { + aux = copyTree(x.car); + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + x = x.cdr; + } + anchor.car.cdr = x; + return anchor.cdr; +} + +Cell execErr(Integer funcNum) { + writeString("exec: function "); + writeInteger(funcNum); + writeString(" not implemented\n"); + exit(); + // never reached + return nilAtom; +} + +Cell exec(Integer n, Cell x, Cell y, Cell z) { + if (n < 0 || n >= 128) { + error("Internal Exec Error", false); + return nilAtom; + } + if (n < 64) { + if (n < 32) { + if (n < 16) { + if (n < 8) { + if (n < 4) { + if (n < 2) { + if (n < 1) { + // n = 0 + return car(x); + } else { + // n = 1 + return cdr(x); + } + } else { + if (n < 3) { + // n = 2 + return caar(x); + } else { + // n = 3 + return cadr(x); + } + } + } else { + if (n < 6) { + if (n < 5) { + // n = 4 + return cdar(x); + } else { + // n = 5 + return cddr(x); + } + } else { + if (n < 7) { + // n = 6 + return caaar(x); + } else { + // n = 7 + return caadr(x); + } + } + } + } else { + if (n < 12) { + if (n < 10) { + if (n < 9) { + // n = 8 + return cadar(x); + } else { + // n = 9 + return caddr(x); + } + } else { + if (n < 11) { + // n = 10 + return cdaar(x); + } else { + // n = 11 + return cdadr(x); + } + } + } else { + if (n < 14) { + if (n < 13) { + // n = 12 + return cddar(x); + } else { + // n = 13 + return cdddr(x); + } + } else { + if (n < 15) { + // n = 14 + return cons(x, y); + } else { + // n = 15 + return list(x); + } + } + } + } + } else { + if (n < 24) { + if (n < 20) { + if (n < 18) { + if (n < 17) { + // n = 16 + return reverse(x, y); + } else { + // n = 17 + return oblist(); + } + } else { + if (n < 19) { + // n = 18 + return rplaca(x, y); + } else { + // n = 19 + return rplacd(x, y); + } + } + } else { + if (n < 22) { + if (n < 21) { + // n = 20 + return nconc(x, y); + } else { + // n = 21 + return name(x); + } + } else { + if (n < 23) { + // n = 22 + return numberp(x); + } else { + // n = 23 + return atom(x); + } + } + } + } else { + if (n < 28) { + if (n < 26) { + if (n < 25) { + // n = 24 + return null(x); + } else { + // n = 25 + return plusp(x); + } + } else { + if (n < 27) { + // n = 26 + return minusp(x); + } else { + // n = 27 + return zerop(x); + } + } + } else { + if (n < 30) { + if (n < 29) { + // n = 28 + return even(x); + } else { + // n = 29 + return eq(x, y); + } + } else { + if (n < 31) { + // n = 30 + return equal(x, y); + } else { + // n = 31 + return member(x, y); + } + } + } + } + } + } else { + if (n < 48) { + if (n < 40) { + if (n < 36) { + if (n < 34) { + if (n < 33) { + // n = 32 + return greaterp(x, y); + } else { + // n = 33 + return lessp(x, y); + } + } else { + if (n < 35) { + // n = 34 + return orderp(x, y); + } else { + // n = 35 + return not(x); + } + } + } else { + if (n < 38) { + if (n < 37) { + // n = 36 + return and(x); + } else { + // n = 37 + return or(x); + } + } else { + if (n < 39) { + // n = 38 + return set(x, y); + } else { + // n = 39 + return setq(x); + } + } + } + } else { + if (n < 44) { + if (n < 42) { + if (n < 41) { + // n = 40 + return pop(x); + } else { + // n = 41 + return push(x); + } + } else { + if (n < 43) { + // n = 42 + return assoc(x, y); + } else { + // n = 43 + return get(x, y); + } + } + } else { + if (n < 46) { + if (n < 45) { + // n = 44 + return put(x, y, z); + } else { + // n = 45 + return remprop(x, y); + } + } else { + if (n < 47) { + // n = 46 + return flagp(x, y); + } else { + // n = 47 + return flag(x, y); + } + } + } + } + } else { + if (n < 56) { + if (n < 52) { + if (n < 50) { + if (n < 49) { + // n = 48 + return remflag(x, y); + } else { + // n = 49 + return getd(x); + } + } else { + if (n < 51) { + // n = 50 + return putd(x, y); + } else { + // n = 51 + return movd(x, y); + } + } + } else { + if (n < 54) { + if (n < 53) { + // n = 52 + return pack(x); + } else { + // n = 53 + return unpack(x); + } + } else { + if (n < 55) { + // n = 54 + return length(x); + } else { + // n = 55 + return minus(x); + } + } + } + } else { + if (n < 60) { + if (n < 58) { + if (n < 57) { + // n = 56 + return plus(x, y); + } else { + // n = 57 + return difference(x, y); + } + } else { + if (n < 59) { + // n = 58 + return times(x, y); + } else { + // n = 59 + return quotient(x, y); + } + } + } else { + if (n < 62) { + if (n < 61) { + // n = 60 + return remainder(x, y); + } else { + // n = 61 + return divide(x, y); + } + } else { + if (n < 63) { + // n = 62 + return rds(x, y, z); + } else { + // n = 63 + return ratom(); + } + } + } + } + } + } + } else { + if (n < 96) { + if (n < 80) { + if (n < 72) { + if (n < 68) { + if (n < 66) { + if (n < 65) { + // n = 64 + return read(); + } else { + // n = 65 + return readch(); + } + } else { + if (n < 67) { + // n = 66 + return wrs(x, y, z); + } else { + // n = 67 + return print(x); + } + } + } else { + if (n < 70) { + if (n < 69) { + // n = 68 + return prin1(x); + } else { + // n = 69 + return terpri(x); + } + } else { + if (n < 71) { + // n = 70 + return spaces(x); + } else { + // n = 71 + return linelength(x); + } + } + } + } else { + if (n < 76) { + if (n < 74) { + if (n < 73) { + // n = 72 + return radix(x); + } else { + // n = 73 + return quote(x); + } + } else { + if (n < 75) { + // n = 74 + return eval(x); + } else { + // n = 75 + return apply(x, y); + } + } + } else { + if (n < 78) { + if (n < 77) { + // n = 76 + return cond(x); + } else { + // n = 77 + return loop(x); + } + } else { + if (n < 79) { + // n = 78 + return prog1(x); + } else { + // n = 79 + return driver(); + } + } + } + } + } else { + if (n < 88) { + if (n < 84) { + if (n < 82) { + if (n < 81) { + // n = 80 + return reclaim(); + } else { + // n = 81 + return save(x, y); + } + } else { + if (n < 83) { + // n = 82 + return load(x, y); + } else { + // n = 83 + return system(); + } + } + } else { + if (n < 86) { + if (n < 85) { + // n = 84 + return xchgpname(x, y); + } else { + // n = 85 + return purgename(x); + } + } else { + if (n < 87) { + // n = 86 + return execErr(86); + } else { + // n = 87 + return execErr(87); + } + } + } + } else { + if (n < 92) { + if (n < 90) { + if (n < 89) { + // n = 88 + return execErr(88); + } else { + // n = 89 + return execErr(89); + } + } else { + if (n < 91) { + // n = 90 + return execErr(90); + } else { + // n = 91 + return execErr(91); + } + } + } else { + if (n < 94) { + if (n < 93) { + // n = 92 + return execErr(92); + } else { + // n = 93 + return execErr(93); + } + } else { + if (n < 95) { + // n = 94 + return execErr(94); + } else { + // n = 95 + return execErr(95); + } + } + } + } + } + } else { + // n = 96..127 + execErr(n); + } + } +} + +// ------------------------------------------------------------- +// A. Selector Functions +// ------------------------------------------------------------- + +Cell car(Cell x) { + return x.car; +} + +Cell cdr(Cell x) { + return x.cdr; +} + +Cell caar(Cell x) { + return x.car.car; +} + +Cell cadr(Cell x) { + return x.cdr.car; +} + +Cell cdar(Cell x) { + return x.car.cdr; +} + +Cell cddr(Cell x) { + return x.cdr.cdr; +} + +Cell caaar(Cell x) { + return x.car.car.car; +} + +Cell caadr(Cell x) { + return x.cdr.car.car; +} + +Cell cadar(Cell x) { + return x.car.cdr.car; +} + +Cell caddr(Cell x) { + return x.cdr.cdr.car; +} + +Cell cdaar(Cell x) { + return x.car.car.cdr; +} + +Cell cdadr(Cell x) { + return x.cdr.car.cdr; +} + +Cell cddar(Cell x) { + return x.car.cdr.cdr; +} + +Cell cdddr(Cell x) { + return x.cdr.cdr.cdr; +} + +// ------------------------------------------------------------- +// B. Constructor Functions +// ------------------------------------------------------------- + +Cell cons(Cell x, Cell y) { + return makeNode(x, y); +} + +Cell list(Cell x) { + // ATTENTION: CBN + local Cell anchor; + local Cell aux; + anchor = makeNode(nilAtom, nilAtom); + anchor.car = anchor; + while (x.typ == NODE) { + aux = eval(x.car); + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + x = x.cdr; + } + anchor.car.cdr = x; + return anchor.cdr; +} + +Cell reverse(Cell x, Cell y) { + local Cell aux; + aux = y; + while (x.typ == NODE) { + aux = makeNode(x.car, aux); + x = x.cdr; + } + return aux; +} + +Cell oblist() { + return copyTree(objectList); +} + +// ------------------------------------------------------------- +// C. Modifier Functions +// ------------------------------------------------------------- + +Cell rplaca(Cell x, Cell y) { + x.car = y; + return x; +} + +Cell rplacd(Cell x, Cell y) { + x.cdr = y; + return x; +} + +Cell nconc(Cell x, Cell y) { + local Cell t; + if (x.typ != NODE) { + return y; + } + t = x; + while (t.cdr.typ == NODE) { + t = t.cdr; + } + t.cdr = y; + return x; +} + +// ------------------------------------------------------------- +// D. Recognizer Functions +// ------------------------------------------------------------- + +Cell name(Cell x) { + if (x.typ == NAME) { + return tAtom; + } + return nilAtom; +} + +Cell numberp(Cell x) { + if (x.typ == NUMBER) { + return tAtom; + } + return nilAtom; +} + +Cell atom(Cell x) { + if (x.typ != NODE) { + return tAtom; + } + return nilAtom; +} + +Cell null(Cell x) { + if (x == nilAtom) { + return tAtom; + } + return nilAtom; +} + +Cell plusp(Cell x) { + if (x.typ == NUMBER && x.val > 0) { + return tAtom; + } + return nilAtom; +} + +Cell minusp(Cell x) { + if (x.typ == NUMBER && x.val < 0) { + return tAtom; + } + return nilAtom; +} + +Cell zerop(Cell x) { + if (x.typ == NUMBER && x.val == 0) { + return tAtom; + } + return nilAtom; +} + +Cell even(Cell x) { + if (x.typ == NUMBER && x.val % 2 == 0) { + return tAtom; + } + return nilAtom; +} + +// ------------------------------------------------------------- +// E. Comparator Functions +// ------------------------------------------------------------- + +Cell eq(Cell x, Cell y) { + if (x == y) { + return tAtom; + } + if (x.typ == NUMBER && y.typ == NUMBER && x.val == y.val) { + return tAtom; + } + return nilAtom; +} + +Cell equal(Cell x, Cell y) { + while (x.typ == NODE && y.typ == NODE) { + if (equal(x.car, y.car) == nilAtom) { + return nilAtom; + } + x = x.cdr; + y = y.cdr; + } + return eq(x, y); +} + +Cell member(Cell x, Cell y) { + while (y.typ == NODE) { + if (equal(x, y.car) == tAtom) { + return tAtom; + } + y = y.cdr; + } + return y; +} + +Cell greaterp(Cell x, Cell y) { + if (x.typ == NUMBER && y.typ == NUMBER && x.val > y.val) { + return tAtom; + } + return nilAtom; +} + +Cell lessp(Cell x, Cell y) { + if (x.typ == NUMBER && y.typ == NUMBER && x.val < y.val) { + return tAtom; + } + return nilAtom; +} + +Cell orderp(Cell x, Cell y) { + local Cell aux; + if (x.typ == NODE) { + return nilAtom; + } + if (y.typ == NODE) { + return tAtom; + } + if (x.typ == NUMBER && y.typ == NUMBER) { + if (x.val < y.val) { + return tAtom; + } + return nilAtom; + } + if (x.typ == NUMBER) { + return tAtom; + } + if (y.typ == NUMBER) { + return nilAtom; + } + // both x and y are names + aux = objectList; + while (aux.typ == NODE) { + if (aux.car == x) { + return nilAtom; + } + if (aux.car == y) { + return tAtom; + } + aux = aux.cdr; + } + // this should never be reached + return nilAtom; +} + +// ------------------------------------------------------------- +// F. Logical Functions +// ------------------------------------------------------------- + +Cell not(Cell x) { + if (x == nilAtom) { + return tAtom; + } + return nilAtom; +} + +Cell and(Cell x) { + // ATTENTION: CBN + while (x.typ == NODE) { + if (eval(x.car) == nilAtom) { + return nilAtom; + } + x = x.cdr; + } + return tAtom; +} + +Cell or(Cell x) { + // ATTENTION: CBN + while (x.typ == NODE) { + if (eval(x.car) != nilAtom) { + return tAtom; + } + x = x.cdr; + } + return nilAtom; +} + +// ------------------------------------------------------------- +// G. Assignment Functions +// ------------------------------------------------------------- + +Cell set(Cell x, Cell y) { + x.car = y; + return y; +} + +Cell setq(Cell x) { + // ATTENTION: CBN + local Cell aux; + aux = eval(x.cdr.car); + x.car.car = aux; + return aux; +} + +Cell pop(Cell x) { + // ATTENTION: CBN + local Cell aux; + aux = eval(x.car); + x.car.car = aux.cdr; + return aux.car; +} + +Cell push(Cell x) { + // ATTENTION: CBN + local Cell aux1; + local Cell aux2; + local Cell aux3; + aux1 = eval(x.car); + aux2 = eval(x.cdr.car); + aux3 = makeNode(aux1, aux2); + x.cdr.car.car = aux3; + return aux3; +} + +// ------------------------------------------------------------- +// H. Property Functions +// ------------------------------------------------------------- + +Cell assoc(Cell x, Cell y) { + while (y.typ == NODE) { + if (y.car.typ == NODE && equal(y.car.car, x) == tAtom) { + return y.car; + } + y = y.cdr; + } + return y; +} + +Cell get(Cell x, Cell y) { + local Cell aux; + aux = assoc(y, x.cdr); + if (aux.typ != NODE) { + return nilAtom; + } + return aux.cdr; +} + +Cell put(Cell x, Cell y, Cell z) { + local Cell aux; + aux = assoc(y, x.cdr); + if (aux.typ != NODE) { + aux = makeNode(y, z); + x.cdr = makeNode(aux, x.cdr); + return z; + } + aux.cdr = z; + return z; +} + +Cell remprop(Cell x, Cell y) { + while (x.cdr.typ == NODE) { + if (equal(x.cdr.car.car, y) == tAtom) { + y = x.cdr.car.cdr; + x.cdr = x.cdr.cdr; + return y; + } + x = x.cdr; + } + return x.cdr; +} + +// ------------------------------------------------------------- +// I. Flag Functions +// ------------------------------------------------------------- + +Cell flagp(Cell x, Cell y) { + return member(y, x.cdr); +} + +Cell flag(Cell x, Cell y) { + if (member(y, x.cdr) == tAtom) { + return y; + } + x.cdr = makeNode(y, x.cdr); + return y; +} + +Cell remflag(Cell x, Cell y) { + while (x.cdr.typ == NODE) { + if (equal(y, x.cdr.car) == tAtom) { + x.cdr = x.cdr.cdr; + return y; + } + x = x.cdr; + } + return nilAtom; +} + +// ------------------------------------------------------------- +// J. Definition Functions +// ------------------------------------------------------------- + +Cell getd(Cell x) { + if (x.typ != NAME) { + return nilAtom; + } + return copyTree(x.func); +} + +Cell putd(Cell x, Cell y) { + if (x.typ != NAME) { + return nilAtom; + } + x.func = copyTree(y); + return y; +} + +Cell movd(Cell x, Cell y) { + if (x.typ != NAME || y.typ != NAME) { + return nilAtom; + } + y.func = x.func; + return copyTree(y.func); +} + +// ------------------------------------------------------------- +// K. Sub-atomic Functions +// ------------------------------------------------------------- + +// +// auxiliary stuff +// + +void addNumberToStringBuffer(StringBuffer strBuf, Integer n) { + local Integer a; + local Integer b; + if (n < 0) { + addCharToStringBuffer(strBuf, '-'); + n = -n; + } + a = n / numBase; + if (a != 0) { + addNumberToStringBuffer(strBuf, a); + } + b = n % numBase; + if (b < 10) { + addCharToStringBuffer(strBuf, int2char(char2int('0') + b)); + } else { + if (a == 0) { + // this is the first digit printed, and it is >= 10 + // prepend a single zero to distinguish number from name + addCharToStringBuffer(strBuf, '0'); + } + addCharToStringBuffer(strBuf, int2char(char2int('A') + (b - 10))); + } +} + +Integer countName(String s) { + local Integer k; + local Integer n; + local Integer i; + local Character ch; + local Boolean quoted; + k = 0; + n = sizeof(s); + i = 0; + quoted = false; + while (i < n) { + ch = s[i]; + if (prin1Atom.car == nilAtom && isSpecial(ch) && !quoted) { + quoted = true; + k = k + 1; + } + k = k + 1; + if (ch == '\"' && quoted) { + k = k + 1; + } + i = i + 1; + } + if (quoted) { + k = k + 1; + } + return k; +} + +Integer countNumber(Integer n) { + local Integer k; + local Integer a; + local Integer b; + k = 0; + if (n < 0) { + k = k + 1; + n = -n; + } + a = n / numBase; + if (a != 0) { + k = k + countNumber(a); + } + b = n % numBase; + if (a == 0 && b >= 10) { + // leading zero, see printNumber() + k = k + 1; + } + k = k + 1; + return k; +} + +// +// end of auxiliary stuff +// + +Cell pack(Cell x) { + local StringBuffer strBuf; + local String str; + strBuf = newStringBuffer(20); + while (x.typ == NODE) { + if (x.car.typ == NAME) { + addStringToStringBuffer(strBuf, x.car.name); + } else + if (x.car.typ == NUMBER) { + addNumberToStringBuffer(strBuf, x.car.val); + } + x = x.cdr; + } + str = stringBufferToString(strBuf); + return searchOblist(str); +} + +Cell unpack(Cell x) { + local StringBuffer strBuf; + local String str; + local Integer i; + local Cell anchor; + local Cell aux; + strBuf = newStringBuffer(20); + if (x.typ == NAME) { + addStringToStringBuffer(strBuf, x.name); + } else + if (x.typ == NUMBER) { + addNumberToStringBuffer(strBuf, x.val); + } else { + return nilAtom; + } + str = stringBufferToString(strBuf); + anchor = makeNode(nilAtom, nilAtom); + anchor.car = anchor; + i = 0; + while (i < sizeof(str)) { + aux = searchOblist(toString(str[i])); + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + i = i + 1; + } + return anchor.cdr; +} + +Cell length(Cell x) { + local Integer n; + if (x.typ == NAME) { + return makeNumber(countName(x.name)); + } + if (x.typ == NUMBER) { + return makeNumber(countNumber(x.val)); + } + n = 0; + while (x.typ == NODE) { + n = n + 1; + x = x.cdr; + } + return makeNumber(n); +} + +// ------------------------------------------------------------- +// L. Numerical Functions +// ------------------------------------------------------------- + +// +// auxiliary stuff +// + +void zeroDivideError() { + error("ZERO Divide Error", false); +} + +// +// end of auxiliary stuff +// + +Cell minus(Cell x) { + if (x.typ != NUMBER) { + return nilAtom; + } + return makeNumber(-x.val); +} + +Cell plus(Cell x, Cell y) { + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + return makeNumber(x.val + y.val); +} + +Cell difference(Cell x, Cell y) { + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + return makeNumber(x.val - y.val); +} + +Cell times(Cell x, Cell y) { + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + return makeNumber(x.val * y.val); +} + +Cell quotient(Cell x, Cell y) { + local Integer q; + local Integer r; + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + if (y.val == 0) { + zeroDivideError(); + return nilAtom; + } + q = x.val / y.val; + r = x.val % y.val; + if (r < 0) { + if (q < 0) { + q = q - 1; + } else { + q = q + 1; + } + } + return makeNumber(q); +} + +Cell remainder(Cell x, Cell y) { + local Integer q; + local Integer r; + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + if (y.val == 0) { + zeroDivideError(); + return nilAtom; + } + q = x.val / y.val; + r = x.val % y.val; + if (r < 0) { + if (q < 0) { + r = r + y.val; + } else { + r = r - y.val; + } + } + return makeNumber(r); +} + +Cell divide(Cell x, Cell y) { + local Integer q; + local Integer r; + if (x.typ != NUMBER || y.typ != NUMBER) { + return nilAtom; + } + if (y.val == 0) { + zeroDivideError(); + return nilAtom; + } + q = x.val / y.val; + r = x.val % y.val; + if (r < 0) { + if (q < 0) { + q = q - 1; + r = r + y.val; + } else { + q = q + 1; + r = r - y.val; + } + } + return makeNode(makeNumber(q), makeNumber(r)); +} + +// ------------------------------------------------------------- +// M. Reader Functions and Control Variables +// ------------------------------------------------------------- + +// +// auxiliary stuff +// + +global Boolean singleBreak; + +global Boolean unreadPresent; +global Character unreadChar; + +void unread(Character ch) { + unreadPresent = true; + unreadChar = ch; +} + +Character readChar() { + local Character ch; + if (unreadPresent) { + unreadPresent = false; + return unreadChar; + } + if (rdsAtom.car == nilAtom) { + if (readchAtom.car == nilAtom) { + ch = readCharacter(); + } else { + ch = readCharacter(); + } + } else { + // file input not implemented + ch = ' '; + if (echoAtom.car != nilAtom) { + printChar(ch); + } + } + if (readAtom.car == nilAtom) { + ch = toUpper(ch); + } + return ch; +} + +String readToken(Boolean[] sep, Boolean[] brk) { + local Boolean quoted; + local Character ch; + local StringBuffer strBuf; + quoted = false; + ch = readChar(); + while (ch == '%' || sep[char2int(ch)]) { + if (ch == '%') { + while (readChar() != '%') ; + } + ch = readChar(); + } + if (brk[char2int(ch)]) { + singleBreak = true; + return toString(ch); + } + strBuf = newStringBuffer(20); + while (true) { + if (quoted) { + if (ch == '\"') { + ch = readChar(); + if (ch == '\"') { + addCharToStringBuffer(strBuf, ch); + ch = readChar(); + } else { + quoted = false; + } + } else { + addCharToStringBuffer(strBuf, ch); + ch = readChar(); + } + } else { + if (ch == '\"') { + quoted = true; + ch = readChar(); + } else + if (ch == '%') { + while (readChar() != '%') ; + ch = readChar(); + } else + if (sep[char2int(ch)] || brk[char2int(ch)]) { + unread(ch); + singleBreak = false; + return stringBufferToString(strBuf); + } else { + addCharToStringBuffer(strBuf, ch); + ch = readChar(); + } + } + } +} + +Cell tokenToAtom(String token) { + local Boolean couldConvert; + local Boolean isNegative; + local Integer number; + local Integer i; + local Character ch; + local Integer d; + local Cell aux; + couldConvert = true; + isNegative = false; + number = 0; + i = 0; + if (i < sizeof(token) && token[i] == '-') { + isNegative = true; + i = i + 1; + } + if (i < sizeof(token) && isDigit(token[i])) { + while (i < sizeof(token)) { + ch = token[i]; + i = i + 1; + if (isDigit(ch)) { + d = char2int(ch) - char2int('0'); + if (d < numBase) { + number = number * numBase + d; + } else { + couldConvert = false; + break; + } + } else + if (isAlpha(ch)) { + ch = toUpper(ch); + d = char2int(ch) - char2int('A'); + if (d < numBase) { + number = number * numBase + d; + } else { + couldConvert = false; + break; + } + } else { + couldConvert = false; + break; + } + } + } else { + couldConvert = false; + } + if (couldConvert) { + if (isNegative) { + number = -number; + } + aux = makeNumber(number); + } else { + aux = searchOblist(token); + } + ratomAtom.car = aux; + return aux; +} + +Cell read0(String token) { + local Character ch; + while (true) { + if (!singleBreak) { + return tokenToAtom(token); + } + ch = token[0]; + if (ch == '(') { + token = readToken(RES, REB); + return readList(token); + } else + if (ch == '[') { + token = readToken(RES, REB); + return readBracket(token); + } else + if (ch == ')' || ch == ']' || ch == '.') { + token = readToken(RES, REB); + } else { + error("internal read0 error", true); + } + } +} + +Cell readList(String token) { + local Cell anchor; + local Cell aux; + anchor = makeNode(nilAtom, nilAtom); + anchor.car = anchor; + while (true) { + if (singleBreak && token[0] == ')') { + return anchor.cdr; + } else + if (singleBreak && token[0] == ']') { + unread(']'); + return anchor.cdr; + } else + if (singleBreak && token[0] == '.') { + token = readToken(RES, REB); + aux = read0(token); + token = readToken(RES, REB); + if (singleBreak && token[0] == ')') { + anchor.car.cdr = aux; + return anchor.cdr; + } else + if (singleBreak && token[0] == ']') { + unread(']'); + anchor.car.cdr = aux; + return anchor.cdr; + } else { + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + } + } else { + aux = read0(token); + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + token = readToken(RES, REB); + } + } +} + +Cell readBracket(String token) { + local Cell aux1; + local Cell aux2; + aux1 = readList(token); + while (true) { + token = readToken(RES, REB); + if (singleBreak && token[0] == ')') { + return aux1; + } else + if (singleBreak && token[0] == ']') { + return aux1; + } else { + aux2 = readList(token); + aux1 = makeNode(aux1, aux2); + } + } +} + +// +// end of auxiliary stuff +// + +Cell rds(Cell x, Cell y, Cell z) { + // file handling not implemented + // error("RDS not implemented", false); + return nilAtom; +} + +Cell ratom() { + local String token; + token = readToken(RAS, RAB); + return tokenToAtom(token); +} + +Cell read() { + local String token; + token = readToken(RES, REB); + return read0(token); +} + +Cell readch() { + local Character ch; + local Integer n; + local String s; + local Cell aux; + ch = readChar(); + if (isDigit(ch)) { + n = char2int(ch) - char2int('0'); + if (n < numBase) { + aux = makeNumber(n); + } else { + s = toString(ch); + aux = searchOblist(s); + } + } else { + s = toString(ch); + aux = searchOblist(s); + } + ratomAtom.car = aux; + return aux; +} + +// ------------------------------------------------------------- +// N. Printer Functions and Control Variables +// ------------------------------------------------------------- + +// +// auxiliary stuff +// + +void putConsole(Character ch) { + // do any terminal-specific character translations here + writeCharacter(ch); +} + +void printChar(Character ch) { + local Integer ascii; + // handle case conversion + if (printAtom.car == nilAtom) { + ch = toLower(ch); + } + // determine output sink + if (wrsAtom.car == nilAtom) { + putConsole(ch); + } else { + // file output not implemented + if (echoAtom.car != nilAtom) { + putConsole(ch); + } + } + // update cursor position + ascii = char2int(ch); + if (ascii == 8) { + // CTRL-H, backspace + cursPos = cursPos - 1; + } else + if (ascii == 9) { + // CTRL-I, tab + cursPos = ((cursPos + 8) / 8) * 8; + } else + if (ascii == 10) { + // CTRL-J, begin of next line + cursPos = 0; + } else + if (ascii == 11) { + // CTRL-K, begin of previous line + cursPos = 0; + } else + if (ascii == 12) { + // CTRL-L, begin of screen + cursPos = 0; + } else + if (ascii == 13) { + // CTRL-M, begin of current line + cursPos = 0; + } else { + // all other characters + cursPos = cursPos + 1; + } +} + +Boolean isSpecial(Character ch) { + local Integer index; + index = char2int(ch); + return OSP[index] || REB[index] || RES[index]; +} + +void printName(String s) { + local Integer n; + local Integer i; + local Character ch; + local Boolean quoted; + n = sizeof(s); + i = 0; + quoted = false; + while (i < n) { + ch = s[i]; + if (prin1Atom.car == nilAtom && isSpecial(ch) && !quoted) { + quoted = true; + printChar('\"'); + } + printChar(ch); + if (ch == '\"' && quoted) { + printChar('\"'); + } + i = i + 1; + } + if (quoted) { + printChar('\"'); + } +} + +void printNumber(Integer n) { + local Integer a; + local Integer b; + if (n < 0) { + printChar('-'); + n = -n; + } + a = n / numBase; + if (a != 0) { + printNumber(a); + } + b = n % numBase; + if (b < 10) { + printChar(int2char(char2int('0') + b)); + } else { + if (a == 0) { + // this is the first digit printed, and it is >= 10 + // prepend a single zero to distinguish number from name + printChar('0'); + } + printChar(int2char(char2int('A') + (b - 10))); + } +} + +// +// end of auxiliary stuff +// + +Cell wrs(Cell x, Cell y, Cell z) { + // file handling not implemented + // error("WRS not implemented", false); + return nilAtom; +} + +Cell print(Cell x) { + prin1(x); + printChar('\n'); + return x; +} + +Cell prin1(Cell x) { + if (x.typ == NAME) { + printName(x.name); + return x; + } + if (x.typ == NUMBER) { + printNumber(x.val); + return x; + } + printChar('('); + prin1(x.car); + x = x.cdr; + while (x.typ == NODE) { + printChar(' '); + prin1(x.car); + x = x.cdr; + } + if (x != nilAtom) { + printChar(' '); + printChar('.'); + printChar(' '); + prin1(x); + } + printChar(')'); + return x; +} + +Cell terpri(Cell x) { + local Integer n; + if (x.typ == NUMBER) { + n = x.val; + if (n < 0 || n > 255) { + printChar('\n'); + return nilAtom; + } + while (n > 0) { + printChar('\n'); + n = n - 1; + } + return nilAtom; + } + printChar('\n'); + return nilAtom; +} + +Cell spaces(Cell x) { + local Integer n; + if (x.typ == NUMBER) { + n = x.val; + if (n < 0 || n > 255) { + return makeNumber(cursPos); + } + while (n > 0) { + printChar(' '); + n = n - 1; + } + return makeNumber(cursPos); + } + return makeNumber(cursPos); +} + +Cell linelength(Cell x) { + local Integer n; + local Cell aux; + if (x.typ == NUMBER) { + n = x.val; + if (n > 11 && n < 256) { + aux = makeNumber(lineLen); + lineLen = n; + return aux; + } + return makeNumber(lineLen); + } + return makeNumber(lineLen); +} + +Cell radix(Cell x) { + local Integer n; + local Cell aux; + if (x.typ == NUMBER) { + n = x.val; + if (n > 1 && n < 37) { + aux = makeNumber(numBase); + numBase = n; + return aux; + } + return makeNumber(numBase); + } + return makeNumber(numBase); +} + +// ------------------------------------------------------------- +// O. Evaluation Functions +// ------------------------------------------------------------- + +// +// auxiliary stuff +// + +Cell evlis(Cell x) { + local Cell anchor; + local Cell aux; + anchor = makeNode(nilAtom, nilAtom); + anchor.car = anchor; + while (x.typ == NODE) { + aux = eval(x.car); + anchor.car.cdr = makeNode(aux, nilAtom); + anchor.car = anchor.car.cdr; + x = x.cdr; + } + anchor.car.cdr = x; + return anchor.cdr; +} + +Cell evalbody(Cell x, Cell y) { + local Cell aux; + aux = x; + while (y.typ == NODE) { + if (y.car.typ != NODE || y.car.car.typ != NODE) { + aux = eval(y.car); + y = y.cdr; + } else + if (y.car.car.car.typ != NODE) { + aux = eval(y.car.car); + if (aux == nilAtom) { + y = y.cdr; + } else { + y = y.car.cdr; + } + } else { + aux = evalbody(aux, y.car); + y = y.cdr; + } + } + return aux; +} + +void bind(Cell x, Cell y) { + if (x.typ != NODE) { + if (x != nilAtom) { + argStack = makeNode(x.car, argStack); + x.car = y; + } + return; + } + while (x.typ == NODE && y.typ == NODE) { + argStack = makeNode(x.car.car, argStack); + x.car.car = y.car; + x = x.cdr; + y = y.cdr; + } + while (x.typ == NODE) { + argStack = makeNode(x.car.car, argStack); + x.car.car = nilAtom; + x = x.cdr; + } +} + +void unbind(Cell x) { + local Cell aux; + if (x.typ != NODE) { + if (x != nilAtom) { + x.car = argStack.car; + argStack = argStack.cdr; + } + return; + } + aux = nilAtom; + while (x.typ == NODE) { + aux = makeNode(x.car, aux); + x = x.cdr; + } + while (aux.typ == NODE) { + aux.car.car = argStack.car; + argStack = argStack.cdr; + aux = aux.cdr; + } +} + +// +// end of auxiliary stuff +// + +Cell quote(Cell x) { + // ATTENTION: CBN + return x.car; +} + +Cell eval(Cell x) { + local Cell aux; + if (x.typ != NODE) { + return x.car; + } + if (x.car.typ == NAME) { + if (x.car.func == nilAtom) { + if (x.car == x.car.car) { + return evlis(x); + } + aux = makeNode(x.car.car, x.cdr); + return eval(aux); + } + if (x.car.func.car == subrAtom || + x.car.func.car == lambdaAtom) { + aux = evlis(x.cdr); + return apply(x.car, aux); + } + if (x.car.func.car == nsubrAtom || + x.car.func.car == nlambdaAtom) { + return apply(x.car, x.cdr); + } + return evlis(x); + } + if (x.car.car == lambdaAtom) { + aux = evlis(x.cdr); + return apply(x.car, aux); + } + if (x.car.car == nlambdaAtom) { + return apply(x.car, x.cdr); + } + return evlis(x); +} + +Cell apply(Cell x, Cell y) { + local Cell aux; + if (x.typ == NAME) { + if (x.func == nilAtom) { + if (x == x.car) { + return nilAtom; + } + return apply(x.car, y); + } + if (x.func.car == subrAtom) { + if (y.typ != NODE) { + return exec(x.func.cdr.val, nilAtom, nilAtom, nilAtom); + } + if (y.cdr.typ != NODE) { + return exec(x.func.cdr.val, y.car, nilAtom, nilAtom); + } + if (y.cdr.cdr.typ != NODE) { + return exec(x.func.cdr.val, y.car, y.cdr.car, nilAtom); + } + return exec(x.func.cdr.val, y.car, y.cdr.car, y.cdr.cdr.car); + } + if (x.func.car == nsubrAtom) { + return exec(x.func.cdr.val, y, nilAtom, nilAtom); + } + if (x.func.car == lambdaAtom || x.func.car == nlambdaAtom) { + bind(x.func.cdr.car, y); + aux = evalbody(nilAtom, x.func.cdr.cdr); + unbind(x.func.cdr.car); + return aux; + } + return nilAtom; + } + if (x.car == lambdaAtom || x.car == nlambdaAtom) { + bind(x.cdr.car, y); + aux = evalbody(nilAtom, x.cdr.cdr); + unbind(x.cdr.car); + return aux; + } + return nilAtom; +} + +Cell cond(Cell x) { + // ATTENTION: CBN + local Cell aux; + while (x.typ == NODE) { + aux = eval(x.car.car); + if (aux != nilAtom) { + return evalbody(aux, x.car.cdr); + } + x = x.cdr; + } + return nilAtom; +} + +Cell loop(Cell x) { + // ATTENTION: CBN + local Cell aux1; + local Cell aux2; + while (true) { + aux1 = x; + while (aux1.typ == NODE) { + if (aux1.car.typ != NODE || aux1.car.car.typ != NODE) { + eval(aux1.car); + aux1 = aux1.cdr; + } else + if (aux1.car.car.car.typ != NODE) { + aux2 = eval(aux1.car.car); + if (aux2 != nilAtom) { + return evalbody(aux2, aux1.car.cdr); + } + aux1 = aux1.cdr; + } else { + evalbody(nilAtom, aux1.car); + aux1 = aux1.cdr; + } + } + } +} + +Cell prog1(Cell x) { + // ATTENTION: CBN + local Cell aux; + aux = eval(x.car); + x = x.cdr; + while (x.typ == NODE) { + eval(x.car); + x = x.cdr; + } + return aux; +} + +Cell driver() { + local Cell aux1; + local Cell aux2; + rdsAtom.car = nilAtom; + wrsAtom.car = nilAtom; + echoAtom.car = nilAtom; + readchAtom.car = readchAtom; + while (true) { + printChar('\n'); + printChar('$'); + printChar('\n'); + //printChar('\n'); + //printChar('$'); + //printChar(' '); + aux1 = read(); + aux2 = eval(aux1); + print(aux2); + } + // never reached + return nilAtom; +} + +// ------------------------------------------------------------- +// P. Memory Management Functions +// ------------------------------------------------------------- + +Cell reclaim() { + // not implemented + error("RECLAIM not implemented", false); + return nilAtom; +} + +// ------------------------------------------------------------- +// Q. Environment Functions +// ------------------------------------------------------------- + +Cell save(Cell x, Cell y) { + error("SAVE not implemented", false); + return nilAtom; +} + +Cell load(Cell x, Cell y) { + error("LOAD not implemented", false); + return nilAtom; +} + +Cell system() { + writeString("\nThanks for using Ninja LISP!\n\n"); + exit(); + // never reached + return nilAtom; +} + +// ------------------------------------------------------------- +// R. Mutator Functions +// ------------------------------------------------------------- + +Cell xchgpname(Cell x, Cell y) { + local String name; + if (x.typ != NAME || y.typ != NAME) { + return nilAtom; + } + name = x.name; + x.name = y.name; + y.name = name; + return tAtom; +} + +Cell purgename(Cell x) { + local Cell aux; + if (x.typ != NAME) { + return nilAtom; + } + aux = objectList; + if (aux.typ == NODE) { + if (aux.car == x) { + objectList = aux.cdr; + return tAtom; + } + while (aux.cdr.typ == NODE) { + if (aux.cdr.car == x) { + aux.cdr = aux.cdr.cdr; + return tAtom; + } + aux = aux.cdr; + } + } + return nilAtom; +} + +// ------------------------------------------------------------- +// Main Program +// ------------------------------------------------------------- + +void initConstants() { + NAME = 0; + NUMBER = 1; + NODE = 2; +} + +void initCharTypes() { + local Integer i; + RAS = new(Boolean[128]); + RAB = new(Boolean[128]); + RES = new(Boolean[128]); + REB = new(Boolean[128]); + OSP = new(Boolean[128]); + i = 0; + while (i < 128) { + RAS[i] = false; + RAB[i] = false; + RES[i] = false; + REB[i] = false; + OSP[i] = false; + i = i + 1; + } + // ratom separator characters + RAS[char2int(' ')] = true; + RAS[char2int('\r')] = true; + RAS[char2int('\n')] = true; + RAS[char2int('\t')] = true; + // ratom break characters + RAB[char2int('!')] = true; + RAB[char2int('$')] = true; + RAB[char2int('&')] = true; + RAB[char2int('\'')] = true; + RAB[char2int('(')] = true; + RAB[char2int(')')] = true; + RAB[char2int('*')] = true; + RAB[char2int('+')] = true; + RAB[char2int(',')] = true; + RAB[char2int('-')] = true; + RAB[char2int('.')] = true; + RAB[char2int('/')] = true; + RAB[char2int('@')] = true; + RAB[char2int(':')] = true; + RAB[char2int(';')] = true; + RAB[char2int('<')] = true; + RAB[char2int('=')] = true; + RAB[char2int('>')] = true; + RAB[char2int('?')] = true; + RAB[char2int('[')] = true; + RAB[char2int('\\')] = true; + RAB[char2int(']')] = true; + RAB[char2int('^')] = true; + RAB[char2int('_')] = true; + RAB[char2int('`')] = true; + RAB[char2int('{')] = true; + RAB[char2int('|')] = true; + RAB[char2int('}')] = true; + RAB[char2int('~')] = true; + // read separator characters + RES[char2int(' ')] = true; + RES[char2int(',')] = true; + RES[char2int('\r')] = true; + RES[char2int('\n')] = true; + RES[char2int('\t')] = true; + // read break characters + REB[char2int('(')] = true; + REB[char2int(')')] = true; + REB[char2int('.')] = true; + REB[char2int('[')] = true; + REB[char2int(']')] = true; + // other special characters + OSP[char2int('\"')] = true; + OSP[char2int('%')] = true; +} + +void initObjects() { + // init NIL, objectList, and argStack + nilAtom = makeNil(); + objectList = nilAtom; + addOblist(nilAtom); + argStack = nilAtom; + // init other objects and functions + tAtom = makeObject("T"); + subrAtom = makeObject("SUBR"); + nsubrAtom = makeObject("NSUBR"); + lambdaAtom = makeObject("LAMBDA"); + nlambdaAtom = makeObject("NLAMBDA"); + echoAtom = makeObject("ECHO"); + readAtom = makeBuiltin("READ", subrAtom, 64); + ratomAtom = makeBuiltin("RATOM", subrAtom, 63); + readchAtom = makeBuiltin("READCH", subrAtom, 65); + rdsAtom = makeBuiltin("RDS", subrAtom, 62); + printAtom = makeBuiltin("PRINT", subrAtom, 67); + prin1Atom = makeBuiltin("PRIN1", subrAtom, 68); + wrsAtom = makeBuiltin("WRS", subrAtom, 66); + driverAtom = makeBuiltin("DRIVER", subrAtom, 79); + carAtom = makeBuiltin("CAR", subrAtom, 0); + cdrAtom = makeBuiltin("CDR", subrAtom, 1); + cadrAtom = makeBuiltin("CADR", subrAtom, 3); + cddrAtom = makeBuiltin("CDDR", subrAtom, 5); + caddrAtom = makeBuiltin("CADDR", subrAtom, 9); + cdddrAtom = makeBuiltin("CDDDR", subrAtom, 13); + caarAtom = makeBuiltin("CAAR", subrAtom, 2); + cdarAtom = makeBuiltin("CDAR", subrAtom, 4); + caaarAtom = makeBuiltin("CAAAR", subrAtom, 6); + cdaarAtom = makeBuiltin("CDAAR", subrAtom, 10); + cadarAtom = makeBuiltin("CADAR", subrAtom, 8); + cddarAtom = makeBuiltin("CDDAR", subrAtom, 12); + caadrAtom = makeBuiltin("CAADR", subrAtom, 7); + cdadrAtom = makeBuiltin("CDADR", subrAtom, 11); + consAtom = makeBuiltin("CONS", subrAtom, 14); + rplacaAtom = makeBuiltin("RPLACA", subrAtom, 18); + rplacdAtom = makeBuiltin("RPLACD", subrAtom, 19); + nconcAtom = makeBuiltin("NCONC", subrAtom, 20); + setAtom = makeBuiltin("SET", subrAtom, 38); + assocAtom = makeBuiltin("ASSOC", subrAtom, 42); + putAtom = makeBuiltin("PUT", subrAtom, 44); + getAtom = makeBuiltin("GET", subrAtom, 43); + memberAtom = makeBuiltin("MEMBER", subrAtom, 31); + rempropAtom = makeBuiltin("REMPROP", subrAtom, 45); + flagpAtom = makeBuiltin("FLAGP", subrAtom, 46); + flagAtom = makeBuiltin("FLAG", subrAtom, 47); + remflagAtom = makeBuiltin("REMFLAG", subrAtom, 48); + movdAtom = makeBuiltin("MOVD", subrAtom, 51); + putdAtom = makeBuiltin("PUTD", subrAtom, 50); + getdAtom = makeBuiltin("GETD", subrAtom, 49); + packAtom = makeBuiltin("PACK", subrAtom, 52); + unpackAtom = makeBuiltin("UNPACK", subrAtom, 53); + lengthAtom = makeBuiltin("LENGTH", subrAtom, 54); + reverseAtom = makeBuiltin("REVERSE", subrAtom, 16); + oblistAtom = makeBuiltin("OBLIST", subrAtom, 17); + atomAtom = makeBuiltin("ATOM", subrAtom, 23); + nameAtom = makeBuiltin("NAME", subrAtom, 21); + nullAtom = makeBuiltin("NULL", subrAtom, 24); + notAtom = makeBuiltin("NOT", subrAtom, 35); + orderpAtom = makeBuiltin("ORDERP", subrAtom, 34); + orderedAtom = makeObject("ORDERED"); + eqAtom = makeBuiltin("EQ", subrAtom, 29); + equalAtom = makeBuiltin("EQUAL", subrAtom, 30); + applyAtom = makeBuiltin("APPLY", subrAtom, 75); + evalAtom = makeBuiltin("EVAL", subrAtom, 74); + reclaimAtom = makeBuiltin("RECLAIM", subrAtom, 80); + terpriAtom = makeBuiltin("TERPRI", subrAtom, 69); + spacesAtom = makeBuiltin("SPACES", subrAtom, 70); + linelengthAtom = makeBuiltin("LINELENGTH", subrAtom, 71); + radixAtom = makeBuiltin("RADIX", subrAtom, 72); + loadAtom = makeBuiltin("LOAD", subrAtom, 82); + saveAtom = makeBuiltin("SAVE", subrAtom, 81); + systemAtom = makeBuiltin("SYSTEM", subrAtom, 83); + numberpAtom = makeBuiltin("NUMBERP", subrAtom, 22); + greaterpAtom = makeBuiltin("GREATERP", subrAtom, 32); + lesspAtom = makeBuiltin("LESSP", subrAtom, 33); + pluspAtom = makeBuiltin("PLUSP", subrAtom, 25); + minuspAtom = makeBuiltin("MINUSP", subrAtom, 26); + zeropAtom = makeBuiltin("ZEROP", subrAtom, 27); + evenAtom = makeBuiltin("EVEN", subrAtom, 28); + minusAtom = makeBuiltin("MINUS", subrAtom, 55); + plusAtom = makeBuiltin("PLUS", subrAtom, 56); + differenceAtom = makeBuiltin("DIFFERENCE", subrAtom, 57); + timesAtom = makeBuiltin("TIMES", subrAtom, 58); + divideAtom = makeBuiltin("DIVIDE", subrAtom, 61); + quotientAtom = makeBuiltin("QUOTIENT", subrAtom, 59); + remainderAtom = makeBuiltin("REMAINDER", subrAtom, 60); + listAtom = makeBuiltin("LIST", nsubrAtom, 15); + quoteAtom = makeBuiltin("QUOTE", nsubrAtom, 73); + condAtom = makeBuiltin("COND", nsubrAtom, 76); + loopAtom = makeBuiltin("LOOP", nsubrAtom, 77); + prog1Atom = makeBuiltin("PROG1", nsubrAtom, 78); + andAtom = makeBuiltin("AND", nsubrAtom, 36); + orAtom = makeBuiltin("OR", nsubrAtom, 37); + setqAtom = makeBuiltin("SETQ", nsubrAtom, 39); + popAtom = makeBuiltin("POP", nsubrAtom, 40); + pushAtom = makeBuiltin("PUSH", nsubrAtom, 41); + xchgpnameAtom = makeBuiltin("XCHGPNAME", subrAtom, 84); + purgenameAtom = makeBuiltin("PURGENAME", subrAtom, 85); +} + +void initCtlVars() { + unreadPresent = false; + rdsAtom.car = nilAtom; + readAtom.car = readAtom; + readchAtom.car = readchAtom; + echoAtom.car = nilAtom; + wrsAtom.car = nilAtom; + printAtom.car = printAtom; + prin1Atom.car = prin1Atom; + cursPos = 0; + lineLen = 79; + numBase = 10; +} + +void main() { + // write greeting + writeString("\nWelcome to Ninja LISP!\n"); + // initialization + initConstants(); + initCharTypes(); + initObjects(); + initCtlVars(); + // start interpreter + while (true) { + apply(driverAtom, nilAtom); + } +} diff --git a/njvm.o b/njvm.o index 3b34aeee6115f8109fac381bd19e09d3cc264298..ba6a526c7f6a4e289896d1d20247a8c94673f930 100644 GIT binary patch literal 64176 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 literal 52104 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 literal 3400 zcmb7HYitx%6h5=l*`4jS+m;2S2r_8FR_Sg_+CX@=X^Zqh+O(C2M91xRS{8O^HoMzG zDG8()Lm~+@qVWd?!XG7?kZ7WqC~BIBi6KgigdhGOG0|3{#+aB?t@S%IckFg4QBHF1 zdE9fq`#fi7zx?B;zl(?@0&!CS-pGvx29<-a%C@>-v)$*o_wpE!YqOgXC`wHj;3zu{~mdU2$=Adxs`g}YWCnEY6EAB`~GIlQM zdcV;(G^j`W`qIWQueW(mWA~1KL+%Rgdm)?h@Zg>Y>EgxB0gH#^k@n!{Hg@D-OpNGZ9{nwX@#`5tV6X);Zjs8!(>_}?C{XQk|ro^%?{3l+_ zN@87EeaJi069^EPA(lJzby6CVY$yGDhy zjoUr> zex3APSpGQ?KlR1ASZurFRE(QKJm&l04&=;e<7Lb-{)w#Lnr)(+?wTeAF3$tM-M=H6 zjV3fBowm}Ov^AMRGL6Gs>3FiU@1POOR#s_)R#r1DEomgJ^ax31(wbmMk%ME$g1;OO zmOk`wuuNKn`|{LLYiLtobHIZWmnEq+gfg}oz705SrGn((wm^XMoz*~K8&qEjHl!{^ zj2z^VME(*OM1>)VV;o<&`;;53k zc~PZK)DOqY=fIpm(s8;@4&w?yMO1@!6WC-EG~x)mS8vRjMgPB;p7qbVch zbqKHIy#%59Jd7cQ{PGP*rn%5Z$fv#t&--AH-~SRsA?vEg8@LAfHv4@P_zLn}*3|-1 zCZPBVPl&>Jn^9Qg`##g51ZH087cAxh+15w%9X% zteoSD_oFTGoT0UB1xL|GrRTW?X<*6vi`#NBO0D5I+bZ#lQyp8&?NNR{66H}ilmcqx zimb&FQFBlmHqx26Wootc;hJ!bR%v^yYwK%j!nN?M57$>wW+;`i(%Eo~A|3I*bTmB@ zX*Pz9gq1SVktQpdjGFx&s3*OamB>VTn%gsxUC~%)&)#sR{}AP+eFn3ql;`a{!!Qmvu4n)(aN{!v!jr;VT)@NGu-hEvyx=w_&=r#r@6F+LukeP`O znnu4CH?!1_Jeu>^00W#_Eu2~NlZpn7>|Ba9BdW^+gpsCXX3z%eVR%OEiw}w!@moWd zMLT;Mcj5r;*U2x`y<_%C_%WRYLA6UEmp^3*(Q_4-jKg);!dE`sIMoGTKbXHxUI4!b z<~S~)&w`okM*#VwZ4ucI2l{8iwyzty#*>2FH3@UUH9bfSSAS-%cT6&v_a>uI7od3a z9+|k$(Pn3P4>c!F1unkv#dJ)2<=Bmvx4g6UXy^6)nbY5<(03C2D)=&(Q}h;?Um~xW zA9w{Mh!clhoJ_*SxyvqoyuvjhT%3-=WoIl*e&|byICD{mm^kTq{BE!ahGvt{n^zrDXqOTy{9Re$ZBw4~wkjo%#chhu+o6;}^^M8qn4);)(3m2(E9=^odU&5` zQ{*-!)TR`A+Zjh8??=kY!jno7Fx!<+c?VL~0SZMT5$6Smvm!!{P`eiyBTU6O-WCG7K%O#J!E{qDVUXihk_=h;np zHtEKZc$V~eKi!nj!~6lQ=aeD+zLiH$;r~T;fb?WEk+5Qv$R<