/programs/develop/scc/CC4.ASM |
---|
0,0 → 1,4131 |
_seq00 DD 0,1,51,0,257,75,0 |
_seq01 DD 0,74,0,2046,0,1792,65,1280,0,1795 |
DD 68,0,0 |
_seq02 DD 0,76,0,2046,0,1792,101,1280,0,1795 |
DD 102,0,0 |
_seq03 DD 0,65,62,68,0,258,1537,81,0,105 |
DD 0 |
_seq04 DD 0,65,64,68,0,258,1537,82,0,106 |
DD 0 |
_seq05 DD 0,65,61,68,0,257,103,257,80,511 |
DD 0 |
_seq06 DD 0,65,63,68,0,257,103,257,80,511 |
DD 0 |
_seq07 DD 0,30,33,1,51,28,0,260,1021,511 |
DD 89,1021,0 |
_seq08 DD 0,30,33,1,51,29,0,260,1021,511 |
DD 89,1021,0 |
_seq09 DD 0,30,33,1,51,32,0,260,1021,511 |
DD 89,1021,0 |
_seq10 DD 0,30,89,70,0,258,30,1023,511,1023 |
DD 0 |
_seq11 DD 0,30,51,0,257,89,1023,0 |
_seq12 DD 0,30,60,253,0,257,97,1023,0 |
_seq13 DD 0,31,61,253,0,100,257,80,511,2049 |
DD 0 |
_seq14 DD 0,31,63,253,0,100,257,80,511,2049 |
DD 0 |
_seq15 DD 0,32,60,253,0,257,98,1023,0 |
_seq16 DD 0,88,33,1,51,0,259,76,1022,511 |
DD 91,1022,0 |
_seq17 DD 0,88,91,70,0,258,88,1023,511,91 |
DD 1023,0 |
_seq18 DD 0,88,51,0,257,91,1023,0 |
_seq19 DD 0,89,31,70,69,0,259,104,1022,511 |
DD 30,1022,0 |
_seq20 DD 0,33,1,0,257,74,1023,0 |
_seq21 DD 0,91,31,70,69,0,259,104,1022,511 |
DD 88,1022,0 |
_seq22 DD 0,68,61,65,0,257,79,257,80,511 |
DD 0 |
_seq23 DD 0,68,63,65,0,257,79,257,80,511 |
DD 0 |
_seq24 DD 0,68,62,65,0,258,1537,92,0,77 |
DD 0 |
_seq25 DD 0,68,64,65,0,258,1537,93,0,78 |
DD 0 |
_seq26 DD 0,51,31,70,69,0,259,104,1022,0 |
_seq27 DD 0,51,31,251,0,257,33,0 |
_seq28 DD 0,25,33,1,51,0,259,94,1022,511 |
DD 84,1022,0 |
_seq29 DD 0,25,51,253,0,257,83,1023,0 |
_seq30 DD 0,25,60,253,254,0,2387,258,0 |
_seq31 DD 0,58,33,1,51,0,1025,259,95,1021 |
DD 0 |
_seq32 DD 0,58,60,51,0,257,95,1023,257,96 |
DD 511,0 |
_seq33 DD 0,58,60,253,254,0,2399,258,0 |
_seq34 DD 0,58,51,0,257,95,1023,0 |
_seq35 DD 0,83,28,252,0,257,26,1023,0 |
_seq36 DD 0,83,29,252,0,257,27,1023,0 |
_seq37 DD 0,83,32,252,0,257,30,1023,0 |
_seq38 DD 0,84,94,32,252,0,258,767,1023,511 |
DD 87,1023,0 |
_seq39 DD 0,95,28,252,0,1025,257,85,1023,0 |
_seq40 DD 0,95,29,252,0,1025,257,86,1023,0 |
_seq41 DD 0,95,32,60,253,0,1025,258,99,1022 |
DD 0 |
_seq42 DD 0,95,32,252,0,1025,257,88,1023,0 |
_seq43 DD 0,60,255,59,0,258,767,1023,511,51 |
DD 0 |
_seq44 DD 0,97,254,0,2393,257,0 |
_seq45 DD 0,98,255,59,0,258,767,1023,511,90 |
DD 1023,0 |
_seq46 DD 0,99,254,0,2395,257,0 |
_seq47 DD 0,104,0,2046,0,1792,68,1280,0,1795 |
DD 65,0,0 |
_seq: TIMES 48 DD 0 |
_setseq: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_seq |
PUSH EAX |
MOV EAX,_seq00 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq01 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq02 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq03 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq04 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,20 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq05 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq06 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,28 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq07 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq08 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,36 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq09 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,40 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq10 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,44 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq11 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,48 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq12 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,52 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq13 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,56 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq14 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,60 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq15 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq16 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,68 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq17 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,72 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq18 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,76 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq19 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,80 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq20 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,84 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq21 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,88 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq22 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,92 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq23 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,96 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq24 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,100 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq25 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,104 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq26 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,108 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq27 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,112 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq28 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,116 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq29 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,120 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq30 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,124 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq31 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,128 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq32 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,132 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq33 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,136 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq34 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,140 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq35 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,144 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq36 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,148 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq37 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,152 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq38 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,156 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq39 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,160 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq40 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,164 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq41 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,168 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq42 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,172 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq43 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,176 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq44 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,180 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq45 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,184 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq46 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_seq |
MOV EBX,188 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_seq47 |
POP EBX |
MOV [EBX],EAX |
POP EBP |
RET |
_code: TIMES 116 DD 0 |
_setcodes: |
PUSH EBP |
MOV EBP,ESP |
XOR CL,CL |
CALL _setseq |
MOV EAX,_code |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+0 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,296 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+15 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,300 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+33 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,304 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+48 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,308 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+66 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,312 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+88 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,316 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+110 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+119 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+137 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+152 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,20 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+163 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+189 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,28 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+229 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+269 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,36 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+281 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,40 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+293 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,44 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+299 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,48 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+312 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,52 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+331 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,320 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+342 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,56 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+350 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,60 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+363 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,324 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+376 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,328 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+394 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+412 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,68 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+429 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,444 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+453 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,448 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+459 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,452 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+470 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,72 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+489 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,76 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+514 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,80 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+557 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,84 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+570 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,88 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+614 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,92 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+627 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,104 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+641 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,108 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+665 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,112 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+689 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,116 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+719 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,340 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+749 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,344 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+776 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,428 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+803 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,432 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+820 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,436 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+849 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,440 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+873 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,120 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+902 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,348 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+926 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,124 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+948 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,128 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+978 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,352 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1009 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,356 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1037 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,132 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1059 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,360 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1088 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,364 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1118 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,136 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1145 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,140 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1188 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,144 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1201 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,368 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1215 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,372 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1233 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,148 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1251 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,152 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1257 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,156 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1270 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,160 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1289 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,164 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1301 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,168 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1310 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,172 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1354 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,176 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1367 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,180 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1381 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,184 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1396 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,188 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1439 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,192 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1452 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,196 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1466 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,200 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1496 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,204 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1533 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,208 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1548 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,212 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1560 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,216 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1571 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,220 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1615 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,224 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1628 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,228 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1640 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,376 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1654 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,96 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1665 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,100 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1685 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,232 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1700 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,332 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1720 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,336 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1735 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,380 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1748 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,236 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1768 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,240 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1779 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,384 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1791 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,388 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1803 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,392 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1815 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,396 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1835 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,400 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1855 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,244 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1864 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,248 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1885 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,456 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1901 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,460 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1924 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,252 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1941 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,256 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1962 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,260 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1978 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,404 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+1991 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,264 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2004 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,268 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2010 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,272 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2042 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,408 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2055 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,412 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2068 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,276 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2077 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,416 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2092 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,420 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2110 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,424 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2127 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,280 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2144 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,284 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2160 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,288 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2195 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_code |
MOV EBX,292 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_4_2+2212 |
POP EBX |
MOV [EBX],EAX |
POP EBP |
RET |
_4_2 DB -119,65,68,68,32,69,65,88,44,69 |
DB 66,88,13,10,0,8,63,65,68,68 |
DB 32,69,65,88,44,60,110,62,13,10 |
DB 63,63,0,-119,65,68,68,32,69,66 |
DB 88,44,69,65,88,13,10,0,8,63 |
DB 65,68,68,32,69,66,88,44,60,110 |
DB 62,13,10,63,63,0,1,65,68,68 |
DB 32,66,89,84,69,32,91,69,66,88 |
DB 93,44,60,110,62,13,10,0,1,65 |
DB 68,68,32,87,79,82,68,32,91,69 |
DB 66,88,93,44,60,110,62,13,10,0 |
DB 0,65,68,68,32,60,109,62,0,0 |
DB 63,65,68,68,32,69,83,80,44,60 |
DB 110,62,13,10,63,63,0,-119,65,78 |
DB 68,32,69,65,88,44,69,66,88,13 |
DB 10,0,8,78,69,71,32,69,65,88 |
DB 13,10,0,0,63,77,79,86,32,67 |
DB 76,44,60,110,62,63,88,79,82,32 |
DB 67,76,44,67,76,63,13,10,0,9 |
DB 77,79,86,32,69,67,88,44,69,65 |
DB 88,13,10,77,79,86,32,69,65,88 |
DB 44,69,66,88,13,10,83,65,76,32 |
DB 69,65,88,44,67,76,13,10,0,9 |
DB 77,79,86,32,69,67,88,44,69,65 |
DB 88,13,10,77,79,86,32,69,65,88 |
DB 44,69,66,88,13,10,83,65,82,32 |
DB 69,65,88,44,67,76,13,10,0,8 |
DB 67,65,76,76,32,69,65,88,13,10 |
DB 0,16,67,65,76,76,32,60,109,62 |
DB 13,10,0,0,32,68,66,32,0,0 |
DB 32,82,69,83,66,32,60,110,62,13 |
DB 10,0,0,32,84,73,77,69,83,32 |
DB 60,110,62,32,68,66,32,48,13,10 |
DB 0,8,78,79,84,32,69,65,88,13 |
DB 10,0,0,44,60,110,62,13,10,0 |
DB 8,83,72,76,32,69,65,88,44,49 |
DB 13,10,0,1,83,72,76,32,69,66 |
DB 88,44,49,13,10,0,1,68,69,67 |
DB 32,66,89,84,69,32,91,69,66,88 |
DB 93,13,10,0,1,68,69,67,32,87 |
DB 79,82,68,32,91,69,66,88,93,13 |
DB 10,0,9,67,68,81,13,10,73,68 |
DB 73,86,32,69,66,88,13,10,0,9 |
DB 88,79,82,32,69,68,88,44,69,68 |
DB 88,13,10,68,73,86,32,69,66,88 |
DB 13,10,0,0,32,68,68,32,0,0 |
DB 32,68,68,32,60,110,62,13,10,0 |
DB 0,32,84,73,77,69,83,32,60,110 |
DB 62,32,68,68,32,48,13,10,0,64 |
DB 80,85,83,72,32,69,66,80,13,10 |
DB 77,79,86,32,69,66,80,44,69,83 |
DB 80,13,10,0,8,60,103,62,79,82 |
DB 32,69,65,88,44,69,65,88,13,10 |
DB 74,69,32,95,60,100,62,13,10,74 |
DB 77,80,32,95,60,110,62,13,10,95 |
DB 60,100,62,58,13,10,0,-119,67,65 |
DB 76,76,32,95,95,101,113,13,10,0 |
DB 8,60,103,62,79,82,32,69,65,88 |
DB 44,69,65,88,13,10,74,71,69,32 |
DB 95,60,100,62,13,10,74,77,80,32 |
DB 95,60,110,62,13,10,95,60,100,62 |
DB 58,13,10,0,9,67,65,76,76,32 |
DB 95,95,103,101,13,10,0,9,67,65 |
DB 76,76,32,95,95,117,103,101,13,10 |
DB 0,16,77,79,86,83,88,32,69,65 |
DB 88,44,66,89,84,69,32,91,60,109 |
DB 62,93,13,10,0,16,77,79,86,90 |
DB 88,32,69,65,88,44,66,89,84,69 |
DB 32,91,60,109,62,93,13,10,0,17 |
DB 77,79,86,83,88,32,69,65,88,44 |
DB 66,89,84,69,32,91,69,66,88,63 |
DB 60,111,62,63,63,93,13,10,0,17 |
DB 77,79,86,90,88,32,69,65,88,44 |
DB 66,89,84,69,32,91,69,66,88,63 |
DB 60,111,62,63,63,93,13,10,0,16 |
DB 77,79,86,83,88,32,69,65,88,44 |
DB 66,89,84,69,32,91,69,66,80,60 |
DB 111,62,93,13,10,0,16,77,79,86 |
DB 90,88,32,69,65,88,44,66,89,84 |
DB 69,32,91,69,66,80,60,111,62,93 |
DB 13,10,0,16,77,79,86,32,69,65 |
DB 88,44,91,60,109,62,93,13,10,0 |
DB 16,63,77,79,86,32,69,65,88,44 |
DB 60,110,62,63,88,79,82,32,69,65 |
DB 88,44,69,65,88,63,13,10,0,17 |
DB 77,79,86,32,69,65,88,44,32,91 |
DB 69,66,88,63,60,111,62,63,63,93 |
DB 13,10,0,2,63,77,79,86,32,69 |
DB 66,88,44,60,110,62,63,88,79,82 |
DB 32,69,66,88,44,69,66,88,63,13 |
DB 10,0,16,77,79,86,83,88,32,69 |
DB 65,88,44,87,79,82,68,32,91,60 |
DB 109,62,93,13,10,0,16,77,79,86 |
DB 83,88,32,69,65,88,44,87,79,82 |
DB 68,32,91,60,109,62,93,0,16,63 |
DB 77,79,86,32,32,69,65,88,44,60 |
DB 110,62,63,88,79,82,32,69,65,88 |
DB 44,69,65,88,63,13,10,0,17,77 |
DB 79,86,83,88,32,69,65,88,44,32 |
DB 87,79,82,68,32,91,69,66,88,63 |
DB 60,111,62,63,63,93,13,10,0,16 |
DB 77,79,86,83,88,32,69,65,88,44 |
DB 32,87,79,82,68,32,91,69,66,80 |
DB 60,111,62,93,13,10,0,2,77,79 |
DB 86,83,88,32,69,66,88,44,87,79 |
DB 82,68,32,60,109,62,13,10,0,2 |
DB 63,77,79,86,32,69,66,88,44,60 |
DB 110,62,63,88,79,82,32,69,66,88 |
DB 44,69,66,88,63,13,10,0,17,77 |
DB 79,86,83,88,32,69,66,88,44,87 |
DB 79,82,68,32,91,69,66,88,63,60 |
DB 111,62,63,63,93,13,10,0,2,77 |
DB 79,86,83,88,32,69,66,88,44,87 |
DB 79,82,68,32,91,69,66,80,60,111 |
DB 62,93,13,10,0,8,60,103,62,79 |
DB 82,32,69,65,88,44,69,65,88,13 |
DB 10,74,71,32,95,60,100,62,13,10 |
DB 74,77,80,32,95,60,110,62,13,10 |
DB 95,60,100,62,58,13,10,0,8,67 |
DB 65,76,76,32,95,95,103,116,13,10 |
DB 0,9,67,65,76,76,32,95,95,117 |
DB 103,116,13,10,0,1,73,78,67,32 |
DB 66,89,84,69,32,91,69,66,88,93 |
DB 13,10,0,1,73,78,67,32,87,79 |
DB 82,68,32,91,69,66,88,93,13,10 |
DB 0,0,32,68,87,32,0,0,32,82 |
DB 69,83,87,32,60,110,62,13,10,0 |
DB 0,32,84,73,77,69,83,32,60,110 |
DB 62,32,68,87,32,48,13,10,0,0 |
DB 74,77,80,32,95,60,110,62,13,10 |
DB 0,0,95,60,110,62,58,13,10,0 |
DB 8,60,103,62,79,82,32,69,65,88 |
DB 44,69,65,88,13,10,74,76,69,32 |
DB 95,60,100,62,13,10,74,77,80,32 |
DB 95,60,110,62,13,10,95,60,100,62 |
DB 58,13,10,0,9,67,65,76,76,32 |
DB 95,95,108,101,13,10,0,9,67,65 |
DB 76,76,32,95,95,117,108,101,13,10 |
DB 0,8,67,65,76,76,32,95,95,108 |
DB 110,101,103,13,10,0,8,60,103,62 |
DB 79,82,32,69,65,88,44,69,65,88 |
DB 13,10,74,76,32,95,60,100,62,13 |
DB 10,74,77,80,32,95,60,110,62,13 |
DB 10,95,60,100,62,58,13,10,0,9 |
DB 67,65,76,76,32,95,95,108,116,13 |
DB 10,0,9,67,65,76,76,32,95,95 |
DB 117,108,116,13,10,0,9,67,68,81 |
DB 13,10,73,68,73,86,32,69,66,88 |
DB 13,10,77,79,86,32,69,65,88,44 |
DB 69,68,88,13,10,0,9,88,79,82 |
DB 32,69,68,88,44,69,68,88,13,10 |
DB 68,73,86,32,69,66,88,13,10,77 |
DB 79,86,32,69,65,88,44,69,68,88 |
DB 13,10,0,10,77,79,86,32,69,66 |
DB 88,44,69,65,88,13,10,0,-119,73 |
DB 77,85,76,32,69,66,88,13,10,0 |
DB -119,77,85,76,32,69,66,88,13,10 |
DB 0,8,60,103,62,79,82,32,69,65 |
DB 88,44,69,65,88,13,10,74,78,69 |
DB 32,95,60,100,62,13,10,74,77,80 |
DB 32,95,60,110,62,13,10,95,60,100 |
DB 62,58,13,10,0,-119,67,65,76,76 |
DB 32,95,95,110,101,13,10,0,0,32 |
DB 68,68,32,95,60,110,62,13,10,0 |
DB -119,79,82,32,69,65,88,44,69,66 |
DB 88,13,10,0,0,63,43,60,110,62 |
DB 63,63,13,10,0,16,77,79,86,32 |
DB 69,65,88,44,95,60,108,62,43,60 |
DB 110,62,13,10,0,16,77,79,86,32 |
DB 69,65,88,44,60,109,62,13,10,0 |
DB 16,76,69,65,32,69,65,88,44,91 |
DB 69,66,80,60,111,62,93,13,10,0 |
DB 2,77,79,86,32,69,66,88,44,60 |
DB 109,62,13,10,0,2,77,79,86,32 |
DB 69,66,88,44,60,109,62,0,2,76 |
DB 69,65,32,69,66,88,44,91,69,66 |
DB 80,60,111,62,93,13,10,0,2,80 |
DB 79,80,32,69,66,88,13,10,0,72 |
DB 80,85,83,72,32,69,65,88,13,10 |
DB 0,65,80,85,83,72,32,69,66,88 |
DB 13,10,0,64,80,85,83,72,32,60 |
DB 109,62,13,10,0,64,80,85,83,72 |
DB 32,91,69,66,88,63,60,111,62,63 |
DB 63,93,13,10,0,64,80,85,83,72 |
DB 32,91,69,66,80,63,60,111,62,63 |
DB 63,93,13,10,0,0,77,79,86,32 |
DB 60,109,62,0,8,77,79,86,32,66 |
DB 89,84,69,32,91,60,109,62,93,44 |
DB 65,76,13,10,0,9,77,79,86,32 |
DB 91,69,66,88,93,44,65,76,13,10 |
DB 0,8,77,79,86,32,68,87,79,82 |
DB 68,32,91,60,109,62,93,44,69,65 |
DB 88,13,10,0,9,77,79,86,32,91 |
DB 69,66,88,93,44,69,65,88,13,10 |
DB 0,8,77,79,86,32,87,79,82,68 |
DB 32,91,60,109,62,93,44,65,88,13 |
DB 10,0,9,77,79,86,32,91,69,66 |
DB 88,93,44,65,88,13,10,0,8,35 |
DB 68,69,67,32,69,65,88,13,10,35 |
DB 0,8,35,68,69,67,32,69,66,88 |
DB 13,10,35,0,0,95,60,110,62,0 |
DB 0,63,77,79,86,32,69,83,80,44 |
DB 69,66,80,13,10,63,63,80,79,80 |
DB 32,69,66,80,13,10,82,69,84,13 |
DB 10,0,8,35,73,78,67,32,69,65 |
DB 88,13,10,35,0,8,35,73,78,67 |
DB 32,69,66,88,13,10,35,0,0,83 |
DB 85,66,32,60,109,62,0,9,83,85 |
DB 66,32,69,65,88,44,69,66,88,13 |
DB 10,0,8,63,83,85,66,32,69,65 |
DB 88,44,60,110,62,13,10,63,63,0 |
DB 1,83,85,66,32,91,69,66,88,93 |
DB 44,60,110,62,13,10,0,1,83,85 |
DB 66,32,91,69,66,88,93,44,60,110 |
DB 62,13,10,0,9,88,67,72,71,32 |
DB 69,65,88,44,69,66,88,13,10,0 |
DB 10,80,79,80,32,69,66,88,13,10 |
DB 88,67,72,71,32,69,65,88,44,69 |
DB 66,88,13,10,80,85,83,72,32,69 |
DB 66,88,13,10,0,10,67,65,76,76 |
DB 32,95,95,115,119,105,116,99,104,13 |
DB 10,0,-119,88,79,82,32,69,65,88 |
DB 44,69,66,88,13,10,0 |
_header: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
POP EBP |
RET |
_trailer: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
MOV DWORD [_cptr],EAX |
_4_5: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
MOV EBX,3980 |
ADD EAX,EBX |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _4_7 |
JMP _4_6 |
_4_7: |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_11 |
JMP _4_9 |
_4_11: |
MOV EAX,[_cptr] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_12 |
JMP _4_9 |
_4_12: |
MOV EAX,1 |
JMP _4_10 |
_4_9: |
XOR EAX,EAX |
_4_10: |
OR EAX,EAX |
JNE _4_13 |
JMP _4_8 |
_4_13: |
MOV EAX,[_cptr] |
MOV EBX,11 |
ADD EAX,EBX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,3 |
CALL _external |
ADD ESP,12 |
_4_8: |
MOV EAX,[_cptr] |
MOV EBX,20 |
ADD EAX,EBX |
MOV DWORD [_cptr],EAX |
JMP _4_5 |
_4_6: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_setstage: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_snext] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _4_16 |
JMP _4_15 |
_4_16: |
MOV EAX,[_stage] |
MOV DWORD [_snext],EAX |
_4_15: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_snext] |
POP EBX |
MOV [EBX],EAX |
POP EBP |
RET |
_gen: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
JMP _4_20 |
_4_21: |
_4_22: |
_4_23: |
_4_24: |
MOV EAX,51 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_19 |
_4_25: |
_4_26: |
_4_27: |
_4_28: |
_4_29: |
MOV EAX,70 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_19 |
_4_30: |
MOV EAX,[_csp] |
MOV EBX,EAX |
MOV EAX,4 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_csp],EAX |
JMP _4_19 |
_4_31: |
MOV EAX,[_csp] |
MOV EBX,4 |
ADD EAX,EBX |
MOV DWORD [_csp],EAX |
JMP _4_19 |
_4_32: |
_4_33: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_csp] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_csp],EAX |
JMP _4_19 |
_4_20: |
CALL __switch |
DD _4_21 |
DD 29 |
DD _4_22 |
DD 28 |
DD _4_23 |
DD 32 |
DD _4_24 |
DD 109 |
DD _4_25 |
DD 69 |
DD _4_26 |
DD 49 |
DD _4_27 |
DD 50 |
DD _4_28 |
DD 16 |
DD _4_29 |
DD 17 |
DD _4_30 |
DD 60 |
DD _4_31 |
DD 59 |
DD _4_32 |
DD 2 |
DD _4_33 |
DD 67 |
DD 0 |
_4_19: |
MOV EAX,[_snext] |
OR EAX,EAX |
JE _4_35 |
JMP _4_34 |
_4_35: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _outcode |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_4_34: |
MOV EAX,[_snext] |
PUSH EAX |
MOV EAX,[_slast] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JNE _4_37 |
JMP _4_36 |
_4_37: |
MOV EAX,_4_17+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_4_36: |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_snext] |
MOV EBX,8 |
ADD EAX,EBX |
MOV DWORD [_snext],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_17 DB 115,116,97,103,105,110,103,32,98,117 |
DB 102,102,101,114,32,111,118,101,114,102 |
DB 108,111,119,0 |
_clearsta: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_40 |
JMP _4_39 |
_4_40: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_snext],EAX |
POP EBP |
RET |
_4_39: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_42 |
JMP _4_41 |
_4_42: |
XOR CL,CL |
CALL _dumpstag |
_4_41: |
XOR EAX,EAX |
MOV DWORD [_snext],EAX |
POP EBP |
RET |
_dumpstag: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
MOV EAX,[_snext] |
MOV DWORD [_stail],EAX |
MOV EAX,[_stage] |
MOV DWORD [_snext],EAX |
_4_44: |
MOV EAX,[_snext] |
PUSH EAX |
MOV EAX,[_stail] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _4_46 |
JMP _4_45 |
_4_46: |
MOVSX EAX,BYTE [_optimize] |
OR EAX,EAX |
JNE _4_48 |
JMP _4_47 |
_4_48: |
_4_49: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,-1 |
MOV [EBX],EAX |
_4_50: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX,47 |
CALL __le |
OR EAX,EAX |
JNE _4_52 |
JMP _4_51 |
_4_52: |
MOV EAX,_seq |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _peep |
ADD ESP,4 |
OR EAX,EAX |
JNE _4_54 |
JMP _4_53 |
_4_54: |
JMP _4_49 |
_4_53: |
JMP _4_50 |
_4_51: |
_4_47: |
MOV EAX,[_snext] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _outcode |
ADD ESP,8 |
MOV EAX,[_snext] |
MOV EBX,8 |
ADD EAX,EBX |
MOV DWORD [_snext],EAX |
JMP _4_44 |
_4_45: |
MOV ESP,EBP |
POP EBP |
RET |
_toseg: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_oldseg] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _4_57 |
JMP _4_56 |
_4_57: |
POP EBP |
RET |
_4_56: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_oldseg],EAX |
POP EBP |
RET |
_public: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_60 |
JMP _4_59 |
_4_60: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
JMP _4_61 |
_4_59: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
_4_61: |
XOR CL,CL |
CALL _newline |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _outname |
ADD ESP,4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_63 |
JMP _4_62 |
_4_63: |
XOR CL,CL |
CALL _colon |
XOR CL,CL |
CALL _newline |
_4_62: |
POP EBP |
RET |
_external: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_66 |
JMP _4_65 |
_4_66: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
JMP _4_67 |
_4_65: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
_4_67: |
POP EBP |
RET |
_outsize: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _4_70 |
JMP _4_69 |
_4_70: |
MOV EAX,_4_68+0 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
JMP _4_71 |
_4_69: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _4_73 |
JMP _4_72 |
_4_73: |
MOV EAX,_4_68+5 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
JMP _4_74 |
_4_72: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _4_76 |
JMP _4_75 |
_4_76: |
MOV EAX,_4_68+11 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
JMP _4_77 |
_4_75: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _4_79 |
JMP _4_78 |
_4_79: |
MOV EAX,_4_68+16 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
JMP _4_80 |
_4_78: |
MOV EAX,_4_68+21 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
_4_80: |
_4_77: |
_4_74: |
_4_71: |
POP EBP |
RET |
_4_68 DB 78,69,65,82,0,68,87,79,82,68 |
DB 0,66,89,84,69,0,87,79,82,68 |
DB 0,68,87,79,82,68,0 |
_point: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_4_81+0 |
PUSH EAX |
MOV CL,1 |
CALL _outline |
ADD ESP,4 |
POP EBP |
RET |
_4_81 DB 32,68,87,32,36,43,50,0 |
_dumplits: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_4_83: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_litptr] |
POP EBX |
CALL __lt |
OR EAX,EAX |
JNE _4_85 |
JMP _4_84 |
_4_85: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _4_87 |
JMP _4_86 |
_4_87: |
MOV EAX,10 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_88 |
_4_86: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _4_90 |
JMP _4_89 |
_4_90: |
MOV EAX,37 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_91 |
_4_89: |
MOV EAX,111 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_4_91: |
_4_88: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,10 |
MOV [EBX],EAX |
_4_92: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _4_94 |
JMP _4_93 |
_4_94: |
MOV EAX,[_litq] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
PUSH EAX |
MOV CL,1 |
CALL _outdec |
ADD ESP,4 |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JE _4_98 |
JMP _4_96 |
_4_98: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_litptr] |
POP EBX |
CALL __ge |
OR EAX,EAX |
JE _4_99 |
JMP _4_96 |
_4_99: |
XOR EAX,EAX |
JMP _4_97 |
_4_96: |
MOV EAX,1 |
_4_97: |
OR EAX,EAX |
JNE _4_100 |
JMP _4_95 |
_4_100: |
XOR CL,CL |
CALL _newline |
JMP _4_93 |
_4_95: |
MOV EAX,44 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _4_92 |
_4_93: |
JMP _4_83 |
_4_84: |
MOV ESP,EBP |
POP EBP |
RET |
_dumpzero: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _4_103 |
JMP _4_102 |
_4_103: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _4_105 |
JMP _4_104 |
_4_105: |
MOV EAX,12 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_106 |
_4_104: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _4_108 |
JMP _4_107 |
_4_108: |
MOV EAX,39 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _4_109 |
_4_107: |
MOV EAX,113 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_4_109: |
_4_106: |
_4_102: |
POP EBP |
RET |
_peep: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-32 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_snext] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
POP EBX |
MOV [EBX],EAX |
_4_111: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_113 |
JMP _4_112 |
_4_113: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
JMP _4_116 |
_4_117: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_stail] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _4_119 |
JMP _4_118 |
_4_119: |
JMP _4_115 |
_4_118: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_120: |
MOV EAX,24 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _isfree |
ADD ESP,8 |
OR EAX,EAX |
JNE _4_122 |
JMP _4_121 |
_4_122: |
JMP _4_115 |
_4_121: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_123: |
MOV EAX,3 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _isfree |
ADD ESP,8 |
OR EAX,EAX |
JNE _4_125 |
JMP _4_124 |
_4_125: |
JMP _4_115 |
_4_124: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_126: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,128 |
AND EAX,EBX |
OR EAX,EAX |
JNE _4_128 |
JMP _4_127 |
_4_128: |
JMP _4_115 |
_4_127: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_129: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _getpop |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _4_131 |
JMP _4_130 |
_4_131: |
JMP _4_115 |
_4_130: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_132: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_stail] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JE _4_136 |
JMP _4_134 |
_4_136: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ne |
OR EAX,EAX |
JE _4_137 |
JMP _4_134 |
_4_137: |
XOR EAX,EAX |
JMP _4_135 |
_4_134: |
MOV EAX,1 |
_4_135: |
OR EAX,EAX |
JNE _4_138 |
JMP _4_133 |
_4_138: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_133: |
JMP _4_115 |
_4_116: |
CALL __switch |
DD _4_117 |
DD 255 |
DD _4_120 |
DD 253 |
DD _4_123 |
DD 252 |
DD _4_126 |
DD 251 |
DD _4_129 |
DD 254 |
DD 0 |
JMP _4_132 |
_4_115: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV [EBX],EAX |
JMP _4_111 |
_4_112: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
_4_139: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_143 |
JMP _4_141 |
_4_143: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_144 |
JMP _4_141 |
_4_144: |
XOR EAX,EAX |
JMP _4_142 |
_4_141: |
MOV EAX,1 |
_4_142: |
OR EAX,EAX |
JNE _4_145 |
JMP _4_140 |
_4_145: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_147 |
JMP _4_146 |
_4_147: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_149 |
JMP _4_148 |
_4_149: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_4_148: |
JMP _4_139 |
_4_146: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,116 |
CALL __ge |
OR EAX,EAX |
JNE _4_151 |
JMP _4_150 |
_4_151: |
LEA EAX,[EBP-32] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,255 |
AND EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,65280 |
AND EAX,EBX |
JMP _4_154 |
_4_155: |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ne |
OR EAX,EAX |
JNE _4_157 |
JMP _4_156 |
_4_157: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_4_156: |
JMP _4_153 |
_4_158: |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ge |
OR EAX,EAX |
JNE _4_160 |
JMP _4_159 |
_4_160: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_4_159: |
JMP _4_153 |
_4_161: |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV DWORD [_snext],EAX |
JMP _4_153 |
_4_162: |
MOV EAX,[_snext] |
PUSH EAX |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _4_163 |
_4_164: |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _4_163 |
_4_165: |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_163 |
_4_166: |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
JMP _4_163 |
_4_167: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _4_163 |
_4_168: |
LEA EAX,[EBP-24] |
PUSH EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_snext] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_4_163: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _4_153 |
JMP _4_153 |
_4_154: |
CALL __switch |
DD _4_155 |
DD 1536 |
DD _4_158 |
DD 1792 |
DD _4_161 |
DD 256 |
DD _4_162 |
DD 512 |
DD _4_164 |
DD 768 |
DD _4_165 |
DD 1024 |
DD _4_166 |
DD 1280 |
DD _4_167 |
DD 2304 |
DD _4_168 |
DD 2048 |
DD 0 |
_4_153: |
JMP _4_169 |
_4_150: |
MOV EAX,[_snext] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_4_169: |
JMP _4_139 |
_4_140: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_isfree: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
_4_171: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_stail] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _4_173 |
JMP _4_172 |
_4_173: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,_code |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,9 |
AND EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
AND EAX,EBX |
OR EAX,EAX |
JNE _4_175 |
JMP _4_174 |
_4_175: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_174: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,18 |
AND EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
AND EAX,EBX |
OR EAX,EAX |
JNE _4_177 |
JMP _4_176 |
_4_177: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_4_176: |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_171 |
_4_172: |
MOV EAX,[_usexpr] |
OR EAX,EAX |
JNE _4_179 |
JMP _4_178 |
_4_179: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
MOV ESP,EBP |
POP EBP |
RET |
_4_178: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_4_180: |
MOV ESP,EBP |
POP EBP |
RET |
_getpop: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_4_182: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_stail] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JNE _4_185 |
JMP _4_184 |
_4_185: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_184: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,59 |
CALL __eq |
OR EAX,EAX |
JNE _4_187 |
JMP _4_186 |
_4_187: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_189 |
JMP _4_188 |
_4_189: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
JMP _4_190 |
_4_188: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_4_190: |
JMP _4_191 |
_4_186: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _4_193 |
JMP _4_192 |
_4_193: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JL _4_195 |
JMP _4_194 |
_4_195: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_4_194: |
JMP _4_196 |
_4_192: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,_code |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,64 |
AND EAX,EBX |
OR EAX,EAX |
JNE _4_198 |
JMP _4_197 |
_4_198: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
_4_197: |
_4_196: |
_4_191: |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_182 |
_4_183: |
MOV ESP,EBP |
POP EBP |
RET |
_colon: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,58 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
POP EBP |
RET |
_newline: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,13 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
MOV EAX,10 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
POP EBP |
RET |
_outcode: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-28 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
MOV EAX,_code |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,74 |
CALL __eq |
OR EAX,EAX |
JNE _4_203 |
JMP _4_202 |
_4_203: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _4_205 |
JMP _4_204 |
_4_205: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX,104 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
_4_204: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,128 |
CALL __lt |
OR EAX,EAX |
JNE _4_207 |
JMP _4_206 |
_4_207: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_4_206: |
_4_202: |
_4_208: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _4_210 |
JMP _4_209 |
_4_210: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,60 |
CALL __eq |
OR EAX,EAX |
JNE _4_212 |
JMP _4_211 |
_4_212: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_214 |
JMP _4_213 |
_4_214: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
JMP _4_217 |
_4_218: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,11 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,1 |
CALL _outname |
ADD ESP,4 |
JMP _4_216 |
_4_219: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _4_221 |
JMP _4_220 |
_4_221: |
MOV EAX,_4_201+0 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
_4_220: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _outdec |
ADD ESP,4 |
JMP _4_216 |
_4_222: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _offset |
ADD ESP,4 |
JMP _4_216 |
_4_223: |
MOV EAX,[_litlab] |
PUSH EAX |
MOV CL,1 |
CALL _outdec |
ADD ESP,4 |
JMP _4_216 |
_4_224: |
LEA EAX,[EBP-28] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
JMP _4_216 |
_4_225: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _outdec |
ADD ESP,4 |
JMP _4_216 |
JMP _4_216 |
_4_217: |
CALL __switch |
DD _4_218 |
DD 109 |
DD _4_219 |
DD 110 |
DD _4_222 |
DD 111 |
DD _4_223 |
DD 108 |
DD _4_224 |
DD 103 |
DD _4_225 |
DD 100 |
DD 0 |
_4_216: |
_4_213: |
LEA EAX,[EBP-20] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,2 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_226 |
_4_211: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,63 |
CALL __eq |
OR EAX,EAX |
JNE _4_228 |
JMP _4_227 |
_4_228: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _4_231 |
_4_232: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_234 |
JMP _4_233 |
_4_234: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_4_233: |
JMP _4_230 |
_4_235: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
POP EBX |
MOV [EBX],EAX |
JMP _4_230 |
_4_236: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
JMP _4_230 |
JMP _4_230 |
_4_231: |
CALL __switch |
DD _4_232 |
DD 1 |
DD _4_235 |
DD 2 |
DD _4_236 |
DD 3 |
DD 0 |
_4_230: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _4_237 |
_4_227: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,35 |
CALL __eq |
OR EAX,EAX |
JNE _4_239 |
JMP _4_238 |
_4_239: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_241 |
JMP _4_240 |
_4_241: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX,1 |
CALL __lt |
OR EAX,EAX |
JNE _4_243 |
JMP _4_242 |
_4_243: |
_4_244: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _4_248 |
JMP _4_246 |
_4_248: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,35 |
CALL __ne |
OR EAX,EAX |
JNE _4_249 |
JMP _4_246 |
_4_249: |
MOV EAX,1 |
JMP _4_247 |
_4_246: |
XOR EAX,EAX |
_4_247: |
OR EAX,EAX |
JNE _4_250 |
JMP _4_245 |
_4_250: |
JMP _4_244 |
_4_245: |
JMP _4_208 |
_4_242: |
LEA EAX,[EBP-24] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _4_208 |
_4_240: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
OR EAX,EAX |
JG _4_252 |
JMP _4_251 |
_4_252: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _4_253 |
_4_251: |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_4_253: |
JMP _4_254 |
_4_238: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_256 |
JMP _4_255 |
_4_256: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _4_257 |
_4_255: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
_4_257: |
_4_254: |
_4_237: |
_4_226: |
JMP _4_208 |
_4_209: |
MOV ESP,EBP |
POP EBP |
RET |
_4_201 DB 66,89,84,69,32,0 |
_outdec: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-20 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1000000000 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _4_260 |
JMP _4_259 |
_4_260: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
MOV EAX,45 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_4_259: |
_4_261: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __ge |
OR EAX,EAX |
JNE _4_263 |
JMP _4_262 |
_4_263: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_4_264: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JNE _4_266 |
JMP _4_265 |
_4_266: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_264 |
_4_265: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __ne |
OR EAX,EAX |
JE _4_270 |
JMP _4_268 |
_4_270: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JE _4_271 |
JMP _4_268 |
_4_271: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_272 |
JMP _4_268 |
_4_272: |
XOR EAX,EAX |
JMP _4_269 |
_4_268: |
MOV EAX,1 |
_4_269: |
OR EAX,EAX |
JNE _4_273 |
JMP _4_267 |
_4_273: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_4_267: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_261 |
_4_262: |
MOV ESP,EBP |
POP EBP |
RET |
_offset: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-20 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1000000000 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _4_276 |
JMP _4_275 |
_4_276: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
MOV EAX,45 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _4_277 |
_4_275: |
MOV EAX,43 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_4_277: |
_4_278: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __ge |
OR EAX,EAX |
JNE _4_280 |
JMP _4_279 |
_4_280: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_4_281: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JNE _4_283 |
JMP _4_282 |
_4_283: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_281 |
_4_282: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __ne |
OR EAX,EAX |
JE _4_287 |
JMP _4_285 |
_4_287: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JE _4_288 |
JMP _4_285 |
_4_288: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _4_289 |
JMP _4_285 |
_4_289: |
XOR EAX,EAX |
JMP _4_286 |
_4_285: |
MOV EAX,1 |
_4_286: |
OR EAX,EAX |
JNE _4_290 |
JMP _4_284 |
_4_290: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_4_284: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
JMP _4_278 |
_4_279: |
MOV ESP,EBP |
POP EBP |
RET |
_outline: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
XOR CL,CL |
CALL _newline |
POP EBP |
RET |
_outname: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_4_292+0 |
PUSH EAX |
MOV CL,1 |
CALL _outstr |
ADD ESP,4 |
_4_293: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __ge |
OR EAX,EAX |
JNE _4_295 |
JMP _4_294 |
_4_295: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _4_293 |
_4_294: |
POP EBP |
RET |
_4_292 DB 95,0 |
_outstr: |
PUSH EBP |
MOV EBP,ESP |
_4_297: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,9 |
CALL __eq |
OR EAX,EAX |
JE _4_301 |
JMP _4_299 |
_4_301: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __ge |
OR EAX,EAX |
JE _4_302 |
JMP _4_299 |
_4_302: |
XOR EAX,EAX |
JMP _4_300 |
_4_299: |
MOV EAX,1 |
_4_300: |
OR EAX,EAX |
JNE _4_303 |
JMP _4_298 |
_4_303: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _4_297 |
_4_298: |
POP EBP |
RET |
_outtab: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,9 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
POP EBP |
RET |
/programs/develop/scc/Cc1.asm |
---|
0,0 → 1,5066 |
_nogo: TIMES 1 DD 0 |
_noloc: TIMES 1 DD 0 |
_opindex: TIMES 1 DD 0 |
_opsize: TIMES 1 DD 0 |
_swactive: TIMES 1 DD 0 |
_swdefaul: TIMES 1 DD 0 |
_swnext DD 0 |
_swend DD 0 |
_stage DD 0 |
_wq DD 0 |
_argcs: TIMES 1 DD 0 |
_argvs DD 0 |
_wqptr DD 0 |
_litptr: TIMES 1 DD 0 |
_macptr: TIMES 1 DD 0 |
_pptr: TIMES 1 DD 0 |
_ch: TIMES 1 DD 0 |
_nch: TIMES 1 DD 0 |
_declared: TIMES 1 DD 0 |
_iflevel: TIMES 1 DD 0 |
_skipleve: TIMES 1 DD 0 |
_nxtlab: TIMES 1 DD 0 |
_litlab: TIMES 1 DD 0 |
_csp: TIMES 1 DD 0 |
_argstk: TIMES 1 DD 0 |
_argtop: TIMES 1 DD 0 |
_ncmp: TIMES 1 DD 0 |
_errflag: TIMES 1 DD 0 |
_eof: TIMES 1 DD 0 |
_output: TIMES 1 DD 0 |
_files: TIMES 1 DD 0 |
_filearg DD 0 |
_input DD -1 |
_input2 DD -1 |
_usexpr DD 1 |
_ccode DD 1 |
_snext DD 0 |
_stail DD 0 |
_slast DD 0 |
_listfp: TIMES 1 DD 0 |
_lastst: TIMES 1 DD 0 |
_oldseg: TIMES 1 DD 0 |
_optimize: TIMES 1 DB 0 |
_alarm: TIMES 1 DB 0 |
_monitor: TIMES 1 DB 0 |
_pause: TIMES 1 DB 0 |
_symtab DD 0 |
_litq DD 0 |
_macn DD 0 |
_macq DD 0 |
_pline DD 0 |
_mline DD 0 |
_line DD 0 |
_lptr DD 0 |
_glbptr DD 0 |
_locptr DD 0 |
_quote DB 34 |
TIMES 1 DB 0 |
_cptr DD 0 |
_cptr2 DD 0 |
_cptr3 DD 0 |
_msname: TIMES 9 DB 0 |
_ssname: TIMES 9 DB 0 |
_op DD 57,73,3,20,55,43,22,47,35,7 |
DD 6,1,69,52,16,49 |
_op2 DD 57,73,3,20,55,44,23,48,36,7 |
DD 6,1,69,53,17,50 |
_main: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_1_1+0 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_1+47 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_1+95 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_argcs],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_argvs],EAX |
MOV EAX,360 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_swnext],EAX |
MOV EAX,[_swnext] |
MOV EBX,1424 |
ADD EAX,EBX |
MOV DWORD [_swend],EAX |
MOV EAX,200 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_stage],EAX |
MOV EAX,30 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_wq],EAX |
MOV DWORD [_wqptr],EAX |
MOV EAX,3000 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_litq],EAX |
MOV EAX,3300 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_macn],EAX |
MOV EAX,2100 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_macq],EAX |
MOV EAX,128 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_pline],EAX |
MOV EAX,128 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_mline],EAX |
MOV EAX,[_stage] |
MOV EBX,6400 |
ADD EAX,EBX |
MOV DWORD [_slast],EAX |
MOV EAX,4400 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _OS_callo |
ADD ESP,8 |
MOV DWORD [_symtab],EAX |
MOV EAX,[_symtab] |
MOV DWORD [_locptr],EAX |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
MOV DWORD [_glbptr],EAX |
XOR CL,CL |
CALL _ask |
XOR CL,CL |
CALL _openfile |
XOR CL,CL |
CALL _preproce |
XOR CL,CL |
CALL _header |
XOR CL,CL |
CALL _setcodes |
XOR CL,CL |
CALL _parse |
XOR CL,CL |
CALL _trailer |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,1 |
CALL _OS_fclos |
ADD ESP,4 |
POP EBP |
RET |
_1_1 DB 83,109,97,108,108,32,67,32,51,56 |
DB 54,47,78,84,44,32,86,101,114,115 |
DB 105,111,110,32,51,46,49,44,32,82 |
DB 101,118,105,115,105,111,110,32,76,101 |
DB 118,101,108,32,49,10,0,67,111,112 |
DB 121,114,105,103,104,116,32,49,57,56 |
DB 50,44,32,49,57,56,51,44,32,49 |
DB 57,56,53,44,32,49,57,56,56,32 |
DB 74,46,32,69,46,32,72,101,110,100 |
DB 114,105,120,10,0,67,111,112,121,114 |
DB 105,103,104,116,32,49,57,57,56,32 |
DB 32,72,32,84,32,87,97,108,104,101 |
DB 105,109,10,10,0 |
_parse: |
PUSH EBP |
MOV EBP,ESP |
_1_3: |
MOV EAX,[_eof] |
OR EAX,EAX |
JE _1_5 |
JMP _1_4 |
_1_5: |
MOV EAX,_1_2+0 |
PUSH EAX |
MOV EAX,6 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_7 |
JMP _1_6 |
_1_7: |
MOV EAX,3 |
PUSH EAX |
MOV CL,1 |
CALL _dodeclar |
ADD ESP,4 |
JMP _1_8 |
_1_6: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _dodeclar |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_10 |
JMP _1_9 |
_1_10: |
JMP _1_11 |
_1_9: |
MOV EAX,_1_2+7 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_13 |
JMP _1_12 |
_1_13: |
XOR CL,CL |
CALL _doasm |
JMP _1_14 |
_1_12: |
MOV EAX,_1_2+12 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_16 |
JMP _1_15 |
_1_16: |
XOR CL,CL |
CALL _doinclud |
JMP _1_17 |
_1_15: |
MOV EAX,_1_2+21 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_19 |
JMP _1_18 |
_1_19: |
XOR CL,CL |
CALL _dodefine |
JMP _1_20 |
_1_18: |
XOR CL,CL |
CALL _dofuncti |
_1_20: |
_1_17: |
_1_14: |
_1_11: |
_1_8: |
XOR CL,CL |
CALL _blanks |
JMP _1_3 |
_1_4: |
POP EBP |
RET |
_1_2 DB 101,120,116,101,114,110,0,35,97,115 |
DB 109,0,35,105,110,99,108,117,100,101 |
DB 0,35,100,101,102,105,110,101,0 |
_dodeclar: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_1_21+0 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_23 |
JMP _1_22 |
_1_23: |
MOV EAX,4 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _declglb |
ADD ESP,8 |
JMP _1_24 |
_1_22: |
MOV EAX,_1_21+5 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_26 |
JMP _1_25 |
_1_26: |
MOV EAX,_1_21+14 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_28 |
JMP _1_27 |
_1_28: |
MOV EAX,5 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _declglb |
ADD ESP,8 |
JMP _1_29 |
_1_27: |
MOV EAX,_1_21+19 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
MOV EAX,17 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _declglb |
ADD ESP,8 |
_1_29: |
JMP _1_30 |
_1_25: |
MOV EAX,_1_21+23 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JE _1_34 |
JMP _1_32 |
_1_34: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JE _1_35 |
JMP _1_32 |
_1_35: |
XOR EAX,EAX |
JMP _1_33 |
_1_32: |
MOV EAX,1 |
_1_33: |
OR EAX,EAX |
JNE _1_36 |
JMP _1_31 |
_1_36: |
MOV EAX,16 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _declglb |
ADD ESP,8 |
JMP _1_37 |
_1_31: |
XOR EAX,EAX |
POP EBP |
RET |
_1_37: |
_1_30: |
_1_24: |
XOR CL,CL |
CALL _ns |
MOV EAX,1 |
POP EBP |
RET |
_1_21 DB 99,104,97,114,0,117,110,115,105,103 |
DB 110,101,100,0,99,104,97,114,0,105 |
DB 110,116,0,105,110,116,0 |
_declglb: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
_1_39: |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JNE _1_42 |
JMP _1_41 |
_1_42: |
MOV ESP,EBP |
POP EBP |
RET |
_1_41: |
MOV EAX,_1_38+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_44 |
JMP _1_43 |
_1_44: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,3 |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
JMP _1_45 |
_1_43: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_1_45: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JE _1_47 |
JMP _1_46 |
_1_47: |
XOR CL,CL |
CALL _illname |
_1_46: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _findglb |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_49 |
JMP _1_48 |
_1_49: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _multidef |
ADD ESP,4 |
_1_48: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _1_51 |
JMP _1_50 |
_1_51: |
MOV EAX,_1_38+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_53 |
JMP _1_52 |
_1_53: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
MOV EAX,_1_38+4 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
JMP _1_54 |
_1_52: |
MOV EAX,_1_38+6 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_56 |
JMP _1_55 |
_1_56: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,2 |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
XOR CL,CL |
CALL _needsub |
POP EBX |
MOV [EBX],EAX |
_1_55: |
_1_54: |
_1_50: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _1_58 |
JMP _1_57 |
_1_58: |
MOV EAX,_ssname |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _external |
ADD ESP,12 |
JMP _1_59 |
_1_57: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __ne |
OR EAX,EAX |
JNE _1_61 |
JMP _1_60 |
_1_61: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _initials |
ADD ESP,12 |
_1_60: |
_1_59: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _1_63 |
JMP _1_62 |
_1_63: |
MOV EAX,_ssname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_glbptr |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
JMP _1_64 |
_1_62: |
MOV EAX,_ssname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBX |
IMUL EBX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_glbptr |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
_1_64: |
MOV EAX,_1_38+8 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_66 |
JMP _1_65 |
_1_66: |
MOV ESP,EBP |
POP EBP |
RET |
_1_65: |
JMP _1_39 |
_1_40: |
MOV ESP,EBP |
POP EBP |
RET |
_1_38 DB 42,0,40,0,41,0,91,0,44,0 |
_initials: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR EAX,EAX |
MOV DWORD [_litptr],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _1_69 |
JMP _1_68 |
_1_69: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX,-1 |
MOV [EBX],EAX |
_1_68: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_1_67+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_71 |
JMP _1_70 |
_1_71: |
MOV EAX,_1_67+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_73 |
JMP _1_72 |
_1_73: |
_1_74: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _1_76 |
JMP _1_75 |
_1_76: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV CL,3 |
CALL _init |
ADD ESP,12 |
MOV EAX,_1_67+4 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_78 |
JMP _1_77 |
_1_78: |
JMP _1_75 |
_1_77: |
JMP _1_74 |
_1_75: |
MOV EAX,_1_67+6 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
JMP _1_79 |
_1_72: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV CL,3 |
CALL _init |
ADD ESP,12 |
_1_79: |
_1_70: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __eq |
OR EAX,EAX |
JNE _1_83 |
JMP _1_81 |
_1_83: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __eq |
OR EAX,EAX |
JNE _1_84 |
JMP _1_81 |
_1_84: |
MOV EAX,1 |
JMP _1_82 |
_1_81: |
XOR EAX,EAX |
_1_82: |
OR EAX,EAX |
JNE _1_85 |
JMP _1_80 |
_1_85: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _1_87 |
JMP _1_86 |
_1_87: |
MOV EAX,_1_67+8 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_86: |
XOR EAX,EAX |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL _stowlit |
ADD ESP,8 |
_1_80: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _public |
ADD ESP,4 |
MOV EAX,[_litptr] |
OR EAX,EAX |
JG _1_89 |
JMP _1_88 |
_1_89: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _dumplits |
ADD ESP,4 |
JMP _1_90 |
_1_88: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _1_92 |
JMP _1_91 |
_1_92: |
MOV EAX,58 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_1_91: |
_1_90: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _dumpzero |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_1_67 DB 61,0,123,0,44,0,125,0,110,101 |
DB 101,100,32,97,114,114,97,121,32,115 |
DB 105,122,101,0 |
_init: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV CL,1 |
CALL _string |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_95 |
JMP _1_94 |
_1_95: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JE _1_99 |
JMP _1_97 |
_1_99: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __ne |
OR EAX,EAX |
JE _1_100 |
JMP _1_97 |
_1_100: |
XOR EAX,EAX |
JMP _1_98 |
_1_97: |
MOV EAX,1 |
_1_98: |
OR EAX,EAX |
JNE _1_101 |
JMP _1_96 |
_1_101: |
MOV EAX,_1_93+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_96: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_litptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _1_103 |
JMP _1_102 |
_1_103: |
XOR CL,CL |
CALL _point |
_1_102: |
JMP _1_104 |
_1_94: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV CL,1 |
CALL _constexp |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_106 |
JMP _1_105 |
_1_106: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _1_108 |
JMP _1_107 |
_1_108: |
MOV EAX,_1_93+42 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_107: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _stowlit |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_1_105: |
_1_104: |
MOV ESP,EBP |
POP EBP |
RET |
_1_93 DB 109,117,115,116,32,97,115,115,105,103 |
DB 110,32,116,111,32,99,104,97,114,32 |
DB 112,111,105,110,116,101,114,32,111,114 |
DB 32,99,104,97,114,32,97,114,114,97 |
DB 121,0,99,97,110,110,111,116,32,97 |
DB 115,115,105,103,110,32,116,111,32,112 |
DB 111,105,110,116,101,114,0 |
_needsub: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
MOV EAX,_1_109+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_111 |
JMP _1_110 |
_1_111: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_1_110: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV CL,1 |
CALL _constexp |
ADD ESP,4 |
OR EAX,EAX |
JE _1_113 |
JMP _1_112 |
_1_113: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_1_112: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _1_115 |
JMP _1_114 |
_1_115: |
MOV EAX,_1_109+2 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
_1_114: |
MOV EAX,_1_109+24 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_1_109 DB 93,0,110,101,103,97,116,105,118,101 |
DB 32,115,105,122,101,32,105,108,108,101 |
DB 103,97,108,0,93,0 |
_doinclud: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-36 |
XOR CL,CL |
CALL _blanks |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,34 |
CALL __eq |
OR EAX,EAX |
JE _1_120 |
JMP _1_118 |
_1_120: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,60 |
CALL __eq |
OR EAX,EAX |
JE _1_121 |
JMP _1_118 |
_1_121: |
XOR EAX,EAX |
JMP _1_119 |
_1_118: |
MOV EAX,1 |
_1_119: |
OR EAX,EAX |
JNE _1_122 |
JMP _1_117 |
_1_122: |
MOV EAX,[_lptr] |
INC EAX |
MOV DWORD [_lptr],EAX |
_1_117: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_1_123: |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _1_127 |
JMP _1_125 |
_1_127: |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,34 |
CALL __ne |
OR EAX,EAX |
JNE _1_128 |
JMP _1_125 |
_1_128: |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,62 |
CALL __ne |
OR EAX,EAX |
JNE _1_129 |
JMP _1_125 |
_1_129: |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __ne |
OR EAX,EAX |
JNE _1_130 |
JMP _1_125 |
_1_130: |
MOV EAX,1 |
JMP _1_126 |
_1_125: |
XOR EAX,EAX |
_1_126: |
OR EAX,EAX |
JNE _1_131 |
JMP _1_124 |
_1_131: |
LEA EAX,[EBP-36] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _1_123 |
_1_124: |
LEA EAX,[EBP-36] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP-36] |
PUSH EAX |
MOV EAX,_1_116+0 |
PUSH EAX |
MOV CL,2 |
CALL _OS_fopen |
ADD ESP,8 |
MOV DWORD [_input2],EAX |
OR EAX,EAX |
JE _1_133 |
JMP _1_132 |
_1_133: |
MOV EAX,-1 |
MOV DWORD [_input2],EAX |
MOV EAX,_1_116+2 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_132: |
XOR CL,CL |
CALL _kill |
MOV ESP,EBP |
POP EBP |
RET |
_1_116 DB 114,0,111,112,101,110,32,102,97,105 |
DB 108,117,114,101,32,111,110,32,105,110 |
DB 99,108,117,100,101,32,102,105,108,101 |
DB 0 |
_dodefine: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
MOV EAX,_msname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JE _1_136 |
JMP _1_135 |
_1_136: |
XOR CL,CL |
CALL _illname |
XOR CL,CL |
CALL _kill |
MOV ESP,EBP |
POP EBP |
RET |
_1_135: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV EAX,_msname |
PUSH EAX |
MOV EAX,[_macn] |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV EAX,[_macn] |
MOV EBX,3300 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,300 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,6 |
CALL _search |
ADD ESP,24 |
OR EAX,EAX |
JE _1_138 |
JMP _1_137 |
_1_138: |
MOV EAX,[_cptr] |
MOV DWORD [_cptr2],EAX |
OR EAX,EAX |
JNE _1_140 |
JMP _1_139 |
_1_140: |
_1_141: |
MOV EAX,[_cptr2] |
INC EAX |
MOV DWORD [_cptr2],EAX |
DEC EAX |
PUSH EAX |
MOV EAX,_msname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
OR EAX,EAX |
JNE _1_143 |
JMP _1_142 |
_1_143: |
JMP _1_141 |
_1_142: |
JMP _1_144 |
_1_139: |
MOV EAX,_1_134+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_1_144: |
_1_137: |
MOV EAX,[_macptr] |
PUSH EAX |
MOV EAX,[_cptr] |
MOV EBX,9 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
_1_145: |
XOR CL,CL |
CALL _white |
OR EAX,EAX |
JNE _1_147 |
JMP _1_146 |
_1_147: |
XOR CL,CL |
CALL _gch |
JMP _1_145 |
_1_146: |
_1_148: |
XOR CL,CL |
CALL _gch |
PUSH EAX |
MOV CL,1 |
CALL _putmac |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_150 |
JMP _1_149 |
_1_150: |
JMP _1_148 |
_1_149: |
MOV EAX,[_macptr] |
MOV EBX,EAX |
MOV EAX,2099 |
CALL __ge |
OR EAX,EAX |
JNE _1_152 |
JMP _1_151 |
_1_152: |
MOV EAX,_1_134+22 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
_1_151: |
MOV ESP,EBP |
POP EBP |
RET |
_1_134 DB 109,97,99,114,111,32,110,97,109,101 |
DB 32,116,97,98,108,101,32,102,117,108 |
DB 108,0,109,97,99,114,111,32,115,116 |
DB 114,105,110,103,32,113,117,101,117,101 |
DB 32,102,117,108,108,0 |
_putmac: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_macq] |
PUSH EAX |
MOV EAX,[_macptr] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
MOV EAX,[_macptr] |
MOV EBX,EAX |
MOV EAX,2099 |
CALL __lt |
OR EAX,EAX |
JNE _1_155 |
JMP _1_154 |
_1_155: |
MOV EAX,[_macptr] |
INC EAX |
MOV DWORD [_macptr],EAX |
_1_154: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBP |
RET |
_dofuncti: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR EAX,EAX |
MOV DWORD [_litptr],EAX |
MOV DWORD [_lastst],EAX |
MOV DWORD [_noloc],EAX |
MOV DWORD [_nogo],EAX |
XOR CL,CL |
CALL _getlabel |
MOV DWORD [_litlab],EAX |
MOV EAX,[_symtab] |
MOV DWORD [_locptr],EAX |
MOV EAX,_1_156+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_158 |
JMP _1_157 |
_1_158: |
XOR CL,CL |
CALL _blanks |
_1_157: |
MOVSX EAX,BYTE [_monitor] |
OR EAX,EAX |
JNE _1_160 |
JMP _1_159 |
_1_160: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _lout |
ADD ESP,8 |
_1_159: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JE _1_162 |
JMP _1_161 |
_1_162: |
MOV EAX,_1_156+5 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR EAX,EAX |
MOV DWORD [_errflag],EAX |
XOR CL,CL |
CALL _kill |
MOV ESP,EBP |
POP EBP |
RET |
_1_161: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _findglb |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _1_164 |
JMP _1_163 |
_1_164: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _1_166 |
JMP _1_165 |
_1_166: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,2 |
MOV [EBX],AL |
JMP _1_167 |
_1_165: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _multidef |
ADD ESP,4 |
_1_167: |
JMP _1_168 |
_1_163: |
MOV EAX,_ssname |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV EAX,16 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_glbptr |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
_1_168: |
MOV EAX,4 |
PUSH EAX |
MOV CL,1 |
CALL _public |
ADD ESP,4 |
XOR EAX,EAX |
MOV DWORD [_argstk],EAX |
MOV EAX,_1_156+37 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_170 |
JMP _1_169 |
_1_170: |
MOV EAX,_1_156+39 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_169: |
_1_171: |
MOV EAX,_1_156+53 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_173 |
JMP _1_172 |
_1_173: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_175 |
JMP _1_174 |
_1_175: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _findloc |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_177 |
JMP _1_176 |
_1_177: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _multidef |
ADD ESP,4 |
JMP _1_178 |
_1_176: |
MOV EAX,_ssname |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,[_argstk] |
PUSH EAX |
MOV EAX,_locptr |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
MOV EAX,[_argstk] |
MOV EBX,4 |
ADD EAX,EBX |
MOV DWORD [_argstk],EAX |
_1_178: |
JMP _1_179 |
_1_174: |
MOV EAX,_1_156+55 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR CL,CL |
CALL _skip |
_1_179: |
XOR CL,CL |
CALL _blanks |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,_1_156+77 |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JNE _1_183 |
JMP _1_181 |
_1_183: |
MOV EAX,_1_156+79 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JNE _1_184 |
JMP _1_181 |
_1_184: |
MOV EAX,1 |
JMP _1_182 |
_1_181: |
XOR EAX,EAX |
_1_182: |
OR EAX,EAX |
JNE _1_185 |
JMP _1_180 |
_1_185: |
MOV EAX,_1_156+81 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_180: |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JNE _1_187 |
JMP _1_186 |
_1_187: |
JMP _1_172 |
_1_186: |
JMP _1_171 |
_1_172: |
XOR EAX,EAX |
MOV DWORD [_csp],EAX |
MOV EAX,[_argstk] |
MOV EBX,4 |
ADD EAX,EBX |
MOV DWORD [_argtop],EAX |
_1_188: |
MOV EAX,[_argstk] |
OR EAX,EAX |
JNE _1_190 |
JMP _1_189 |
_1_190: |
MOV EAX,_1_156+90 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_192 |
JMP _1_191 |
_1_192: |
MOV EAX,4 |
PUSH EAX |
MOV CL,1 |
CALL _doargs |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_193 |
_1_191: |
MOV EAX,_1_156+95 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_195 |
JMP _1_194 |
_1_195: |
MOV EAX,16 |
PUSH EAX |
MOV CL,1 |
CALL _doargs |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_196 |
_1_194: |
MOV EAX,_1_156+99 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_198 |
JMP _1_197 |
_1_198: |
MOV EAX,_1_156+108 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_200 |
JMP _1_199 |
_1_200: |
MOV EAX,5 |
PUSH EAX |
MOV CL,1 |
CALL _doargs |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_201 |
_1_199: |
MOV EAX,_1_156+113 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
MOV EAX,17 |
PUSH EAX |
MOV CL,1 |
CALL _doargs |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
_1_201: |
JMP _1_202 |
_1_197: |
MOV EAX,_1_156+117 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _1_189 |
_1_202: |
_1_196: |
_1_193: |
JMP _1_188 |
_1_189: |
MOV EAX,18 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __ne |
OR EAX,EAX |
JNE _1_206 |
JMP _1_204 |
_1_206: |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,13 |
CALL __ne |
OR EAX,EAX |
JNE _1_207 |
JMP _1_204 |
_1_207: |
MOV EAX,1 |
JMP _1_205 |
_1_204: |
XOR EAX,EAX |
_1_205: |
OR EAX,EAX |
JNE _1_208 |
JMP _1_203 |
_1_208: |
MOV EAX,67 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_1_203: |
MOV EAX,[_litptr] |
OR EAX,EAX |
JNE _1_210 |
JMP _1_209 |
_1_210: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _toseg |
ADD ESP,4 |
MOV EAX,66 |
PUSH EAX |
MOV EAX,[_litlab] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _dumplits |
ADD ESP,4 |
_1_209: |
MOV ESP,EBP |
POP EBP |
RET |
_1_156 DB 118,111,105,100,0,105,108,108,101,103 |
DB 97,108,32,102,117,110,99,116,105,111 |
DB 110,32,111,114,32,100,101,99,108,97 |
DB 114,97,116,105,111,110,0,40,0,110 |
DB 111,32,111,112,101,110,32,112,97,114 |
DB 101,110,0,41,0,105,108,108,101,103 |
DB 97,108,32,97,114,103,117,109,101,110 |
DB 116,32,110,97,109,101,0,41,0,44 |
DB 0,110,111,32,99,111,109,109,97,0 |
DB 99,104,97,114,0,105,110,116,0,117 |
DB 110,115,105,103,110,101,100,0,99,104 |
DB 97,114,0,105,110,116,0,119,114,111 |
DB 110,103,32,110,117,109,98,101,114,32 |
DB 111,102,32,97,114,103,117,109,101,110 |
DB 116,115,0 |
_doargs: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-16 |
_1_212: |
MOV EAX,[_argstk] |
OR EAX,EAX |
JE _1_215 |
JMP _1_214 |
_1_215: |
MOV ESP,EBP |
POP EBP |
RET |
_1_214: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV CL,4 |
CALL _decl |
ADD ESP,16 |
OR EAX,EAX |
JNE _1_217 |
JMP _1_216 |
_1_217: |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _findloc |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _1_219 |
JMP _1_218 |
_1_219: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,3 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
MOV EAX,[_argtop] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,5 |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,5 |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
JMP _1_220 |
_1_218: |
MOV EAX,_1_211+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_220: |
_1_216: |
MOV EAX,[_argstk] |
MOV EBX,EAX |
MOV EAX,4 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_argstk],EAX |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JNE _1_222 |
JMP _1_221 |
_1_222: |
MOV ESP,EBP |
POP EBP |
RET |
_1_221: |
MOV EAX,_1_211+16 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_224 |
JMP _1_223 |
_1_224: |
MOV EAX,_1_211+18 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_223: |
JMP _1_212 |
_1_213: |
MOV ESP,EBP |
POP EBP |
RET |
_1_211 DB 110,111,116,32,97,110,32,97,114,103 |
DB 117,109,101,110,116,0,44,0,110,111 |
DB 32,99,111,109,109,97,0 |
_decl: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-12 |
MOV EAX,_1_225+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_227 |
JMP _1_226 |
_1_227: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _1_228 |
_1_226: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_1_228: |
MOV EAX,_1_225+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_230 |
JMP _1_229 |
_1_230: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
JMP _1_231 |
_1_229: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBX |
MOV [EBX],EAX |
_1_231: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _1_233 |
JMP _1_232 |
_1_233: |
XOR CL,CL |
CALL _illname |
_1_232: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _1_237 |
JMP _1_235 |
_1_237: |
MOV EAX,_1_225+4 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_238 |
JMP _1_235 |
_1_238: |
MOV EAX,1 |
JMP _1_236 |
_1_235: |
XOR EAX,EAX |
_1_236: |
OR EAX,EAX |
JNE _1_239 |
JMP _1_234 |
_1_239: |
_1_234: |
MOV EAX,_1_225+6 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_241 |
JMP _1_240 |
_1_241: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
OR EAX,EAX |
JE _1_245 |
JMP _1_243 |
_1_245: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __ne |
OR EAX,EAX |
JE _1_246 |
JMP _1_243 |
_1_246: |
XOR EAX,EAX |
JMP _1_244 |
_1_243: |
MOV EAX,1 |
_1_244: |
OR EAX,EAX |
JNE _1_247 |
JMP _1_242 |
_1_247: |
MOV EAX,_1_225+8 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_242: |
MOV EAX,_1_225+21 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
JMP _1_248 |
_1_240: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _1_252 |
JMP _1_250 |
_1_252: |
MOV EAX,_1_225+23 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_253 |
JMP _1_250 |
_1_253: |
MOV EAX,1 |
JMP _1_251 |
_1_250: |
XOR EAX,EAX |
_1_251: |
OR EAX,EAX |
JNE _1_254 |
JMP _1_249 |
_1_254: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR CL,CL |
CALL _needsub |
POP EBX |
IMUL EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _1_256 |
JMP _1_255 |
_1_256: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _1_258 |
JMP _1_257 |
_1_258: |
MOV EAX,_1_225+25 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_257: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
_1_255: |
_1_249: |
_1_248: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _1_260 |
JMP _1_259 |
_1_260: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_1_259: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_1_225 DB 40,0,42,0,41,0,40,0,116,114 |
DB 121,32,40,42,46,46,46,41,40,41 |
DB 0,41,0,91,0,110,101,101,100,32 |
DB 97,114,114,97,121,32,115,105,122,101 |
DB 0 |
_statemen: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_ch] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JNE _1_265 |
JMP _1_263 |
_1_265: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _1_266 |
JMP _1_263 |
_1_266: |
MOV EAX,1 |
JMP _1_264 |
_1_263: |
XOR EAX,EAX |
_1_264: |
OR EAX,EAX |
JNE _1_267 |
JMP _1_262 |
_1_267: |
POP EBP |
RET |
_1_262: |
MOV EAX,_1_261+0 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_270 |
JMP _1_269 |
_1_270: |
MOV EAX,4 |
PUSH EAX |
MOV CL,1 |
CALL _declloc |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_271 |
_1_269: |
MOV EAX,_1_261+5 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_273 |
JMP _1_272 |
_1_273: |
MOV EAX,16 |
PUSH EAX |
MOV CL,1 |
CALL _declloc |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_274 |
_1_272: |
MOV EAX,_1_261+9 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_276 |
JMP _1_275 |
_1_276: |
MOV EAX,_1_261+18 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_278 |
JMP _1_277 |
_1_278: |
MOV EAX,5 |
PUSH EAX |
MOV CL,1 |
CALL _declloc |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
JMP _1_279 |
_1_277: |
MOV EAX,_1_261+23 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
MOV EAX,17 |
PUSH EAX |
MOV CL,1 |
CALL _declloc |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
_1_279: |
JMP _1_280 |
_1_275: |
MOV EAX,[_declared] |
OR EAX,EAX |
JGE _1_282 |
JMP _1_281 |
_1_282: |
MOV EAX,[_ncmp] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __gt |
OR EAX,EAX |
JNE _1_284 |
JMP _1_283 |
_1_284: |
MOV EAX,[_declared] |
MOV DWORD [_nogo],EAX |
_1_283: |
MOV EAX,2 |
PUSH EAX |
MOV EAX,[_csp] |
PUSH EAX |
MOV EAX,[_declared] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,-1 |
MOV DWORD [_declared],EAX |
_1_281: |
MOV EAX,_1_261+27 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_286 |
JMP _1_285 |
_1_286: |
XOR CL,CL |
CALL _compound |
JMP _1_287 |
_1_285: |
MOV EAX,_1_261+29 |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_289 |
JMP _1_288 |
_1_289: |
XOR CL,CL |
CALL _doif |
MOV EAX,1 |
MOV DWORD [_lastst],EAX |
JMP _1_290 |
_1_288: |
MOV EAX,_1_261+32 |
PUSH EAX |
MOV EAX,5 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_292 |
JMP _1_291 |
_1_292: |
XOR CL,CL |
CALL _dowhile |
MOV EAX,2 |
MOV DWORD [_lastst],EAX |
JMP _1_293 |
_1_291: |
MOV EAX,_1_261+38 |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_295 |
JMP _1_294 |
_1_295: |
XOR CL,CL |
CALL _dodo |
MOV EAX,8 |
MOV DWORD [_lastst],EAX |
JMP _1_296 |
_1_294: |
MOV EAX,_1_261+41 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_298 |
JMP _1_297 |
_1_298: |
XOR CL,CL |
CALL _dofor |
MOV EAX,9 |
MOV DWORD [_lastst],EAX |
JMP _1_299 |
_1_297: |
MOV EAX,_1_261+45 |
PUSH EAX |
MOV EAX,6 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_301 |
JMP _1_300 |
_1_301: |
XOR CL,CL |
CALL _doswitch |
MOV EAX,10 |
MOV DWORD [_lastst],EAX |
JMP _1_302 |
_1_300: |
MOV EAX,_1_261+52 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_304 |
JMP _1_303 |
_1_304: |
XOR CL,CL |
CALL _docase |
MOV EAX,11 |
MOV DWORD [_lastst],EAX |
JMP _1_305 |
_1_303: |
MOV EAX,_1_261+57 |
PUSH EAX |
MOV EAX,7 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_307 |
JMP _1_306 |
_1_307: |
XOR CL,CL |
CALL _dodefaul |
MOV EAX,12 |
MOV DWORD [_lastst],EAX |
JMP _1_308 |
_1_306: |
MOV EAX,_1_261+65 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_310 |
JMP _1_309 |
_1_310: |
XOR CL,CL |
CALL _dogoto |
MOV EAX,13 |
MOV DWORD [_lastst],EAX |
JMP _1_311 |
_1_309: |
XOR CL,CL |
CALL _dolabel |
OR EAX,EAX |
JNE _1_313 |
JMP _1_312 |
_1_313: |
MOV EAX,14 |
MOV DWORD [_lastst],EAX |
JMP _1_314 |
_1_312: |
MOV EAX,_1_261+70 |
PUSH EAX |
MOV EAX,6 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_316 |
JMP _1_315 |
_1_316: |
XOR CL,CL |
CALL _doreturn |
XOR CL,CL |
CALL _ns |
MOV EAX,3 |
MOV DWORD [_lastst],EAX |
JMP _1_317 |
_1_315: |
MOV EAX,_1_261+77 |
PUSH EAX |
MOV EAX,5 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_319 |
JMP _1_318 |
_1_319: |
XOR CL,CL |
CALL _dobreak |
XOR CL,CL |
CALL _ns |
MOV EAX,4 |
MOV DWORD [_lastst],EAX |
JMP _1_320 |
_1_318: |
MOV EAX,_1_261+83 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _1_322 |
JMP _1_321 |
_1_322: |
XOR CL,CL |
CALL _docont |
XOR CL,CL |
CALL _ns |
MOV EAX,5 |
MOV DWORD [_lastst],EAX |
JMP _1_323 |
_1_321: |
MOV EAX,_1_261+92 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_325 |
JMP _1_324 |
_1_325: |
XOR EAX,EAX |
MOV DWORD [_errflag],EAX |
JMP _1_326 |
_1_324: |
MOV EAX,_1_261+94 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_328 |
JMP _1_327 |
_1_328: |
XOR CL,CL |
CALL _doasm |
MOV EAX,6 |
MOV DWORD [_lastst],EAX |
JMP _1_329 |
_1_327: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _doexpr |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
MOV EAX,7 |
MOV DWORD [_lastst],EAX |
_1_329: |
_1_326: |
_1_323: |
_1_320: |
_1_317: |
_1_314: |
_1_311: |
_1_308: |
_1_305: |
_1_302: |
_1_299: |
_1_296: |
_1_293: |
_1_290: |
_1_287: |
_1_280: |
_1_274: |
_1_271: |
_1_268: |
MOV EAX,[_lastst] |
POP EBP |
RET |
_1_261 DB 99,104,97,114,0,105,110,116,0,117 |
DB 110,115,105,103,110,101,100,0,99,104 |
DB 97,114,0,105,110,116,0,123,0,105 |
DB 102,0,119,104,105,108,101,0,100,111 |
DB 0,102,111,114,0,115,119,105,116,99 |
DB 104,0,99,97,115,101,0,100,101,102 |
DB 97,117,108,116,0,103,111,116,111,0 |
DB 114,101,116,117,114,110,0,98,114,101 |
DB 97,107,0,99,111,110,116,105,110,117 |
DB 101,0,59,0,35,97,115,109,0 |
_declloc: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
MOV EAX,[_swactive] |
OR EAX,EAX |
JNE _1_332 |
JMP _1_331 |
_1_332: |
MOV EAX,_1_330+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_331: |
MOV EAX,[_noloc] |
OR EAX,EAX |
JNE _1_334 |
JMP _1_333 |
_1_334: |
MOV EAX,_1_330+22 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_333: |
MOV EAX,[_declared] |
OR EAX,EAX |
JL _1_336 |
JMP _1_335 |
_1_336: |
MOV EAX,_1_330+44 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_335: |
_1_337: |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JNE _1_340 |
JMP _1_339 |
_1_340: |
MOV ESP,EBP |
POP EBP |
RET |
_1_339: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV CL,4 |
CALL _decl |
ADD ESP,16 |
MOV EAX,[_declared] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_declared],EAX |
MOV EAX,_ssname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_csp] |
PUSH EAX |
MOV EAX,[_declared] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
PUSH EAX |
MOV EAX,_locptr |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
MOV EAX,_1_330+72 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_342 |
JMP _1_341 |
_1_342: |
MOV ESP,EBP |
POP EBP |
RET |
_1_341: |
JMP _1_337 |
_1_338: |
MOV ESP,EBP |
POP EBP |
RET |
_1_330 DB 110,111,116,32,97,108,108,111,119,101 |
DB 100,32,105,110,32,115,119,105,116,99 |
DB 104,0,110,111,116,32,97,108,108,111 |
DB 119,101,100,32,119,105,116,104,32,103 |
DB 111,116,111,0,109,117,115,116,32,100 |
DB 101,99,108,97,114,101,32,102,105,114 |
DB 115,116,32,105,110,32,98,108,111,99 |
DB 107,0,44,0 |
_compound: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_csp] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EAX,[_locptr] |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV DWORD [_declared],EAX |
MOV EAX,[_ncmp] |
INC EAX |
MOV DWORD [_ncmp],EAX |
_1_344: |
MOV EAX,_1_343+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_346 |
JMP _1_345 |
_1_346: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _1_348 |
JMP _1_347 |
_1_348: |
MOV EAX,_1_343+2 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _1_345 |
JMP _1_349 |
_1_347: |
XOR CL,CL |
CALL _statemen |
_1_349: |
JMP _1_344 |
_1_345: |
MOV EAX,[_ncmp] |
DEC EAX |
MOV DWORD [_ncmp],EAX |
OR EAX,EAX |
JNE _1_353 |
JMP _1_351 |
_1_353: |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __ne |
OR EAX,EAX |
JNE _1_354 |
JMP _1_351 |
_1_354: |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,13 |
CALL __ne |
OR EAX,EAX |
JNE _1_355 |
JMP _1_351 |
_1_355: |
MOV EAX,1 |
JMP _1_352 |
_1_351: |
XOR EAX,EAX |
_1_352: |
OR EAX,EAX |
JNE _1_356 |
JMP _1_350 |
_1_356: |
MOV EAX,2 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_1_350: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_cptr],EAX |
_1_357: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_locptr] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _1_359 |
JMP _1_358 |
_1_359: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV CL,1 |
CALL _nextsym |
ADD ESP,4 |
MOV DWORD [_cptr2],EAX |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JE _1_361 |
JMP _1_360 |
_1_361: |
_1_362: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_cptr2] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _1_364 |
JMP _1_363 |
_1_364: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
MOV EAX,[_cptr] |
INC EAX |
MOV DWORD [_cptr],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
JMP _1_362 |
_1_363: |
JMP _1_365 |
_1_360: |
MOV EAX,[_cptr2] |
MOV DWORD [_cptr],EAX |
_1_365: |
JMP _1_357 |
_1_358: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_locptr],EAX |
MOV EAX,-1 |
MOV DWORD [_declared],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_1_343 DB 125,0,110,111,32,102,105,110,97,108 |
DB 32,125,0 |
_doif: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _test |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,_1_366+0 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JE _1_368 |
JMP _1_367 |
_1_368: |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_1_367: |
LEA EAX,[EBP-8] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __ne |
OR EAX,EAX |
JNE _1_372 |
JMP _1_370 |
_1_372: |
MOV EAX,[_lastst] |
MOV EBX,EAX |
MOV EAX,13 |
CALL __ne |
OR EAX,EAX |
JNE _1_373 |
JMP _1_370 |
_1_373: |
MOV EAX,1 |
JMP _1_371 |
_1_370: |
XOR EAX,EAX |
_1_371: |
OR EAX,EAX |
JNE _1_374 |
JMP _1_369 |
_1_374: |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_1_369: |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_1_366 DB 101,108,115,101,0 |
_dowhile: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-16 |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _addwhile |
ADD ESP,4 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _test |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _delwhile |
MOV ESP,EBP |
POP EBP |
RET |
_dodo: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-16 |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _addwhile |
ADD ESP,4 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,_1_376+0 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _test |
ADD ESP,8 |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _delwhile |
XOR CL,CL |
CALL _ns |
MOV ESP,EBP |
POP EBP |
RET |
_1_376 DB 119,104,105,108,101,0 |
_dofor: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-24 |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _addwhile |
ADD ESP,4 |
LEA EAX,[EBP-20] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-24] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_1_377+0 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
MOV EAX,_1_377+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_379 |
JMP _1_378 |
_1_379: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _doexpr |
ADD ESP,4 |
XOR CL,CL |
CALL _ns |
_1_378: |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,_1_377+4 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_381 |
JMP _1_380 |
_1_381: |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _test |
ADD ESP,8 |
XOR CL,CL |
CALL _ns |
_1_380: |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,_1_377+6 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _1_383 |
JMP _1_382 |
_1_383: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _doexpr |
ADD ESP,4 |
MOV EAX,_1_377+8 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
_1_382: |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _delwhile |
MOV ESP,EBP |
POP EBP |
RET |
_1_377 DB 40,0,59,0,59,0,41,0,41,0 |
_doswitch: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-36 |
LEA EAX,[EBP-24] |
PUSH EAX |
MOV EAX,[_swactive] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV EAX,[_swdefaul] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
LEA EAX,[EBP-36] |
PUSH EAX |
MOV EAX,[_swnext] |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _addwhile |
ADD ESP,4 |
MOV EAX,[_wqptr] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,12 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV EAX,_1_384+0 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _doexpr |
ADD ESP,4 |
MOV EAX,_1_384+2 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
XOR EAX,EAX |
MOV DWORD [_swdefaul],EAX |
MOV EAX,1 |
MOV DWORD [_swactive],EAX |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-20] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _statemen |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,72 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_1_385: |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_swnext] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _1_387 |
JMP _1_386 |
_1_387: |
MOV EAX,56 |
PUSH EAX |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,112 |
PUSH EAX |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _1_385 |
_1_386: |
MOV EAX,112 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,[_swdefaul] |
OR EAX,EAX |
JNE _1_389 |
JMP _1_388 |
_1_389: |
MOV EAX,40 |
PUSH EAX |
MOV EAX,[_swdefaul] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_1_388: |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _delwhile |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_swnext],EAX |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_swdefaul],EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_swactive],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_1_384 DB 40,0,41,0 |
_docase: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_swactive] |
OR EAX,EAX |
JE _1_392 |
JMP _1_391 |
_1_392: |
MOV EAX,_1_390+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_391: |
MOV EAX,[_swnext] |
PUSH EAX |
MOV EAX,[_swend] |
POP EBX |
CALL __ugt |
OR EAX,EAX |
JNE _1_394 |
JMP _1_393 |
_1_394: |
MOV EAX,_1_390+14 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
POP EBP |
RET |
_1_393: |
MOV EAX,41 |
PUSH EAX |
MOV EAX,[_swnext] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV DWORD [_swnext],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,[_swnext] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV DWORD [_swnext],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
PUSH EAX |
MOV CL,1 |
CALL _constexp |
ADD ESP,4 |
MOV EAX,_1_390+29 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
POP EBP |
RET |
_1_390 DB 110,111,116,32,105,110,32,115,119,105 |
DB 116,99,104,0,116,111,111,32,109,97 |
DB 110,121,32,99,97,115,101,115,0,58 |
DB 0 |
_dodefaul: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_swactive] |
OR EAX,EAX |
JNE _1_397 |
JMP _1_396 |
_1_397: |
MOV EAX,[_swdefaul] |
OR EAX,EAX |
JNE _1_399 |
JMP _1_398 |
_1_399: |
MOV EAX,_1_395+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_398: |
JMP _1_400 |
_1_396: |
MOV EAX,_1_395+18 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_400: |
MOV EAX,_1_395+32 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
MOV EAX,41 |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
MOV DWORD [_swdefaul],EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
POP EBP |
RET |
_1_395 DB 109,117,108,116,105,112,108,101,32,100 |
DB 101,102,97,117,108,116,115,0,110,111 |
DB 116,32,105,110,32,115,119,105,116,99 |
DB 104,0,58,0 |
_dogoto: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_nogo] |
OR EAX,EAX |
JG _1_403 |
JMP _1_402 |
_1_403: |
MOV EAX,_1_401+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _1_404 |
_1_402: |
MOV EAX,1 |
MOV DWORD [_noloc],EAX |
_1_404: |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_406 |
JMP _1_405 |
_1_406: |
MOV EAX,40 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _addlabel |
ADD ESP,4 |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _1_407 |
_1_405: |
MOV EAX,_1_401+30 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_1_407: |
XOR CL,CL |
CALL _ns |
POP EBP |
RET |
_1_401 DB 110,111,116,32,97,108,108,111,119,101 |
DB 100,32,119,105,116,104,32,98,108,111 |
DB 99,107,45,108,111,99,97,108,115,0 |
DB 98,97,100,32,108,97,98,101,108,0 |
_dolabel: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR CL,CL |
CALL _blanks |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_lptr] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_410 |
JMP _1_409 |
_1_410: |
XOR CL,CL |
CALL _gch |
MOV EBX,EAX |
MOV EAX,58 |
CALL __eq |
OR EAX,EAX |
JNE _1_412 |
JMP _1_411 |
_1_412: |
MOV EAX,41 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _addlabel |
ADD ESP,4 |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_1_411: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_lptr] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
_1_413: |
_1_409: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_addlabel: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_ssname |
PUSH EAX |
MOV CL,1 |
CALL _findloc |
ADD ESP,4 |
MOV DWORD [_cptr],EAX |
OR EAX,EAX |
JNE _1_416 |
JMP _1_415 |
_1_416: |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _1_418 |
JMP _1_417 |
_1_418: |
MOV EAX,_1_414+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _1_419 |
_1_417: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _1_421 |
JMP _1_420 |
_1_421: |
MOV EAX,[_cptr] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _1_423 |
JMP _1_422 |
_1_423: |
MOV EAX,_1_414+12 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _1_424 |
_1_422: |
MOV EAX,[_cptr] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],AL |
_1_424: |
_1_420: |
_1_419: |
JMP _1_425 |
_1_415: |
MOV EAX,_ssname |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
PUSH EAX |
MOV EAX,_locptr |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
MOV DWORD [_cptr],EAX |
_1_425: |
MOV EAX,[_cptr] |
MOV EBX,5 |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
POP EBP |
RET |
_1_414 DB 110,111,116,32,97,32,108,97,98,101 |
DB 108,0,100,117,112,108,105,99,97,116 |
DB 101,32,108,97,98,101,108,0 |
_doreturn: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JE _1_428 |
JMP _1_427 |
_1_428: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _doexpr |
ADD ESP,4 |
_1_427: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_csp] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,67 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_csp],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_dobreak: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_wqptr] |
PUSH EAX |
MOV CL,1 |
CALL _readwhil |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _1_431 |
JMP _1_430 |
_1_431: |
MOV ESP,EBP |
POP EBP |
RET |
_1_430: |
MOV EAX,2 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_docont: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_wqptr] |
POP EBX |
MOV [EBX],EAX |
_1_433: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _readwhil |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _1_436 |
JMP _1_435 |
_1_436: |
MOV ESP,EBP |
POP EBP |
RET |
_1_435: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _1_438 |
JMP _1_437 |
_1_438: |
JMP _1_434 |
_1_437: |
JMP _1_433 |
_1_434: |
MOV EAX,2 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_doasm: |
PUSH EBP |
MOV EBP,ESP |
XOR EAX,EAX |
MOV DWORD [_ccode],EAX |
_1_440: |
XOR CL,CL |
CALL _inline |
MOV EAX,_1_439+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_443 |
JMP _1_442 |
_1_443: |
JMP _1_441 |
_1_442: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _1_445 |
JMP _1_444 |
_1_445: |
JMP _1_441 |
_1_444: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
JMP _1_440 |
_1_441: |
XOR CL,CL |
CALL _kill |
MOV EAX,1 |
MOV DWORD [_ccode],EAX |
POP EBP |
RET |
_1_439 DB 35,101,110,100,97,115,109,0 |
_doexpr: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-16 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_usexpr],EAX |
_1_447: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV CL,2 |
CALL _expressi |
ADD ESP,8 |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,44 |
CALL __ne |
OR EAX,EAX |
JNE _1_450 |
JMP _1_449 |
_1_450: |
JMP _1_448 |
_1_449: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
JMP _1_447 |
_1_448: |
MOV EAX,1 |
MOV DWORD [_usexpr],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_ask: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
XOR EAX,EAX |
MOV DWORD [_nxtlab],EAX |
MOV DWORD [_listfp],EAX |
POP EBX |
MOV [EBX],EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
MOV DWORD [_output],EAX |
XOR EAX,EAX |
MOV BYTE [_optimize],AL |
XOR EAX,EAX |
MOV BYTE [_pause],AL |
MOV BYTE [_monitor],AL |
MOV BYTE [_alarm],AL |
MOV EAX,[_mline] |
MOV DWORD [_line],EAX |
_1_452: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
PUSH EAX |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,128 |
PUSH EAX |
MOV EAX,[_argcs] |
PUSH EAX |
MOV EAX,[_argvs] |
PUSH EAX |
MOV CL,5 |
CALL _getarg |
ADD ESP,20 |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __ne |
OR EAX,EAX |
JNE _1_454 |
JMP _1_453 |
_1_454: |
MOV EAX,[_line] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,45 |
CALL __ne |
OR EAX,EAX |
JNE _1_458 |
JMP _1_456 |
_1_458: |
MOV EAX,[_line] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __ne |
OR EAX,EAX |
JNE _1_459 |
JMP _1_456 |
_1_459: |
MOV EAX,1 |
JMP _1_457 |
_1_456: |
XOR EAX,EAX |
_1_457: |
OR EAX,EAX |
JNE _1_460 |
JMP _1_455 |
_1_460: |
JMP _1_452 |
_1_455: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,76 |
CALL __eq |
OR EAX,EAX |
JNE _1_464 |
JMP _1_462 |
_1_464: |
MOV EAX,[_line] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _1_465 |
JMP _1_462 |
_1_465: |
MOV EAX,[_line] |
MOV EBX,3 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __le |
OR EAX,EAX |
JNE _1_466 |
JMP _1_462 |
_1_466: |
MOV EAX,1 |
JMP _1_463 |
_1_462: |
XOR EAX,EAX |
_1_463: |
OR EAX,EAX |
JNE _1_467 |
JMP _1_461 |
_1_467: |
MOV EAX,[_line] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_listfp],EAX |
JMP _1_452 |
_1_461: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,78 |
CALL __eq |
OR EAX,EAX |
JNE _1_471 |
JMP _1_469 |
_1_471: |
MOV EAX,[_line] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,79 |
CALL __eq |
OR EAX,EAX |
JNE _1_472 |
JMP _1_469 |
_1_472: |
MOV EAX,[_line] |
MOV EBX,3 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __le |
OR EAX,EAX |
JNE _1_473 |
JMP _1_469 |
_1_473: |
MOV EAX,1 |
JMP _1_470 |
_1_469: |
XOR EAX,EAX |
_1_470: |
OR EAX,EAX |
JNE _1_474 |
JMP _1_468 |
_1_474: |
XOR EAX,EAX |
MOV BYTE [_optimize],AL |
JMP _1_452 |
_1_468: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,68 |
CALL __eq |
OR EAX,EAX |
JNE _1_476 |
JMP _1_475 |
_1_476: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV EAX,[_line] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,2 |
ADD EAX,EBX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV DWORD [_ch],EAX |
MOV EAX,[_line] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
MOV DWORD [_lptr],EAX |
XOR CL,CL |
CALL _dodefine |
JMP _1_452 |
_1_475: |
MOV EAX,[_line] |
MOV EBX,2 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __le |
OR EAX,EAX |
JNE _1_478 |
JMP _1_477 |
_1_478: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,65 |
CALL __eq |
OR EAX,EAX |
JNE _1_480 |
JMP _1_479 |
_1_480: |
MOV EAX,1 |
MOV BYTE [_alarm],AL |
JMP _1_452 |
_1_479: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,77 |
CALL __eq |
OR EAX,EAX |
JNE _1_482 |
JMP _1_481 |
_1_482: |
MOV EAX,1 |
MOV BYTE [_monitor],AL |
JMP _1_452 |
_1_481: |
MOV EAX,[_line] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,80 |
CALL __eq |
OR EAX,EAX |
JNE _1_484 |
JMP _1_483 |
_1_484: |
MOV EAX,1 |
MOV BYTE [_pause],AL |
JMP _1_452 |
_1_483: |
_1_477: |
MOV EAX,_1_451+0 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+57 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+74 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+89 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+104 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+118 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,_1_451+139 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
JMP _1_452 |
_1_453: |
MOV ESP,EBP |
POP EBP |
RET |
_1_451 DB 117,115,97,103,101,58,32,99,99,32 |
DB 91,102,105,108,101,93,46,46,46,32 |
DB 91,45,109,93,32,91,45,97,93,32 |
DB 91,45,112,93,32,91,45,108,35,93 |
DB 32,91,45,110,111,93,32,91,45,100 |
DB 60,105,100,62,93,10,0,32,45,109 |
DB 32,32,32,32,32,109,111,110,105,116 |
DB 111,114,10,0,32,45,97,32,32,32 |
DB 32,32,97,108,97,114,109,10,0,32 |
DB 45,112,32,32,32,32,32,112,97,117 |
DB 115,101,10,0,32,45,108,35,32,32 |
DB 32,32,108,105,115,116,10,0,32,45 |
DB 110,111,32,32,32,32,110,111,32,111 |
DB 112,116,105,109,105,122,101,10,0,32 |
DB 45,100,60,105,100,62,32,112,114,101 |
DB 45,35,100,101,102,105,110,101,32,105 |
DB 100,10,0 |
_openfile: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-28 |
MOV EAX,-1 |
MOV DWORD [_input],EAX |
_1_486: |
MOV EAX,[_filearg] |
INC EAX |
MOV DWORD [_filearg],EAX |
PUSH EAX |
MOV EAX,[_pline] |
PUSH EAX |
MOV EAX,128 |
PUSH EAX |
MOV EAX,[_argcs] |
PUSH EAX |
MOV EAX,[_argvs] |
PUSH EAX |
MOV CL,5 |
CALL _getarg |
ADD ESP,20 |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __ne |
OR EAX,EAX |
JNE _1_488 |
JMP _1_487 |
_1_488: |
MOV EAX,[_pline] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,45 |
CALL __eq |
OR EAX,EAX |
JE _1_492 |
JMP _1_490 |
_1_492: |
MOV EAX,[_pline] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __eq |
OR EAX,EAX |
JE _1_493 |
JMP _1_490 |
_1_493: |
XOR EAX,EAX |
JMP _1_491 |
_1_490: |
MOV EAX,1 |
_1_491: |
OR EAX,EAX |
JNE _1_494 |
JMP _1_489 |
_1_494: |
JMP _1_486 |
_1_489: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX,-1 |
MOV [EBX],EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_1_495: |
MOV EAX,[_pline] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _1_497 |
JMP _1_496 |
_1_497: |
MOV EAX,[_pline] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,46 |
CALL __eq |
OR EAX,EAX |
JNE _1_499 |
JMP _1_498 |
_1_499: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _1_496 |
_1_498: |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __lt |
OR EAX,EAX |
JNE _1_501 |
JMP _1_500 |
_1_501: |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_pline] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
_1_500: |
JMP _1_495 |
_1_496: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
OR EAX,EAX |
JNE _1_503 |
JMP _1_502 |
_1_503: |
MOV EAX,[_pline] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_1_485+0 |
PUSH EAX |
MOV CL,2 |
CALL _strcpy |
ADD ESP,8 |
_1_502: |
MOV EAX,[_pline] |
PUSH EAX |
MOV EAX,_1_485+3 |
PUSH EAX |
MOV CL,2 |
CALL _mustopen |
ADD ESP,8 |
MOV DWORD [_input],EAX |
MOV EAX,[_files] |
CALL __lneg |
OR EAX,EAX |
JNE _1_505 |
JMP _1_504 |
_1_505: |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_1_485+5 |
PUSH EAX |
MOV CL,2 |
CALL _strcpy |
ADD ESP,8 |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV EAX,_1_485+10 |
PUSH EAX |
MOV CL,2 |
CALL _mustopen |
ADD ESP,8 |
MOV DWORD [_output],EAX |
_1_504: |
MOV EAX,1 |
MOV DWORD [_files],EAX |
XOR CL,CL |
CALL _kill |
MOV ESP,EBP |
POP EBP |
RET |
JMP _1_486 |
_1_487: |
MOV EAX,[_files] |
INC EAX |
MOV DWORD [_files],EAX |
DEC EAX |
OR EAX,EAX |
JNE _1_507 |
JMP _1_506 |
_1_507: |
MOV EAX,1 |
MOV DWORD [_eof],EAX |
JMP _1_508 |
_1_506: |
MOV EAX,__iob |
MOV DWORD [_input],EAX |
_1_508: |
XOR CL,CL |
CALL _kill |
MOV ESP,EBP |
POP EBP |
RET |
_1_485 DB 46,67,0,114,0,46,65,83,77,0 |
DB 119,0 |
_mustopen: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fopen |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _1_511 |
JMP _1_510 |
_1_511: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_1_510: |
MOV EAX,_1_509+0 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _lout |
ADD ESP,8 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_1_509 DB 111,112,101,110,32,101,114,114,111,114 |
DB 32,111,110,32,0 |
/programs/develop/scc/Cc2.asm |
---|
0,0 → 1,3034 |
_preproce: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
MOV EAX,[_ccode] |
OR EAX,EAX |
JNE _2_3 |
JMP _2_2 |
_2_3: |
MOV EAX,[_mline] |
MOV DWORD [_line],EAX |
XOR CL,CL |
CALL _ifline |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_5 |
JMP _2_4 |
_2_5: |
MOV ESP,EBP |
POP EBP |
RET |
_2_4: |
JMP _2_6 |
_2_2: |
XOR CL,CL |
CALL _inline |
MOV ESP,EBP |
POP EBP |
RET |
_2_6: |
MOV EAX,-1 |
MOV DWORD [_pptr],EAX |
_2_7: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __ne |
OR EAX,EAX |
JNE _2_11 |
JMP _2_9 |
_2_11: |
MOV EAX,[_ch] |
OR EAX,EAX |
JNE _2_12 |
JMP _2_9 |
_2_12: |
MOV EAX,1 |
JMP _2_10 |
_2_9: |
XOR EAX,EAX |
_2_10: |
OR EAX,EAX |
JNE _2_13 |
JMP _2_8 |
_2_13: |
XOR CL,CL |
CALL _white |
OR EAX,EAX |
JNE _2_15 |
JMP _2_14 |
_2_15: |
MOV EAX,32 |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
_2_16: |
XOR CL,CL |
CALL _white |
OR EAX,EAX |
JNE _2_18 |
JMP _2_17 |
_2_18: |
XOR CL,CL |
CALL _gch |
JMP _2_16 |
_2_17: |
JMP _2_19 |
_2_14: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,34 |
CALL __eq |
OR EAX,EAX |
JNE _2_21 |
JMP _2_20 |
_2_21: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
XOR CL,CL |
CALL _gch |
_2_22: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,34 |
CALL __ne |
OR EAX,EAX |
JE _2_28 |
JMP _2_24 |
_2_28: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,92 |
CALL __eq |
OR EAX,EAX |
JNE _2_29 |
JMP _2_25 |
_2_29: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOV EAX,2 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,92 |
CALL __ne |
OR EAX,EAX |
JNE _2_30 |
JMP _2_25 |
_2_30: |
MOV EAX,1 |
JMP _2_26 |
_2_25: |
XOR EAX,EAX |
_2_26: |
OR EAX,EAX |
JE _2_31 |
JMP _2_24 |
_2_31: |
XOR EAX,EAX |
JMP _2_27 |
_2_24: |
MOV EAX,1 |
_2_27: |
OR EAX,EAX |
JNE _2_32 |
JMP _2_23 |
_2_32: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _2_34 |
JMP _2_33 |
_2_34: |
MOV EAX,_2_1+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _2_23 |
_2_33: |
XOR CL,CL |
CALL _gch |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_22 |
_2_23: |
XOR CL,CL |
CALL _gch |
MOV EAX,34 |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_35 |
_2_20: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,39 |
CALL __eq |
OR EAX,EAX |
JNE _2_37 |
JMP _2_36 |
_2_37: |
MOV EAX,39 |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
XOR CL,CL |
CALL _gch |
_2_38: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,39 |
CALL __ne |
OR EAX,EAX |
JE _2_44 |
JMP _2_40 |
_2_44: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,92 |
CALL __eq |
OR EAX,EAX |
JNE _2_45 |
JMP _2_41 |
_2_45: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOV EAX,2 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,92 |
CALL __ne |
OR EAX,EAX |
JNE _2_46 |
JMP _2_41 |
_2_46: |
MOV EAX,1 |
JMP _2_42 |
_2_41: |
XOR EAX,EAX |
_2_42: |
OR EAX,EAX |
JE _2_47 |
JMP _2_40 |
_2_47: |
XOR EAX,EAX |
JMP _2_43 |
_2_40: |
MOV EAX,1 |
_2_43: |
OR EAX,EAX |
JNE _2_48 |
JMP _2_39 |
_2_48: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _2_50 |
JMP _2_49 |
_2_50: |
MOV EAX,_2_1+9 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _2_39 |
_2_49: |
XOR CL,CL |
CALL _gch |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_38 |
_2_39: |
XOR CL,CL |
CALL _gch |
MOV EAX,39 |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_51 |
_2_36: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __eq |
OR EAX,EAX |
JNE _2_55 |
JMP _2_53 |
_2_55: |
MOV EAX,[_nch] |
MOV EBX,EAX |
MOV EAX,42 |
CALL __eq |
OR EAX,EAX |
JNE _2_56 |
JMP _2_53 |
_2_56: |
MOV EAX,1 |
JMP _2_54 |
_2_53: |
XOR EAX,EAX |
_2_54: |
OR EAX,EAX |
JNE _2_57 |
JMP _2_52 |
_2_57: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
_2_58: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,42 |
CALL __eq |
OR EAX,EAX |
JNE _2_62 |
JMP _2_60 |
_2_62: |
MOV EAX,[_nch] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __eq |
OR EAX,EAX |
JNE _2_63 |
JMP _2_60 |
_2_63: |
MOV EAX,1 |
JMP _2_61 |
_2_60: |
XOR EAX,EAX |
_2_61: |
OR EAX,EAX |
JE _2_64 |
JMP _2_59 |
_2_64: |
MOV EAX,[_ch] |
OR EAX,EAX |
JNE _2_66 |
JMP _2_65 |
_2_66: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
JMP _2_67 |
_2_65: |
XOR CL,CL |
CALL _ifline |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_69 |
JMP _2_68 |
_2_69: |
JMP _2_59 |
_2_68: |
_2_67: |
JMP _2_58 |
_2_59: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
JMP _2_70 |
_2_52: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __eq |
OR EAX,EAX |
JNE _2_74 |
JMP _2_72 |
_2_74: |
MOV EAX,[_nch] |
MOV EBX,EAX |
MOV EAX,47 |
CALL __eq |
OR EAX,EAX |
JNE _2_75 |
JMP _2_72 |
_2_75: |
MOV EAX,1 |
JMP _2_73 |
_2_72: |
XOR EAX,EAX |
_2_73: |
OR EAX,EAX |
JNE _2_76 |
JMP _2_71 |
_2_76: |
MOV EAX,2 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
_2_77: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __ne |
OR EAX,EAX |
JNE _2_79 |
JMP _2_78 |
_2_79: |
MOV EAX,[_ch] |
OR EAX,EAX |
JNE _2_81 |
JMP _2_80 |
_2_81: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
JMP _2_82 |
_2_80: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_84 |
JMP _2_83 |
_2_84: |
JMP _2_78 |
_2_83: |
_2_82: |
JMP _2_77 |
_2_78: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
JMP _2_85 |
_2_71: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_87 |
JMP _2_86 |
_2_87: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_88: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_92 |
JMP _2_90 |
_2_92: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
CALL __lt |
OR EAX,EAX |
JNE _2_93 |
JMP _2_90 |
_2_93: |
MOV EAX,1 |
JMP _2_91 |
_2_90: |
XOR EAX,EAX |
_2_91: |
OR EAX,EAX |
JNE _2_94 |
JMP _2_89 |
_2_94: |
MOV EAX,_msname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_ch] |
POP EBX |
MOV [EBX],AL |
XOR CL,CL |
CALL _gch |
JMP _2_88 |
_2_89: |
MOV EAX,_msname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV EAX,_msname |
PUSH EAX |
MOV EAX,[_macn] |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV EAX,[_macn] |
MOV EBX,3300 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,300 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,6 |
CALL _search |
ADD ESP,24 |
OR EAX,EAX |
JNE _2_96 |
JMP _2_95 |
_2_96: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_cptr] |
MOV EBX,9 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
_2_97: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EAX,[_macq] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
OR EAX,EAX |
JNE _2_99 |
JMP _2_98 |
_2_99: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_97 |
_2_98: |
_2_100: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_102 |
JMP _2_101 |
_2_102: |
XOR CL,CL |
CALL _gch |
JMP _2_100 |
_2_101: |
JMP _2_103 |
_2_95: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_104: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EAX,_msname |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
OR EAX,EAX |
JNE _2_106 |
JMP _2_105 |
_2_106: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
JMP _2_104 |
_2_105: |
_2_103: |
JMP _2_107 |
_2_86: |
XOR CL,CL |
CALL _gch |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
_2_107: |
_2_85: |
_2_70: |
_2_51: |
_2_35: |
_2_19: |
JMP _2_7 |
_2_8: |
MOV EAX,[_pptr] |
MOV EBX,EAX |
MOV EAX,127 |
CALL __ge |
OR EAX,EAX |
JNE _2_109 |
JMP _2_108 |
_2_109: |
MOV EAX,_2_1+23 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_2_108: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _keepch |
ADD ESP,4 |
MOV EAX,[_pline] |
MOV DWORD [_line],EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_2_1 DB 110,111,32,113,117,111,116,101,0,110 |
DB 111,32,97,112,111,115,116,114,111,112 |
DB 104,101,0,108,105,110,101,32,116,111 |
DB 111,32,108,111,110,103,0 |
_keepch: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_pptr] |
MOV EBX,EAX |
MOV EAX,127 |
CALL __lt |
OR EAX,EAX |
JNE _2_112 |
JMP _2_111 |
_2_112: |
MOV EAX,[_pline] |
PUSH EAX |
MOV EAX,[_pptr] |
INC EAX |
MOV DWORD [_pptr],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
_2_111: |
POP EBP |
RET |
_ifline: |
PUSH EBP |
MOV EBP,ESP |
_2_114: |
XOR CL,CL |
CALL _inline |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_117 |
JMP _2_116 |
_2_117: |
POP EBP |
RET |
_2_116: |
MOV EAX,_2_113+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_119 |
JMP _2_118 |
_2_119: |
MOV EAX,[_iflevel] |
INC EAX |
MOV DWORD [_iflevel],EAX |
MOV EAX,[_skipleve] |
OR EAX,EAX |
JNE _2_121 |
JMP _2_120 |
_2_121: |
JMP _2_114 |
_2_120: |
MOV EAX,_msname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
MOV EAX,_msname |
PUSH EAX |
MOV EAX,[_macn] |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV EAX,[_macn] |
MOV EBX,3300 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,300 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,6 |
CALL _search |
ADD ESP,24 |
OR EAX,EAX |
JE _2_123 |
JMP _2_122 |
_2_123: |
MOV EAX,[_iflevel] |
MOV DWORD [_skipleve],EAX |
_2_122: |
JMP _2_114 |
_2_118: |
MOV EAX,_2_113+7 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_125 |
JMP _2_124 |
_2_125: |
MOV EAX,[_iflevel] |
INC EAX |
MOV DWORD [_iflevel],EAX |
MOV EAX,[_skipleve] |
OR EAX,EAX |
JNE _2_127 |
JMP _2_126 |
_2_127: |
JMP _2_114 |
_2_126: |
MOV EAX,_msname |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
MOV EAX,_msname |
PUSH EAX |
MOV EAX,[_macn] |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV EAX,[_macn] |
MOV EBX,3300 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,300 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,6 |
CALL _search |
ADD ESP,24 |
OR EAX,EAX |
JNE _2_129 |
JMP _2_128 |
_2_129: |
MOV EAX,[_iflevel] |
MOV DWORD [_skipleve],EAX |
_2_128: |
JMP _2_114 |
_2_124: |
MOV EAX,_2_113+15 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_131 |
JMP _2_130 |
_2_131: |
MOV EAX,[_iflevel] |
OR EAX,EAX |
JNE _2_133 |
JMP _2_132 |
_2_133: |
MOV EAX,[_skipleve] |
PUSH EAX |
MOV EAX,[_iflevel] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_135 |
JMP _2_134 |
_2_135: |
XOR EAX,EAX |
MOV DWORD [_skipleve],EAX |
JMP _2_136 |
_2_134: |
MOV EAX,[_skipleve] |
OR EAX,EAX |
JE _2_138 |
JMP _2_137 |
_2_138: |
MOV EAX,[_iflevel] |
MOV DWORD [_skipleve],EAX |
_2_137: |
_2_136: |
JMP _2_139 |
_2_132: |
XOR CL,CL |
CALL _noiferr |
_2_139: |
JMP _2_114 |
_2_130: |
MOV EAX,_2_113+21 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_141 |
JMP _2_140 |
_2_141: |
MOV EAX,[_iflevel] |
OR EAX,EAX |
JNE _2_143 |
JMP _2_142 |
_2_143: |
MOV EAX,[_skipleve] |
PUSH EAX |
MOV EAX,[_iflevel] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_145 |
JMP _2_144 |
_2_145: |
XOR EAX,EAX |
MOV DWORD [_skipleve],EAX |
_2_144: |
MOV EAX,[_iflevel] |
DEC EAX |
MOV DWORD [_iflevel],EAX |
JMP _2_146 |
_2_142: |
XOR CL,CL |
CALL _noiferr |
_2_146: |
JMP _2_114 |
_2_140: |
MOV EAX,[_skipleve] |
OR EAX,EAX |
JNE _2_148 |
JMP _2_147 |
_2_148: |
JMP _2_114 |
_2_147: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _2_150 |
JMP _2_149 |
_2_150: |
JMP _2_114 |
_2_149: |
JMP _2_115 |
JMP _2_114 |
_2_115: |
POP EBP |
RET |
_2_113 DB 35,105,102,100,101,102,0,35,105,102 |
DB 110,100,101,102,0,35,101,108,115,101 |
DB 0,35,101,110,100,105,102,0 |
_inline: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
MOV EAX,[_input] |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __eq |
OR EAX,EAX |
JNE _2_153 |
JMP _2_152 |
_2_153: |
XOR CL,CL |
CALL _openfile |
_2_152: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_155 |
JMP _2_154 |
_2_155: |
MOV ESP,EBP |
POP EBP |
RET |
_2_154: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EAX,[_input2] |
POP EBX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __eq |
OR EAX,EAX |
JNE _2_157 |
JMP _2_156 |
_2_157: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EAX,[_input] |
POP EBX |
MOV [EBX],EAX |
_2_156: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,127 |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fgets |
ADD ESP,12 |
OR EAX,EAX |
JE _2_159 |
JMP _2_158 |
_2_159: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _OS_fclos |
ADD ESP,4 |
MOV EAX,[_input2] |
MOV EBX,EAX |
MOV EAX,-1 |
CALL __ne |
OR EAX,EAX |
JNE _2_161 |
JMP _2_160 |
_2_161: |
MOV EAX,-1 |
MOV DWORD [_input2],EAX |
JMP _2_162 |
_2_160: |
MOV EAX,-1 |
MOV DWORD [_input],EAX |
_2_162: |
MOV EAX,[_line] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _2_163 |
_2_158: |
MOV EAX,[_listfp] |
OR EAX,EAX |
JNE _2_165 |
JMP _2_164 |
_2_165: |
MOV EAX,[_listfp] |
PUSH EAX |
MOV EAX,[_output] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_167 |
JMP _2_166 |
_2_167: |
MOV EAX,59 |
PUSH EAX |
MOV EAX,[_output] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_2_166: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,[_listfp] |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
_2_164: |
_2_163: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_inbyte: |
PUSH EBP |
MOV EBP,ESP |
_2_169: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _2_171 |
JMP _2_170 |
_2_171: |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_173 |
JMP _2_172 |
_2_173: |
XOR EAX,EAX |
POP EBP |
RET |
_2_172: |
XOR CL,CL |
CALL _preproce |
JMP _2_169 |
_2_170: |
XOR CL,CL |
CALL _gch |
POP EBP |
RET |
_symname: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
XOR CL,CL |
CALL _blanks |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _alpha |
ADD ESP,4 |
OR EAX,EAX |
JE _2_176 |
JMP _2_175 |
_2_176: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV ESP,EBP |
POP EBP |
RET |
_2_175: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_177: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_179 |
JMP _2_178 |
_2_179: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
XOR CL,CL |
CALL _gch |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
CALL __lt |
OR EAX,EAX |
JNE _2_181 |
JMP _2_180 |
_2_181: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
_2_180: |
JMP _2_177 |
_2_178: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_need: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _2_184 |
JMP _2_183 |
_2_184: |
MOV EAX,_2_182+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_2_183: |
POP EBP |
RET |
_2_182 DB 109,105,115,115,105,110,103,32,116,111 |
DB 107,101,110,0 |
_ns: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_2_185+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _2_187 |
JMP _2_186 |
_2_187: |
MOV EAX,_2_185+2 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
JMP _2_188 |
_2_186: |
XOR EAX,EAX |
MOV DWORD [_errflag],EAX |
_2_188: |
POP EBP |
RET |
_2_185 DB 59,0,110,111,32,115,101,109,105,99 |
DB 111,108,111,110,0 |
_match: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR CL,CL |
CALL _blanks |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _2_191 |
JMP _2_190 |
_2_191: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_2_190: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_streq: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_193: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _2_195 |
JMP _2_194 |
_2_195: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
CALL __ne |
OR EAX,EAX |
JNE _2_197 |
JMP _2_196 |
_2_197: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_2_196: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _2_193 |
_2_194: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_amatch: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR CL,CL |
CALL _blanks |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _astreq |
ADD ESP,12 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _2_200 |
JMP _2_199 |
_2_200: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_2_199: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_astreq: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_202: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __lt |
OR EAX,EAX |
JNE _2_204 |
JMP _2_203 |
_2_204: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
CALL __ne |
OR EAX,EAX |
JNE _2_206 |
JMP _2_205 |
_2_206: |
JMP _2_203 |
_2_205: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __lt |
OR EAX,EAX |
JNE _2_208 |
JMP _2_207 |
_2_208: |
JMP _2_203 |
_2_207: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __lt |
OR EAX,EAX |
JNE _2_210 |
JMP _2_209 |
_2_210: |
JMP _2_203 |
_2_209: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _2_202 |
_2_203: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JE _2_214 |
JMP _2_212 |
_2_214: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JE _2_215 |
JMP _2_212 |
_2_215: |
XOR EAX,EAX |
JMP _2_213 |
_2_212: |
MOV EAX,1 |
_2_213: |
OR EAX,EAX |
JNE _2_216 |
JMP _2_211 |
_2_216: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_2_211: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_nextop: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
XOR EAX,EAX |
MOV DWORD [_opindex],EAX |
XOR CL,CL |
CALL _blanks |
_2_218: |
XOR EAX,EAX |
MOV DWORD [_opsize],EAX |
_2_220: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __gt |
OR EAX,EAX |
JNE _2_222 |
JMP _2_221 |
_2_222: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_opsize] |
INC EAX |
MOV DWORD [_opsize],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
JMP _2_220 |
_2_221: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_opsize] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
MOV DWORD [_opsize],EAX |
OR EAX,EAX |
JNE _2_224 |
JMP _2_223 |
_2_224: |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,[_opsize] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,61 |
CALL __ne |
OR EAX,EAX |
JNE _2_228 |
JMP _2_226 |
_2_228: |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,[_opsize] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,[_opsize] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
CALL __ne |
OR EAX,EAX |
JNE _2_229 |
JMP _2_226 |
_2_229: |
MOV EAX,1 |
JMP _2_227 |
_2_226: |
XOR EAX,EAX |
_2_227: |
OR EAX,EAX |
JNE _2_230 |
JMP _2_225 |
_2_230: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_2_225: |
_2_223: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _2_232 |
JMP _2_231 |
_2_232: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
MOV EAX,[_opindex] |
INC EAX |
MOV DWORD [_opindex],EAX |
JMP _2_233 |
_2_231: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_2_233: |
JMP _2_218 |
_2_219: |
MOV ESP,EBP |
POP EBP |
RET |
_blanks: |
PUSH EBP |
MOV EBP,ESP |
_2_235: |
_2_237: |
MOV EAX,[_ch] |
OR EAX,EAX |
JNE _2_239 |
JMP _2_238 |
_2_239: |
XOR CL,CL |
CALL _white |
OR EAX,EAX |
JNE _2_241 |
JMP _2_240 |
_2_241: |
XOR CL,CL |
CALL _gch |
JMP _2_242 |
_2_240: |
POP EBP |
RET |
_2_242: |
JMP _2_237 |
_2_238: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,[_mline] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_244 |
JMP _2_243 |
_2_244: |
POP EBP |
RET |
_2_243: |
XOR CL,CL |
CALL _preproce |
MOV EAX,[_eof] |
OR EAX,EAX |
JNE _2_246 |
JMP _2_245 |
_2_246: |
JMP _2_236 |
_2_245: |
JMP _2_235 |
_2_236: |
POP EBP |
RET |
_white: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __le |
OR EAX,EAX |
JNE _2_250 |
JMP _2_248 |
_2_250: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _2_251 |
JMP _2_248 |
_2_251: |
MOV EAX,1 |
JMP _2_249 |
_2_248: |
XOR EAX,EAX |
_2_249: |
POP EBP |
RET |
_gch: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_ch] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _2_254 |
JMP _2_253 |
_2_254: |
MOV EAX,1 |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
_2_253: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_bump: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _2_257 |
JMP _2_256 |
_2_257: |
MOV EAX,[_lptr] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_lptr],EAX |
JMP _2_258 |
_2_256: |
MOV EAX,[_line] |
MOV DWORD [_lptr],EAX |
_2_258: |
MOV EAX,[_lptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV DWORD [_nch],EAX |
MOV DWORD [_ch],EAX |
OR EAX,EAX |
JNE _2_260 |
JMP _2_259 |
_2_260: |
MOV EAX,[_lptr] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV DWORD [_nch],EAX |
_2_259: |
POP EBP |
RET |
_kill: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_line] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
POP EBP |
RET |
_skip: |
PUSH EBP |
MOV EBP,ESP |
XOR CL,CL |
CALL _inbyte |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_264 |
JMP _2_263 |
_2_264: |
_2_265: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_267 |
JMP _2_266 |
_2_267: |
XOR CL,CL |
CALL _gch |
JMP _2_265 |
_2_266: |
JMP _2_268 |
_2_263: |
_2_269: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JE _2_271 |
JMP _2_270 |
_2_271: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _2_273 |
JMP _2_272 |
_2_273: |
JMP _2_270 |
_2_272: |
XOR CL,CL |
CALL _gch |
JMP _2_269 |
_2_270: |
_2_268: |
XOR CL,CL |
CALL _blanks |
POP EBP |
RET |
_endst: |
PUSH EBP |
MOV EBP,ESP |
XOR CL,CL |
CALL _blanks |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,_2_274+0 |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
OR EAX,EAX |
JE _2_277 |
JMP _2_275 |
_2_277: |
MOV EAX,[_ch] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JE _2_278 |
JMP _2_275 |
_2_278: |
XOR EAX,EAX |
JMP _2_276 |
_2_275: |
MOV EAX,1 |
_2_276: |
POP EBP |
RET |
_2_274 DB 59,0 |
_addsym: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,_glbptr |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_281 |
JMP _2_280 |
_2_281: |
LEA EAX,[EBP+32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _findglb |
ADD ESP,4 |
MOV DWORD [_cptr2],EAX |
OR EAX,EAX |
JNE _2_283 |
JMP _2_282 |
_2_283: |
MOV EAX,[_cptr2] |
POP EBP |
RET |
_2_282: |
MOV EAX,[_cptr] |
OR EAX,EAX |
JE _2_285 |
JMP _2_284 |
_2_285: |
MOV EAX,_2_279+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR EAX,EAX |
POP EBP |
RET |
_2_284: |
JMP _2_286 |
_2_280: |
MOV EAX,[_locptr] |
PUSH EAX |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,20 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
CALL __ugt |
OR EAX,EAX |
JNE _2_288 |
JMP _2_287 |
_2_288: |
MOV EAX,_2_279+29 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
_2_287: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_cptr],EAX |
_2_286: |
MOV EAX,[_cptr] |
PUSH EAX |
LEA EAX,[EBP+28] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
MOV EAX,[_cptr] |
MOV EBX,1 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
MOV EAX,[_cptr] |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_cptr] |
MOV EBX,3 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_cptr] |
MOV EBX,5 |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
MOV EAX,[_cptr] |
MOV EBX,11 |
ADD EAX,EBX |
MOV DWORD [_cptr2],EAX |
MOV DWORD [_cptr3],EAX |
_2_289: |
LEA EAX,[EBP+32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _an |
ADD ESP,4 |
OR EAX,EAX |
JNE _2_291 |
JMP _2_290 |
_2_291: |
MOV EAX,[_cptr2] |
INC EAX |
MOV DWORD [_cptr2],EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP+32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
JMP _2_289 |
_2_290: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,_locptr |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_293 |
JMP _2_292 |
_2_293: |
MOV EAX,[_cptr2] |
PUSH EAX |
MOV EAX,[_cptr2] |
PUSH EAX |
MOV EAX,[_cptr3] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_cptr2] |
INC EAX |
MOV DWORD [_cptr2],EAX |
POP EBX |
MOV [EBX],EAX |
_2_292: |
MOV EAX,[_cptr] |
POP EBP |
RET |
_2_279 DB 103,108,111,98,97,108,32,115,121,109 |
DB 98,111,108,32,116,97,98,108,101,32 |
DB 111,118,101,114,102,108,111,119,0,108 |
DB 111,99,97,108,32,115,121,109,98,111 |
DB 108,32,116,97,98,108,101,32,111,118 |
DB 101,114,102,108,111,119,0 |
_search: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _hash |
ADD ESP,4 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
IMUL EBX |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_cptr2],EAX |
MOV DWORD [_cptr],EAX |
_2_295: |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _2_297 |
JMP _2_296 |
_2_297: |
LEA EAX,[EBP+28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_cptr] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,3 |
CALL _astreq |
ADD ESP,12 |
OR EAX,EAX |
JNE _2_299 |
JMP _2_298 |
_2_299: |
MOV EAX,1 |
POP EBP |
RET |
_2_298: |
MOV EAX,[_cptr] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_cptr],EAX |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __uge |
OR EAX,EAX |
JNE _2_301 |
JMP _2_300 |
_2_301: |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV DWORD [_cptr],EAX |
_2_300: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_cptr2] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_303 |
JMP _2_302 |
_2_303: |
XOR EAX,EAX |
MOV DWORD [_cptr],EAX |
POP EBP |
RET |
_2_302: |
JMP _2_295 |
_2_296: |
XOR EAX,EAX |
POP EBP |
RET |
_hash: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_305: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _2_307 |
JMP _2_306 |
_2_307: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _2_305 |
_2_306: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_findglb: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,20 |
PUSH EAX |
MOV EAX,[_symtab] |
MOV EBX,400 |
ADD EAX,EBX |
MOV EBX,3980 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,200 |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV CL,6 |
CALL _search |
ADD ESP,24 |
OR EAX,EAX |
JNE _2_310 |
JMP _2_309 |
_2_310: |
MOV EAX,[_cptr] |
POP EBP |
RET |
_2_309: |
XOR EAX,EAX |
POP EBP |
RET |
_findloc: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_locptr] |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_cptr],EAX |
_2_312: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_symtab] |
POP EBX |
CALL __ugt |
OR EAX,EAX |
JNE _2_314 |
JMP _2_313 |
_2_314: |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_cptr],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_cptr] |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,3 |
CALL _astreq |
ADD ESP,12 |
OR EAX,EAX |
JNE _2_316 |
JMP _2_315 |
_2_316: |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOV EAX,11 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBP |
RET |
_2_315: |
MOV EAX,[_cptr] |
MOV EBX,EAX |
MOV EAX,11 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_cptr],EAX |
JMP _2_312 |
_2_313: |
XOR EAX,EAX |
POP EBP |
RET |
_nextsym: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,11 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_2_318: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
CALL __ge |
OR EAX,EAX |
JNE _2_320 |
JMP _2_319 |
_2_320: |
JMP _2_318 |
_2_319: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBP |
RET |
_addwhile: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_csp] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
MOV EAX,[_wqptr] |
PUSH EAX |
MOV EAX,[_wq] |
MOV EBX,120 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,12 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _2_323 |
JMP _2_322 |
_2_323: |
MOV EAX,_2_321+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
_2_322: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_2_324: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __lt |
OR EAX,EAX |
JNE _2_326 |
JMP _2_325 |
_2_326: |
MOV EAX,[_wqptr] |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV DWORD [_wqptr],EAX |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _2_324 |
_2_325: |
MOV ESP,EBP |
POP EBP |
RET |
_2_321 DB 99,111,110,116,114,111,108,32,115,116 |
DB 97,116,101,109,101,110,116,32,110,101 |
DB 115,116,105,110,103,32,108,105,109,105 |
DB 116,0 |
_readwhil: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_wq] |
POP EBX |
CALL __ule |
OR EAX,EAX |
JNE _2_329 |
JMP _2_328 |
_2_329: |
MOV EAX,_2_327+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR EAX,EAX |
POP EBP |
RET |
_2_328: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,12 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBP |
RET |
_2_330: |
POP EBP |
RET |
_2_327 DB 111,117,116,32,111,102,32,99,111,110 |
DB 116,101,120,116,0 |
_delwhile: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_wqptr] |
PUSH EAX |
MOV EAX,[_wq] |
POP EBX |
CALL __ugt |
OR EAX,EAX |
JNE _2_333 |
JMP _2_332 |
_2_333: |
MOV EAX,[_wqptr] |
MOV EBX,EAX |
MOV EAX,12 |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV DWORD [_wqptr],EAX |
_2_332: |
POP EBP |
RET |
_alpha: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isalpha |
ADD ESP,4 |
OR EAX,EAX |
JE _2_337 |
JMP _2_335 |
_2_337: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,95 |
CALL __eq |
OR EAX,EAX |
JE _2_338 |
JMP _2_335 |
_2_338: |
XOR EAX,EAX |
JMP _2_336 |
_2_335: |
MOV EAX,1 |
_2_336: |
POP EBP |
RET |
_an: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _alpha |
ADD ESP,4 |
OR EAX,EAX |
JE _2_342 |
JMP _2_340 |
_2_342: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JE _2_343 |
JMP _2_340 |
_2_343: |
XOR EAX,EAX |
JMP _2_341 |
_2_340: |
MOV EAX,1 |
_2_341: |
POP EBP |
RET |
_getlabel: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_nxtlab] |
INC EAX |
MOV DWORD [_nxtlab],EAX |
POP EBP |
RET |
_getint: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
_2_346: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _2_348 |
JMP _2_347 |
_2_348: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,255 |
AND EAX,EBX |
POP EBX |
OR EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _2_346 |
_2_347: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_putint: |
PUSH EBP |
MOV EBP,ESP |
_2_350: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _2_352 |
JMP _2_351 |
_2_352: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBX |
MOV [EBX],EAX |
JMP _2_350 |
_2_351: |
POP EBP |
RET |
_lout: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,10 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
POP EBP |
RET |
_illname: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_2_354+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR CL,CL |
CALL _skip |
POP EBP |
RET |
_2_354 DB 105,108,108,101,103,97,108,32,115,121 |
DB 109,98,111,108,0 |
_multidef: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_2_355+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
POP EBP |
RET |
_2_355 DB 97,108,114,101,97,100,121,32,100,101 |
DB 102,105,110,101,100,0 |
_needlval: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_2_356+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
POP EBP |
RET |
_2_356 DB 109,117,115,116,32,98,101,32,108,118 |
DB 97,108,117,101,0 |
_noiferr: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_2_357+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR EAX,EAX |
MOV DWORD [_errflag],EAX |
POP EBP |
RET |
_2_357 DB 110,111,32,109,97,116,99,104,105,110 |
DB 103,32,35,105,102,46,46,46,0 |
_error: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_errflag] |
OR EAX,EAX |
JNE _2_360 |
JMP _2_359 |
_2_360: |
POP EBP |
RET |
_2_359: |
MOV EAX,1 |
MOV DWORD [_errflag],EAX |
_2_361: |
MOV EAX,[_line] |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _lout |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _errout |
ADD ESP,8 |
MOVSX EAX,BYTE [_alarm] |
OR EAX,EAX |
JNE _2_363 |
JMP _2_362 |
_2_363: |
MOV EAX,7 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
_2_362: |
MOVSX EAX,BYTE [_pause] |
OR EAX,EAX |
JNE _2_365 |
JMP _2_364 |
_2_365: |
_2_366: |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,1 |
CALL _OS_fgetc |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,10 |
CALL __ne |
OR EAX,EAX |
JNE _2_368 |
JMP _2_367 |
_2_368: |
JMP _2_366 |
_2_367: |
_2_364: |
MOV EAX,[_listfp] |
OR EAX,EAX |
JG _2_370 |
JMP _2_369 |
_2_370: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_listfp] |
PUSH EAX |
MOV CL,2 |
CALL _errout |
ADD ESP,8 |
_2_369: |
POP EBP |
RET |
_errout: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,[_line] |
MOV EBX,2 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_2_372: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
MOV EAX,[_lptr] |
POP EBX |
CALL __ule |
OR EAX,EAX |
JNE _2_374 |
JMP _2_373 |
_2_374: |
MOV EAX,32 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _2_372 |
_2_373: |
MOV EAX,_2_371+0 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _lout |
ADD ESP,8 |
MOV EAX,_2_371+3 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _lout |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_2_371 DB 47,92,0,42,42,42,42,32,0 |
/programs/develop/scc/Cc3.asm |
---|
0,0 → 1,6740 |
_constexp: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-12 |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-12] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _expressi |
ADD ESP,8 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_3 |
JMP _3_2 |
_3_3: |
MOV EAX,_3_1+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_3_2: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_1 DB 109,117,115,116,32,98,101,32,99,111 |
DB 110,115,116,97,110,116,32,101,120,112 |
DB 114,101,115,115,105,111,110,0 |
_null_is: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_3_7: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,7 |
CALL __lt |
OR EAX,EAX |
JNE _3_9 |
JMP _3_6 |
_3_9: |
JMP _3_8 |
_3_5: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _3_7 |
_3_8: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
JMP _3_5 |
_3_6: |
MOV ESP,EBP |
POP EBP |
RET |
_expressi: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-32 |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _level1 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_12 |
JMP _3_11 |
_3_12: |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_11: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-32] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-32] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_test: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-36 |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_15 |
JMP _3_14 |
_3_15: |
MOV EAX,_3_13+0 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
_3_14: |
_3_16: |
LEA EAX,[EBP-32] |
PUSH EAX |
LEA EAX,[EBP-36] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,1 |
CALL _level1 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_19 |
JMP _3_18 |
_3_19: |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_18: |
MOV EAX,_3_13+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_21 |
JMP _3_20 |
_3_21: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
JMP _3_22 |
_3_20: |
JMP _3_17 |
_3_22: |
JMP _3_16 |
_3_17: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_24 |
JMP _3_23 |
_3_24: |
MOV EAX,_3_13+4 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
_3_23: |
LEA EAX,[EBP-28] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_26 |
JMP _3_25 |
_3_26: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP-28] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_28 |
JMP _3_27 |
_3_28: |
MOV ESP,EBP |
POP EBP |
RET |
_3_27: |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_3_25: |
LEA EAX,[EBP-28] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_30 |
JMP _3_29 |
_3_30: |
LEA EAX,[EBP-28] |
MOV EBX,20 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
JMP _3_33 |
_3_34: |
_3_35: |
MOV EAX,19 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_36: |
_3_37: |
MOV EAX,54 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_38: |
MOV EAX,34 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_39: |
MOV EAX,21 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_40: |
LEA EAX,[EBP-28] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
JMP _3_32 |
_3_41: |
MOV EAX,46 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_42: |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_43: |
MOV EAX,42 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,3 |
CALL _zerojump |
ADD ESP,12 |
JMP _3_32 |
_3_44: |
MOV EAX,54 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_32 |
JMP _3_32 |
_3_33: |
CALL __switch |
DD _3_34 |
DD 20 |
DD _3_35 |
DD 44 |
DD _3_36 |
DD 55 |
DD _3_37 |
DD 36 |
DD _3_38 |
DD 35 |
DD _3_39 |
DD 22 |
DD _3_40 |
DD 23 |
DD _3_41 |
DD 47 |
DD _3_42 |
DD 48 |
DD _3_43 |
DD 43 |
DD 0 |
JMP _3_44 |
_3_32: |
JMP _3_45 |
_3_29: |
MOV EAX,54 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_45: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_3_13 DB 40,0,44,0,41,0 |
_zerojump: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
POP EBP |
RET |
_level1: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-48 |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP-40] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV EAX,_level2 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_49 |
JMP _3_48 |
_3_49: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_48: |
MOV EAX,_3_47+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_51 |
JMP _3_50 |
_3_51: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,57 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_52 |
_3_50: |
MOV EAX,_3_47+3 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_54 |
JMP _3_53 |
_3_54: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,73 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_55 |
_3_53: |
MOV EAX,_3_47+6 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_57 |
JMP _3_56 |
_3_57: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,3 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_58 |
_3_56: |
MOV EAX,_3_47+9 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_60 |
JMP _3_59 |
_3_60: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_61 |
_3_59: |
MOV EAX,_3_47+12 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_63 |
JMP _3_62 |
_3_63: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,69 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_64 |
_3_62: |
MOV EAX,_3_47+15 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_66 |
JMP _3_65 |
_3_66: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX,52 |
MOV [EBX],EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,53 |
MOV [EBX],EAX |
JMP _3_67 |
_3_65: |
MOV EAX,_3_47+18 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_69 |
JMP _3_68 |
_3_69: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX,16 |
MOV [EBX],EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,17 |
MOV [EBX],EAX |
JMP _3_70 |
_3_68: |
MOV EAX,_3_47+21 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_72 |
JMP _3_71 |
_3_72: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX,49 |
MOV [EBX],EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,50 |
MOV [EBX],EAX |
JMP _3_73 |
_3_71: |
MOV EAX,_3_47+24 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_75 |
JMP _3_74 |
_3_75: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,7 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_76 |
_3_74: |
MOV EAX,_3_47+28 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_78 |
JMP _3_77 |
_3_78: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX,6 |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_79 |
_3_77: |
MOV EAX,_3_47+32 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_81 |
JMP _3_80 |
_3_81: |
LEA EAX,[EBP-44] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_82 |
_3_80: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_82: |
_3_79: |
_3_76: |
_3_73: |
_3_70: |
_3_67: |
_3_64: |
_3_61: |
_3_58: |
_3_55: |
_3_52: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_84 |
JMP _3_83 |
_3_84: |
XOR CL,CL |
CALL _needlval |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_83: |
LEA EAX,[EBP-40] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-40] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_86 |
JMP _3_85 |
_3_86: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_88 |
JMP _3_87 |
_3_88: |
MOV EAX,60 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_87: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,_level1 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,5 |
CALL _down2 |
ADD ESP,20 |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_90 |
JMP _3_89 |
_3_90: |
MOV EAX,59 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_89: |
JMP _3_91 |
_3_85: |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_93 |
JMP _3_92 |
_3_93: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
LEA EAX,[EBP-44] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-48] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,_level1 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,5 |
CALL _down2 |
ADD ESP,20 |
JMP _3_94 |
_3_92: |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _level1 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_96 |
JMP _3_95 |
_3_96: |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_95: |
_3_94: |
_3_91: |
LEA EAX,[EBP-40] |
PUSH EAX |
MOV CL,1 |
CALL _store |
ADD ESP,4 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_47 DB 124,61,0,94,61,0,38,61,0,43 |
DB 61,0,45,61,0,42,61,0,47,61 |
DB 0,37,61,0,62,62,61,0,60,60 |
DB 61,0,61,0 |
_level2: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-76 |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
LEA EAX,[EBP-60] |
PUSH EAX |
MOV EAX,_level3 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_3_97+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _3_99 |
JMP _3_98 |
_3_99: |
LEA EAX,[EBP-60] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_98: |
LEA EAX,[EBP-60] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,54 |
PUSH EAX |
LEA EAX,[EBP-64] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _dropout |
ADD ESP,16 |
MOV EAX,_level2 |
PUSH EAX |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_101 |
JMP _3_100 |
_3_101: |
LEA EAX,[EBP-28] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
JMP _3_102 |
_3_100: |
LEA EAX,[EBP-28] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_104 |
JMP _3_103 |
_3_104: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP-28] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_103: |
_3_102: |
MOV EAX,_3_97+2 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-68] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-64] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,_level2 |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_106 |
JMP _3_105 |
_3_106: |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
JMP _3_107 |
_3_105: |
LEA EAX,[EBP-56] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_109 |
JMP _3_108 |
_3_109: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP-56] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_108: |
_3_107: |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-68] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-28] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_113 |
JMP _3_111 |
_3_113: |
LEA EAX,[EBP-56] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_114 |
JMP _3_111 |
_3_114: |
MOV EAX,1 |
JMP _3_112 |
_3_111: |
XOR EAX,EAX |
_3_112: |
OR EAX,EAX |
JNE _3_115 |
JMP _3_110 |
_3_115: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_116 |
_3_110: |
LEA EAX,[EBP-56] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_118 |
JMP _3_117 |
_3_118: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-28] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-28] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-28] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _3_119 |
_3_117: |
LEA EAX,[EBP-28] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_123 |
JMP _3_121 |
_3_123: |
LEA EAX,[EBP-28] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JE _3_124 |
JMP _3_121 |
_3_124: |
XOR EAX,EAX |
JMP _3_122 |
_3_121: |
MOV EAX,1 |
_3_122: |
OR EAX,EAX |
JNE _3_125 |
JMP _3_120 |
_3_125: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-56] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-56] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-56] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _3_126 |
_3_120: |
MOV EAX,_3_97+4 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_3_126: |
_3_119: |
_3_116: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_97 DB 63,0,58,0,109,105,115,109,97,116 |
DB 99,104,101,100,32,101,120,112,114,101 |
DB 115,115,105,111,110,115,0 |
_level3: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_127+0 |
PUSH EAX |
MOV EAX,19 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_level4 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,6 |
CALL _skim |
ADD ESP,24 |
POP EBP |
RET |
_3_127 DB 124,124,0 |
_level4: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_128+0 |
PUSH EAX |
MOV EAX,54 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV EAX,_level5 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,6 |
CALL _skim |
ADD ESP,24 |
POP EBP |
RET |
_3_128 DB 38,38,0 |
_level5: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_129+0 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_level6 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_129 DB 124,0 |
_level6: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_130+0 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV EAX,_level7 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_130 DB 94,0 |
_level7: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_131+0 |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV EAX,_level8 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_131 DB 38,0 |
_level8: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_132+0 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV EAX,_level9 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_132 DB 61,61,32,33,61,0 |
_level9: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_133+0 |
PUSH EAX |
MOV EAX,5 |
PUSH EAX |
MOV EAX,_level10 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_133 DB 60,61,32,62,61,32,60,32,62,0 |
_level10: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_134+0 |
PUSH EAX |
MOV EAX,9 |
PUSH EAX |
MOV EAX,_level11 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_134 DB 62,62,32,60,60,0 |
_level11: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_135+0 |
PUSH EAX |
MOV EAX,11 |
PUSH EAX |
MOV EAX,_level12 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_135 DB 43,32,45,0 |
_level12: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_136+0 |
PUSH EAX |
MOV EAX,13 |
PUSH EAX |
MOV EAX,_level13 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _down |
ADD ESP,16 |
POP EBP |
RET |
_3_136 DB 42,32,47,32,37,0 |
_level13: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
MOV EAX,_3_137+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_139 |
JMP _3_138 |
_3_139: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JE _3_141 |
JMP _3_140 |
_3_141: |
XOR CL,CL |
CALL _needlval |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_140: |
MOV EAX,68 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,3 |
CALL _step |
ADD ESP,12 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_138: |
MOV EAX,_3_137+3 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_144 |
JMP _3_143 |
_3_144: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JE _3_146 |
JMP _3_145 |
_3_146: |
XOR CL,CL |
CALL _needlval |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_145: |
MOV EAX,65 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,3 |
CALL _step |
ADD ESP,12 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_143: |
MOV EAX,_3_137+6 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_149 |
JMP _3_148 |
_3_149: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_151 |
JMP _3_150 |
_3_151: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_150: |
MOV EAX,13 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
NOT EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_148: |
MOV EAX,_3_137+8 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_154 |
JMP _3_153 |
_3_154: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_156 |
JMP _3_155 |
_3_156: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_155: |
MOV EAX,45 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_153: |
MOV EAX,_3_137+10 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_159 |
JMP _3_158 |
_3_159: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_161 |
JMP _3_160 |
_3_161: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_160: |
MOV EAX,4 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_158: |
MOV EAX,_3_137+12 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_164 |
JMP _3_163 |
_3_164: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_166 |
JMP _3_165 |
_3_166: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_165: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_168 |
JMP _3_167 |
_3_168: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _3_169 |
_3_167: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,16 |
MOV [EBX],EAX |
_3_169: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_3_163: |
MOV EAX,_3_137+14 |
PUSH EAX |
MOV EAX,6 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_172 |
JMP _3_171 |
_3_172: |
ADD ESP,-24 |
MOV EAX,_3_137+21 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_174 |
JMP _3_173 |
_3_174: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _3_175 |
_3_173: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_3_175: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV EAX,_3_137+23 |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_177 |
JMP _3_176 |
_3_177: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
_3_176: |
MOV EAX,_3_137+32 |
PUSH EAX |
MOV EAX,3 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_179 |
JMP _3_178 |
_3_179: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
JMP _3_180 |
_3_178: |
MOV EAX,_3_137+36 |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _amatch |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_182 |
JMP _3_181 |
_3_182: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
_3_181: |
_3_180: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_184 |
JMP _3_183 |
_3_184: |
MOV EAX,_3_137+41 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_186 |
JMP _3_185 |
_3_186: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,4 |
MOV [EBX],EAX |
_3_185: |
JMP _3_187 |
_3_183: |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_193 |
JMP _3_189 |
_3_193: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _findloc |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _3_194 |
JMP _3_190 |
_3_194: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _findglb |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _3_195 |
JMP _3_190 |
_3_195: |
XOR EAX,EAX |
JMP _3_191 |
_3_190: |
MOV EAX,1 |
_3_191: |
OR EAX,EAX |
JNE _3_196 |
JMP _3_189 |
_3_196: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __ne |
OR EAX,EAX |
JNE _3_197 |
JMP _3_189 |
_3_197: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __ne |
OR EAX,EAX |
JNE _3_198 |
JMP _3_189 |
_3_198: |
MOV EAX,1 |
JMP _3_192 |
_3_189: |
XOR EAX,EAX |
_3_192: |
OR EAX,EAX |
JNE _3_199 |
JMP _3_188 |
_3_199: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,3 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
JMP _3_200 |
_3_188: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_202 |
JMP _3_201 |
_3_202: |
MOV EAX,_3_137+43 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
_3_201: |
_3_200: |
_3_187: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_204 |
JMP _3_203 |
_3_204: |
MOV EAX,_3_137+66 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
_3_203: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,16 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_171: |
MOV EAX,_3_137+68 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_207 |
JMP _3_206 |
_3_207: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level13 |
ADD ESP,4 |
OR EAX,EAX |
JE _3_209 |
JMP _3_208 |
_3_209: |
MOV EAX,_3_137+70 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_208: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_211 |
JMP _3_210 |
_3_211: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_210: |
MOV EAX,25 |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_206: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level14 |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_3_137+86 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_214 |
JMP _3_213 |
_3_214: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_216 |
JMP _3_215 |
_3_216: |
XOR CL,CL |
CALL _needlval |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_215: |
MOV EAX,68 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,65 |
PUSH EAX |
MOV CL,3 |
CALL _step |
ADD ESP,12 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_213: |
MOV EAX,_3_137+89 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_219 |
JMP _3_218 |
_3_219: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_221 |
JMP _3_220 |
_3_221: |
XOR CL,CL |
CALL _needlval |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_220: |
MOV EAX,65 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,68 |
PUSH EAX |
MOV CL,3 |
CALL _step |
ADD ESP,12 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_218: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_222: |
_3_217: |
_3_212: |
_3_205: |
_3_170: |
_3_162: |
_3_157: |
_3_152: |
_3_147: |
_3_142: |
MOV ESP,EBP |
POP EBP |
RET |
_3_137 DB 43,43,0,45,45,0,126,0,33,0 |
DB 45,0,42,0,115,105,122,101,111,102 |
DB 0,40,0,117,110,115,105,103,110,101 |
DB 100,0,105,110,116,0,99,104,97,114 |
DB 0,42,0,109,117,115,116,32,98,101 |
DB 32,111,98,106,101,99,116,32,111,114 |
DB 32,116,121,112,101,0,41,0,38,0 |
DB 105,108,108,101,103,97,108,32,97,100 |
DB 100,114,101,115,115,0,43,43,0,45 |
DB 45,0 |
_level14: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-24 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _primary |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
XOR CL,CL |
CALL _blanks |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,91 |
CALL __eq |
OR EAX,EAX |
JE _3_227 |
JMP _3_225 |
_3_227: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,40 |
CALL __eq |
OR EAX,EAX |
JE _3_228 |
JMP _3_225 |
_3_228: |
XOR EAX,EAX |
JMP _3_226 |
_3_225: |
MOV EAX,1 |
_3_226: |
OR EAX,EAX |
JNE _3_229 |
JMP _3_224 |
_3_229: |
ADD ESP,-28 |
LEA EAX,[EBP-52] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
_3_230: |
MOV EAX,_3_223+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_233 |
JMP _3_232 |
_3_233: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_235 |
JMP _3_234 |
_3_235: |
MOV EAX,_3_223+2 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
XOR CL,CL |
CALL _skip |
MOV EAX,_3_223+18 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_234: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_237 |
JMP _3_236 |
_3_237: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_239 |
JMP _3_238 |
_3_239: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_238: |
JMP _3_240 |
_3_236: |
MOV EAX,_3_223+20 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_3_240: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-24] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP-52] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
XOR EAX,EAX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_level1 |
PUSH EAX |
LEA EAX,[EBP-52] |
PUSH EAX |
LEA EAX,[EBP-52] |
PUSH EAX |
MOV CL,5 |
CALL _down2 |
ADD ESP,20 |
MOV EAX,_3_223+36 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
LEA EAX,[EBP-52] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_242 |
JMP _3_241 |
_3_242: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP-52] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_244 |
JMP _3_243 |
_3_244: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _3_246 |
JMP _3_245 |
_3_246: |
MOV EAX,110 |
PUSH EAX |
LEA EAX,[EBP-52] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_247 |
_3_245: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_249 |
JMP _3_248 |
_3_249: |
MOV EAX,110 |
PUSH EAX |
LEA EAX,[EBP-52] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_250 |
_3_248: |
MOV EAX,110 |
PUSH EAX |
LEA EAX,[EBP-52] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_250: |
_3_247: |
MOV EAX,1 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_243: |
JMP _3_251 |
_3_241: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _3_253 |
JMP _3_252 |
_3_253: |
MOV EAX,14 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,14 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_254 |
_3_252: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_256 |
JMP _3_255 |
_3_256: |
MOV EAX,14 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_255: |
_3_254: |
MOV EAX,1 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_251: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _3_257 |
_3_232: |
MOV EAX,_3_223+38 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_259 |
JMP _3_258 |
_3_259: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_261 |
JMP _3_260 |
_3_261: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _callfunc |
ADD ESP,4 |
JMP _3_262 |
_3_260: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __ne |
OR EAX,EAX |
JNE _3_264 |
JMP _3_263 |
_3_264: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_268 |
JMP _3_266 |
_3_268: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
OR EAX,EAX |
JNE _3_269 |
JMP _3_266 |
_3_269: |
MOV EAX,1 |
JMP _3_267 |
_3_266: |
XOR EAX,EAX |
_3_267: |
OR EAX,EAX |
JNE _3_270 |
JMP _3_265 |
_3_270: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_265: |
XOR EAX,EAX |
PUSH EAX |
MOV CL,1 |
CALL _callfunc |
ADD ESP,4 |
JMP _3_271 |
_3_263: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _callfunc |
ADD ESP,4 |
_3_271: |
_3_262: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
JMP _3_272 |
_3_258: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_272: |
_3_257: |
JMP _3_230 |
_3_231: |
ADD ESP,28 |
_3_224: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_276 |
JMP _3_274 |
_3_276: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _3_277 |
JMP _3_274 |
_3_277: |
MOV EAX,1 |
JMP _3_275 |
_3_274: |
XOR EAX,EAX |
_3_275: |
OR EAX,EAX |
JNE _3_278 |
JMP _3_273 |
_3_278: |
MOV EAX,25 |
PUSH EAX |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_273: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_223 DB 91,0,99,97,110,39,116,32,115,117 |
DB 98,115,99,114,105,112,116,0,93,0 |
DB 99,97,110,39,116,32,115,117,98,115 |
DB 99,114,105,112,116,0,93,0,40,0 |
_primary: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-20 |
MOV EAX,_3_279+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_281 |
JMP _3_280 |
_3_281: |
_3_282: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _level1 |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_3_279+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_284 |
JMP _3_283 |
_3_284: |
JMP _3_282 |
_3_283: |
MOV EAX,_3_279+4 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_280: |
XOR EAX,EAX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,14 |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _symname |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_286 |
JMP _3_285 |
_3_286: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _findloc |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_288 |
JMP _3_287 |
_3_288: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JE _3_290 |
JMP _3_289 |
_3_290: |
XOR CL,CL |
CALL _experr |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_289: |
MOV EAX,58 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,5 |
ADD EAX,EBX |
MOV EBX,2 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,2 |
CALL _getint |
ADD ESP,8 |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_292 |
JMP _3_291 |
_3_292: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_291: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _3_294 |
JMP _3_293 |
_3_294: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,17 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_293: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_3_287: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV CL,1 |
CALL _findglb |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_296 |
JMP _3_295 |
_3_296: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
CALL __ne |
OR EAX,EAX |
JNE _3_298 |
JMP _3_297 |
_3_298: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_300 |
JMP _3_299 |
_3_300: |
MOV EAX,25 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_299: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _3_302 |
JMP _3_301 |
_3_302: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_301: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_3_297: |
JMP _3_303 |
_3_295: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-16] |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV EAX,16 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV EAX,_glbptr |
PUSH EAX |
MOV EAX,4 |
PUSH EAX |
MOV CL,7 |
CALL _addsym |
ADD ESP,28 |
POP EBX |
MOV [EBX],EAX |
_3_303: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_285: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _constant |
ADD ESP,4 |
OR EAX,EAX |
JE _3_305 |
JMP _3_304 |
_3_305: |
XOR CL,CL |
CALL _experr |
_3_304: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_279 DB 40,0,44,0,41,0 |
_experr: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,_3_306+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV EAX,108 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
XOR CL,CL |
CALL _skip |
POP EBP |
RET |
_3_306 DB 105,110,118,97,108,105,100,32,101,120 |
DB 112,114,101,115,115,105,111,110,0 |
_callfunc: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-12 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
XOR CL,CL |
CALL _blanks |
_3_308: |
MOV EAX,[_lptr] |
PUSH EAX |
MOV EAX,_3_307+0 |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
OR EAX,EAX |
JE _3_310 |
JMP _3_309 |
_3_310: |
XOR CL,CL |
CALL _endst |
OR EAX,EAX |
JNE _3_312 |
JMP _3_311 |
_3_312: |
JMP _3_309 |
_3_311: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_314 |
JMP _3_313 |
_3_314: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-12] |
PUSH EAX |
MOV CL,2 |
CALL _expressi |
ADD ESP,8 |
MOV EAX,60 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_315 |
_3_313: |
MOV EAX,60 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-12] |
PUSH EAX |
MOV CL,2 |
CALL _expressi |
ADD ESP,8 |
MOV EAX,71 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_315: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
MOV EAX,_3_307+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _3_317 |
JMP _3_316 |
_3_317: |
JMP _3_309 |
_3_316: |
JMP _3_308 |
_3_309: |
MOV EAX,_3_307+4 |
PUSH EAX |
MOV CL,1 |
CALL _need |
ADD ESP,4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_321 |
JMP _3_319 |
_3_321: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,11 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,_3_307+6 |
PUSH EAX |
MOV CL,2 |
CALL _streq |
ADD ESP,8 |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JNE _3_322 |
JMP _3_319 |
_3_322: |
MOV EAX,1 |
JMP _3_320 |
_3_319: |
XOR EAX,EAX |
_3_320: |
OR EAX,EAX |
JNE _3_323 |
JMP _3_318 |
_3_323: |
MOV EAX,5 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_318: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_325 |
JMP _3_324 |
_3_325: |
MOV EAX,9 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_326 |
_3_324: |
MOV EAX,8 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_326: |
MOV EAX,2 |
PUSH EAX |
MOV EAX,[_csp] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_3_307 DB 41,0,44,0,41,0,67,67,65,82 |
DB 71,67,0 |
_fdouble: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JE _3_333 |
JMP _3_329 |
_3_333: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,69 |
CALL __eq |
OR EAX,EAX |
JE _3_334 |
JMP _3_329 |
_3_334: |
XOR EAX,EAX |
JMP _3_330 |
_3_329: |
MOV EAX,1 |
_3_330: |
OR EAX,EAX |
JNE _3_335 |
JMP _3_331 |
_3_335: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JNE _3_336 |
JMP _3_331 |
_3_336: |
MOV EAX,1 |
JMP _3_332 |
_3_331: |
XOR EAX,EAX |
_3_332: |
OR EAX,EAX |
JNE _3_337 |
JMP _3_328 |
_3_337: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
JMP _3_340 |
_3_341: |
_3_342: |
XOR EAX,EAX |
POP EBP |
RET |
_3_343: |
MOV EAX,1 |
POP EBP |
RET |
_3_344: |
MOV EAX,2 |
POP EBP |
RET |
JMP _3_339 |
_3_340: |
CALL __switch |
DD _3_342 |
DD 1 |
DD _3_343 |
DD 2 |
DD _3_344 |
DD 4 |
DD 0 |
JMP _3_341 |
_3_339: |
_3_328: |
XOR EAX,EAX |
POP EBP |
RET |
_step: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_348 |
JMP _3_346 |
_3_348: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
JMP _3_347 |
_3_346: |
MOV EAX,1 |
_3_347: |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _store |
ADD ESP,4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_350 |
JMP _3_349 |
_3_350: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_353 |
JMP _3_351 |
_3_353: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
JMP _3_352 |
_3_351: |
MOV EAX,1 |
_3_352: |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_349: |
POP EBP |
RET |
_store: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_356 |
JMP _3_355 |
_3_356: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _3_358 |
JMP _3_357 |
_3_358: |
MOV EAX,62 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_359 |
_3_357: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_361 |
JMP _3_360 |
_3_361: |
MOV EAX,64 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_362 |
_3_360: |
MOV EAX,115 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_362: |
_3_359: |
JMP _3_363 |
_3_355: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _3_365 |
JMP _3_364 |
_3_365: |
MOV EAX,114 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_366 |
_3_364: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _3_368 |
JMP _3_367 |
_3_368: |
MOV EAX,61 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_369 |
_3_367: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_371 |
JMP _3_370 |
_3_371: |
MOV EAX,63 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_372 |
_3_370: |
MOV EAX,114 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_372: |
_3_369: |
_3_366: |
_3_363: |
MOV ESP,EBP |
POP EBP |
RET |
_fetch: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_375 |
JMP _3_374 |
_3_375: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _3_377 |
JMP _3_376 |
_3_377: |
MOV EAX,109 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_378 |
_3_376: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_380 |
JMP _3_379 |
_3_380: |
MOV EAX,32 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_381 |
_3_379: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
OR EAX,EAX |
JNE _3_383 |
JMP _3_382 |
_3_383: |
MOV EAX,29 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_384 |
_3_382: |
MOV EAX,28 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_384: |
_3_381: |
_3_378: |
JMP _3_385 |
_3_374: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
CALL __eq |
OR EAX,EAX |
JNE _3_387 |
JMP _3_386 |
_3_387: |
MOV EAX,107 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_388 |
_3_386: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,4 |
CALL __eq |
OR EAX,EAX |
JNE _3_390 |
JMP _3_389 |
_3_390: |
MOV EAX,107 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_391 |
_3_389: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_393 |
JMP _3_392 |
_3_393: |
MOV EAX,30 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_394 |
_3_392: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
OR EAX,EAX |
JNE _3_396 |
JMP _3_395 |
_3_396: |
MOV EAX,27 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_397 |
_3_395: |
MOV EAX,26 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_397: |
_3_394: |
_3_391: |
_3_388: |
_3_385: |
MOV ESP,EBP |
POP EBP |
RET |
_constant: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,1 |
CALL _number |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_400 |
JMP _3_399 |
_3_400: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_401 |
_3_399: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,1 |
CALL _chrcon |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_403 |
JMP _3_402 |
_3_403: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_404 |
_3_402: |
LEA EAX,[EBP-4] |
PUSH EAX |
MOV CL,1 |
CALL _string |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_406 |
JMP _3_405 |
_3_406: |
MOV EAX,24 |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_407 |
_3_405: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_407: |
_3_404: |
_3_401: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_number: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
_3_409: |
MOV EAX,_3_408+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_412 |
JMP _3_411 |
_3_412: |
JMP _3_413 |
_3_411: |
MOV EAX,_3_408+2 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_415 |
JMP _3_414 |
_3_415: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _3_416 |
_3_414: |
JMP _3_410 |
_3_416: |
_3_413: |
JMP _3_409 |
_3_410: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JE _3_418 |
JMP _3_417 |
_3_418: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_417: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __eq |
OR EAX,EAX |
JNE _3_420 |
JMP _3_419 |
_3_420: |
_3_421: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __eq |
OR EAX,EAX |
JNE _3_423 |
JMP _3_422 |
_3_423: |
XOR CL,CL |
CALL _inbyte |
JMP _3_421 |
_3_422: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,88 |
CALL __eq |
OR EAX,EAX |
JNE _3_425 |
JMP _3_424 |
_3_425: |
XOR CL,CL |
CALL _inbyte |
_3_426: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _isxdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_428 |
JMP _3_427 |
_3_428: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_430 |
JMP _3_429 |
_3_430: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,16 |
IMUL EBX |
PUSH EAX |
XOR CL,CL |
CALL _inbyte |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _3_431 |
_3_429: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,16 |
IMUL EBX |
MOV EBX,10 |
ADD EAX,EBX |
PUSH EAX |
XOR CL,CL |
CALL _inbyte |
PUSH EAX |
MOV CL,1 |
CALL _toupper |
ADD ESP,4 |
MOV EBX,EAX |
MOV EAX,65 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_3_431: |
JMP _3_426 |
_3_427: |
JMP _3_432 |
_3_424: |
_3_433: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __ge |
OR EAX,EAX |
JNE _3_437 |
JMP _3_435 |
_3_437: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,55 |
CALL __le |
OR EAX,EAX |
JNE _3_438 |
JMP _3_435 |
_3_438: |
MOV EAX,1 |
JMP _3_436 |
_3_435: |
XOR EAX,EAX |
_3_436: |
OR EAX,EAX |
JNE _3_439 |
JMP _3_434 |
_3_439: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
IMUL EBX |
PUSH EAX |
XOR CL,CL |
CALL _inbyte |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _3_433 |
_3_434: |
_3_432: |
JMP _3_440 |
_3_419: |
_3_441: |
MOV EAX,[_ch] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_443 |
JMP _3_442 |
_3_443: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
IMUL EBX |
PUSH EAX |
XOR CL,CL |
CALL _inbyte |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _3_441 |
_3_442: |
_3_440: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_445 |
JMP _3_444 |
_3_445: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
MOV EAX,16 |
MOV ESP,EBP |
POP EBP |
RET |
_3_444: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JL _3_447 |
JMP _3_446 |
_3_447: |
MOV EAX,17 |
MOV ESP,EBP |
POP EBP |
RET |
_3_446: |
MOV EAX,16 |
MOV ESP,EBP |
POP EBP |
RET |
_3_448: |
MOV ESP,EBP |
POP EBP |
RET |
_3_408 DB 43,0,45,0 |
_chrcon: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
MOV EAX,_3_449+0 |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _3_451 |
JMP _3_450 |
_3_451: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_450: |
_3_452: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,39 |
CALL __ne |
OR EAX,EAX |
JNE _3_454 |
JMP _3_453 |
_3_454: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
XOR CL,CL |
CALL _litchar |
MOV EBX,EAX |
MOV EAX,255 |
AND EAX,EBX |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _3_452 |
_3_453: |
XOR CL,CL |
CALL _gch |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
MOV EAX,16 |
MOV ESP,EBP |
POP EBP |
RET |
_3_449 DB 39,0 |
_string: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
MOV EAX,_quote |
PUSH EAX |
MOV CL,1 |
CALL _match |
ADD ESP,4 |
OR EAX,EAX |
JE _3_457 |
JMP _3_456 |
_3_457: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_456: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_litptr] |
POP EBX |
MOV [EBX],EAX |
_3_458: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,34 |
CALL __ne |
OR EAX,EAX |
JNE _3_460 |
JMP _3_459 |
_3_460: |
MOV EAX,[_ch] |
OR EAX,EAX |
JE _3_462 |
JMP _3_461 |
_3_462: |
JMP _3_459 |
_3_461: |
XOR CL,CL |
CALL _litchar |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _stowlit |
ADD ESP,8 |
JMP _3_458 |
_3_459: |
XOR CL,CL |
CALL _gch |
MOV EAX,[_litq] |
PUSH EAX |
MOV EAX,[_litptr] |
INC EAX |
MOV DWORD [_litptr],EAX |
DEC EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_stowlit: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,[_litptr] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,2999 |
CALL __ge |
OR EAX,EAX |
JNE _3_465 |
JMP _3_464 |
_3_465: |
MOV EAX,_3_463+0 |
PUSH EAX |
MOV CL,1 |
CALL _error |
ADD ESP,4 |
MOV EAX,7 |
PUSH EAX |
MOV CL,1 |
CALL _OS_exit |
ADD ESP,4 |
_3_464: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,[_litq] |
PUSH EAX |
MOV EAX,[_litptr] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _putint |
ADD ESP,12 |
MOV EAX,[_litptr] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_litptr],EAX |
POP EBP |
RET |
_3_463 DB 108,105,116,101,114,97,108,32,113,117 |
DB 101,117,101,32,111,118,101,114,102,108 |
DB 111,119,0 |
_litchar: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,92 |
CALL __ne |
OR EAX,EAX |
JE _3_470 |
JMP _3_468 |
_3_470: |
MOV EAX,[_nch] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JE _3_471 |
JMP _3_468 |
_3_471: |
XOR EAX,EAX |
JMP _3_469 |
_3_468: |
MOV EAX,1 |
_3_469: |
OR EAX,EAX |
JNE _3_472 |
JMP _3_467 |
_3_472: |
XOR CL,CL |
CALL _gch |
MOV ESP,EBP |
POP EBP |
RET |
_3_467: |
XOR CL,CL |
CALL _gch |
MOV EAX,[_ch] |
JMP _3_475 |
_3_476: |
XOR CL,CL |
CALL _gch |
MOV EAX,10 |
MOV ESP,EBP |
POP EBP |
RET |
_3_477: |
XOR CL,CL |
CALL _gch |
MOV EAX,13 |
MOV ESP,EBP |
POP EBP |
RET |
_3_478: |
XOR CL,CL |
CALL _gch |
MOV EAX,9 |
MOV ESP,EBP |
POP EBP |
RET |
_3_479: |
XOR CL,CL |
CALL _gch |
MOV EAX,8 |
MOV ESP,EBP |
POP EBP |
RET |
_3_480: |
XOR CL,CL |
CALL _gch |
MOV EAX,12 |
MOV ESP,EBP |
POP EBP |
RET |
JMP _3_474 |
_3_475: |
CALL __switch |
DD _3_476 |
DD 110 |
DD _3_477 |
DD 114 |
DD _3_478 |
DD 116 |
DD _3_479 |
DD 98 |
DD _3_480 |
DD 102 |
DD 0 |
_3_474: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,3 |
MOV [EBX],EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_3_481: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __gt |
OR EAX,EAX |
JNE _3_485 |
JMP _3_483 |
_3_485: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __ge |
OR EAX,EAX |
JNE _3_486 |
JMP _3_483 |
_3_486: |
MOV EAX,[_ch] |
MOV EBX,EAX |
MOV EAX,55 |
CALL __le |
OR EAX,EAX |
JNE _3_487 |
JMP _3_483 |
_3_487: |
MOV EAX,1 |
JMP _3_484 |
_3_483: |
XOR EAX,EAX |
_3_484: |
OR EAX,EAX |
JNE _3_488 |
JMP _3_482 |
_3_488: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
XOR CL,CL |
CALL _gch |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _3_481 |
_3_482: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_490 |
JMP _3_489 |
_3_490: |
XOR CL,CL |
CALL _gch |
MOV ESP,EBP |
POP EBP |
RET |
_3_489: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_491: |
MOV ESP,EBP |
POP EBP |
RET |
_skim: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-12 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_3_493: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _nextop |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_496 |
JMP _3_495 |
_3_496: |
MOV EAX,[_opsize] |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_498 |
JMP _3_497 |
_3_498: |
LEA EAX,[EBP-8] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
_3_497: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _dropout |
ADD ESP,16 |
JMP _3_499 |
_3_495: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_501 |
JMP _3_500 |
_3_501: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,4 |
CALL _dropout |
ADD ESP,16 |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,40 |
PUSH EAX |
LEA EAX,[EBP-12] |
PUSH EAX |
XOR CL,CL |
CALL _getlabel |
POP EBX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,41 |
PUSH EAX |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
POP EBX |
MOV [EBX],EAX |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_500: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_502: |
_3_499: |
JMP _3_493 |
_3_494: |
MOV ESP,EBP |
POP EBP |
RET |
_dropout: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_505 |
JMP _3_504 |
_3_505: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
JMP _3_506 |
_3_504: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_508 |
JMP _3_507 |
_3_508: |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_507: |
_3_506: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
POP EBP |
RET |
_down: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _nextop |
ADD ESP,4 |
OR EAX,EAX |
JE _3_511 |
JMP _3_510 |
_3_511: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_3_510: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_513 |
JMP _3_512 |
_3_513: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_512: |
_3_514: |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _nextop |
ADD ESP,4 |
OR EAX,EAX |
JNE _3_517 |
JMP _3_516 |
_3_517: |
ADD ESP,-28 |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,1 |
CALL _null_is |
ADD ESP,4 |
MOV EAX,[_opsize] |
PUSH EAX |
MOV CL,1 |
CALL _bump |
ADD ESP,4 |
MOV EAX,[_opindex] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV DWORD [_opindex],EAX |
MOV EAX,_op |
PUSH EAX |
MOV EAX,[_opindex] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,_op2 |
PUSH EAX |
MOV EAX,[_opindex] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
MOV CL,5 |
CALL _down2 |
ADD ESP,20 |
ADD ESP,28 |
JMP _3_518 |
_3_516: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_3_518: |
JMP _3_514 |
_3_515: |
MOV ESP,EBP |
POP EBP |
RET |
_down1: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-12 |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-12] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
PUSH EBX |
CALL EAX |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_521 |
JMP _3_520 |
_3_521: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
_3_520: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_down2: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-16 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV CL,2 |
CALL _setstage |
ADD ESP,8 |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_524 |
JMP _3_523 |
_3_524: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_526 |
JMP _3_525 |
_3_526: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_525: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_528 |
JMP _3_527 |
_3_528: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
MOV EAX,[_snext] |
POP EBX |
MOV [EBX],EAX |
_3_527: |
MOV EAX,33 |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fdouble |
ADD ESP,12 |
POP EBX |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_529 |
_3_523: |
MOV EAX,60 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _down1 |
ADD ESP,8 |
OR EAX,EAX |
JNE _3_531 |
JMP _3_530 |
_3_531: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _fetch |
ADD ESP,4 |
_3_530: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_533 |
JMP _3_532 |
_3_533: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_535 |
JMP _3_534 |
_3_535: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,24 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_534: |
MOV EAX,[_csp] |
MOV EBX,4 |
ADD EAX,EBX |
MOV DWORD [_csp],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JNE _3_537 |
JMP _3_536 |
_3_537: |
MOV EAX,110 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fdouble |
ADD ESP,12 |
POP EBX |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
JMP _3_538 |
_3_536: |
MOV EAX,51 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,108 |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fdouble |
ADD ESP,12 |
POP EBX |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_538: |
JMP _3_539 |
_3_532: |
MOV EAX,59 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fdouble |
ADD ESP,12 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_541 |
JMP _3_540 |
_3_541: |
MOV EAX,14 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __gt |
OR EAX,EAX |
JNE _3_543 |
JMP _3_542 |
_3_543: |
MOV EAX,14 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_542: |
_3_540: |
LEA EAX,[EBP-16] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _fdouble |
ADD ESP,12 |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_545 |
JMP _3_544 |
_3_545: |
MOV EAX,15 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __gt |
OR EAX,EAX |
JNE _3_547 |
JMP _3_546 |
_3_547: |
MOV EAX,15 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_546: |
_3_544: |
_3_539: |
_3_529: |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_549 |
JMP _3_548 |
_3_549: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _nosign |
ADD ESP,4 |
OR EAX,EAX |
JE _3_553 |
JMP _3_551 |
_3_553: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _nosign |
ADD ESP,4 |
OR EAX,EAX |
JE _3_554 |
JMP _3_551 |
_3_554: |
XOR EAX,EAX |
JMP _3_552 |
_3_551: |
MOV EAX,1 |
_3_552: |
OR EAX,EAX |
JNE _3_555 |
JMP _3_550 |
_3_555: |
LEA EAX,[EBP+24] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_550: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_557 |
JMP _3_556 |
_3_557: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,16 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _calc |
ADD ESP,12 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _clearsta |
ADD ESP,8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,17 |
CALL __eq |
OR EAX,EAX |
JNE _3_559 |
JMP _3_558 |
_3_559: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,17 |
MOV [EBX],EAX |
_3_558: |
JMP _3_560 |
_3_556: |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,69 |
CALL __eq |
OR EAX,EAX |
JNE _3_564 |
JMP _3_562 |
_3_564: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_565 |
JMP _3_562 |
_3_565: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,2 |
CALL __eq |
OR EAX,EAX |
JNE _3_566 |
JMP _3_562 |
_3_566: |
MOV EAX,1 |
JMP _3_563 |
_3_562: |
XOR EAX,EAX |
_3_563: |
OR EAX,EAX |
JNE _3_567 |
JMP _3_561 |
_3_567: |
MOV EAX,70 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,31 |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
MOV EAX,7 |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,2 |
CALL _gen |
ADD ESP,8 |
_3_561: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,20 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_560: |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,69 |
CALL __eq |
OR EAX,EAX |
JE _3_571 |
JMP _3_569 |
_3_571: |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
CALL __eq |
OR EAX,EAX |
JE _3_572 |
JMP _3_569 |
_3_572: |
XOR EAX,EAX |
JMP _3_570 |
_3_569: |
MOV EAX,1 |
_3_570: |
OR EAX,EAX |
JNE _3_573 |
JMP _3_568 |
_3_573: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_577 |
JMP _3_575 |
_3_577: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_578 |
JMP _3_575 |
_3_578: |
MOV EAX,1 |
JMP _3_576 |
_3_575: |
XOR EAX,EAX |
_3_576: |
OR EAX,EAX |
JNE _3_579 |
JMP _3_574 |
_3_579: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
JMP _3_580 |
_3_574: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _3_582 |
JMP _3_581 |
_3_582: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,4 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_581: |
_3_580: |
_3_568: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __eq |
OR EAX,EAX |
JE _3_588 |
JMP _3_584 |
_3_588: |
LEA EAX,[EBP-12] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_589 |
JMP _3_585 |
_3_589: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
OR EAX,EAX |
JNE _3_590 |
JMP _3_585 |
_3_590: |
MOV EAX,1 |
JMP _3_586 |
_3_585: |
XOR EAX,EAX |
_3_586: |
OR EAX,EAX |
JE _3_591 |
JMP _3_584 |
_3_591: |
XOR EAX,EAX |
JMP _3_587 |
_3_584: |
MOV EAX,1 |
_3_587: |
OR EAX,EAX |
JNE _3_592 |
JMP _3_583 |
_3_592: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_3_583: |
_3_548: |
MOV ESP,EBP |
POP EBP |
RET |
_nosign: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,8 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _3_599 |
JMP _3_595 |
_3_599: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,12 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,17 |
CALL __eq |
OR EAX,EAX |
JE _3_600 |
JMP _3_595 |
_3_600: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _3_601 |
JMP _3_596 |
_3_601: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
OR EAX,EAX |
JNE _3_602 |
JMP _3_596 |
_3_602: |
MOV EAX,1 |
JMP _3_597 |
_3_596: |
XOR EAX,EAX |
_3_597: |
OR EAX,EAX |
JE _3_603 |
JMP _3_595 |
_3_603: |
XOR EAX,EAX |
JMP _3_598 |
_3_595: |
MOV EAX,1 |
_3_598: |
OR EAX,EAX |
JNE _3_604 |
JMP _3_594 |
_3_604: |
MOV EAX,1 |
MOV ESP,EBP |
POP EBP |
RET |
_3_594: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_calc: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
JMP _3_608 |
_3_609: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBP |
RET |
_3_610: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBP |
RET |
_3_611: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
IMUL EBX |
POP EBP |
RET |
_3_612: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBP |
RET |
_3_613: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
POP EBP |
RET |
_3_614: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __eq |
POP EBP |
RET |
_3_615: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ne |
POP EBP |
RET |
_3_616: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __le |
POP EBP |
RET |
_3_617: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ge |
POP EBP |
RET |
_3_618: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __lt |
POP EBP |
RET |
_3_619: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __gt |
POP EBP |
RET |
_3_620: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
AND EAX,EBX |
POP EBP |
RET |
_3_621: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
OR EAX,EBX |
POP EBP |
RET |
_3_622: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XOR EAX,EBX |
POP EBP |
RET |
_3_623: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBP |
RET |
_3_624: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
POP EBP |
RET |
JMP _3_607 |
_3_608: |
CALL __switch |
DD _3_609 |
DD 1 |
DD _3_610 |
DD 69 |
DD _3_611 |
DD 52 |
DD _3_612 |
DD 16 |
DD _3_613 |
DD 49 |
DD _3_614 |
DD 20 |
DD _3_615 |
DD 55 |
DD _3_616 |
DD 43 |
DD _3_617 |
DD 22 |
DD _3_618 |
DD 47 |
DD _3_619 |
DD 35 |
DD _3_620 |
DD 3 |
DD _3_621 |
DD 57 |
DD _3_622 |
DD 73 |
DD _3_623 |
DD 7 |
DD _3_624 |
DD 6 |
DD 0 |
_3_607: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,3 |
CALL _calc2 |
ADD ESP,12 |
POP EBP |
RET |
_calc2: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
JMP _3_628 |
_3_629: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MUL EBX |
POP EBP |
RET |
_3_630: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
XOR EDX,EDX |
DIV EBX |
POP EBP |
RET |
_3_631: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
XOR EDX,EDX |
DIV EBX |
MOV EAX,EDX |
POP EBP |
RET |
_3_632: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ule |
POP EBP |
RET |
_3_633: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __uge |
POP EBP |
RET |
_3_634: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ult |
POP EBP |
RET |
_3_635: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ugt |
POP EBP |
RET |
JMP _3_627 |
_3_628: |
CALL __switch |
DD _3_629 |
DD 53 |
DD _3_630 |
DD 17 |
DD _3_631 |
DD 50 |
DD _3_632 |
DD 44 |
DD _3_633 |
DD 23 |
DD _3_634 |
DD 48 |
DD _3_635 |
DD 36 |
DD 0 |
_3_627: |
XOR EAX,EAX |
POP EBP |
RET |
/programs/develop/scc/GETARG.ASM |
---|
0,0 → 1,128 |
_getarg: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
CALL __lt |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ge |
POP EBX |
OR EAX,EBX |
OR EAX,EAX |
JNE _0_3 |
JMP _0_2 |
_0_3: |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
MOV EAX,-1 |
MOV ESP,EBP |
POP EBP |
RET |
_0_2: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_0_4: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __lt |
OR EAX,EAX |
JNE _0_6 |
JMP _0_5 |
_0_6: |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
OR EAX,EAX |
JE _0_8 |
JMP _0_7 |
_0_8: |
JMP _0_5 |
_0_7: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _0_4 |
_0_5: |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
/programs/develop/scc/GETARG.C |
---|
0,0 → 1,29 |
#include <stdio.h> |
/* |
** Get command line argument. |
** Entry: n = Number of the argument. |
** s = Destination string pointer. |
** size = Size of destination string. |
** argc = Argument count from main(). |
** argv = Argument vector(s) from main(). |
** Returns number of characters moved on success, |
** else EOF. |
*/ |
getarg(n,s,size,argc,argv) |
int n; char *s; int size,argc,argv[]; |
{char *str; |
int i; |
if(n<0 | n>=argc) |
{*s=NULL; |
return EOF; |
} |
i=0; |
str=argv[n]; |
while(i<size) |
{if((s[i]=str[i])==NULL) break; |
++i; |
} |
s[i]=NULL; |
return i; |
} |
/programs/develop/scc/INTRINS.ASM |
---|
0,0 → 1,140 |
; |
; Small-C Run Time Library for Win NT |
; |
; Nasm version 17/Nov/98 H T Walheim |
; Revised: 20/Nov/98 HTW [Bugs in switch] |
; |
_CCARGC: |
;B+ Ellipses arguments ( ,...) |
;cl - argument count |
xor eax,eax |
movzx eax,cl ; No sign-extension |
ret |
;E:. |
;B+ Compare |
__ult: |
;B+ ??? |
cmp eax,ebx |
ja true |
xor eax,eax |
ret |
;E:. |
__ugt: |
;B+ ??? |
cmp eax,ebx |
jb true |
xor eax,eax |
ret |
;E:. |
__ule: |
;B+ ??? |
cmp eax,ebx |
jae true |
xor eax,eax |
ret |
;E:. |
__uge: |
;B+ ??? |
cmp eax,ebx |
jbe true |
xor eax,eax |
ret |
;E:. |
__eq: |
;B+ ??? |
cmp eax,ebx |
je true |
xor eax,eax |
ret |
;E:. |
__ne: |
;B+ ??? |
cmp eax,ebx |
jne true |
xor eax,eax |
ret |
;E:. |
__lt: |
;B+ ??? |
cmp eax,ebx |
jg true |
xor eax,eax |
ret |
;E:. |
__gt: |
;B+ ??? |
cmp eax,ebx |
jl true |
xor eax,eax |
ret |
;E:. |
__le: |
;B+ ??? |
cmp eax,ebx |
jge true |
xor eax,eax |
ret |
;E:. |
__ge: |
;B+ ??? |
cmp eax,ebx |
jle true |
xor eax,eax |
ret |
;E:. |
;E:. |
__lneg: |
;B+ Logical Negate of Primary |
or eax,eax |
jnz false |
true: |
mov eax,1 |
ret |
false: |
xor eax,eax |
ret |
;E:. |
__switch: |
;B+ Execute "switch" statement |
;eax - switch value |
;[esp] - pointer to switch table |
; dd addr1,value1 |
; ... |
; dd 0 |
; [jmp default] |
; continuation |
; |
; Revised: 20/Nov/98 [JECXZ needed] |
pop ebx |
jmp skip |
back: |
add ebx,8 ;next case-pair |
skip: |
mov ecx,[ebx] ;case-label location (adress) |
jecxz default |
cmp eax,[ebx+4] ;test case-value |
jnz back |
jmp ecx ;match -- jump to case |
default: |
add ebx,4 |
jmp ebx ;jump to default/continuation |
;E:. |
/programs/develop/scc/LIBSTD.ASM |
---|
0,0 → 1,2699 |
_puts: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
MOV EAX,10 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
POP EBP |
RET |
_reverse: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _strlen |
ADD ESP,4 |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,1 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_lib_3: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ult |
OR EAX,EAX |
JNE _lib_5 |
JMP _lib_4 |
_lib_5: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
JMP _lib_3 |
_lib_4: |
MOV ESP,EBP |
POP EBP |
RET |
_strcpy: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_lib_7: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
OR EAX,EAX |
JNE _lib_9 |
JMP _lib_8 |
_lib_9: |
JMP _lib_7 |
_lib_8: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_strlen: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_lib_11: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_13 |
JMP _lib_12 |
_lib_13: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_11 |
_lib_12: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
MOV ESP,EBP |
POP EBP |
RET |
_toupper: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,122 |
CALL __le |
OR EAX,EAX |
JNE _lib_18 |
JMP _lib_16 |
_lib_18: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,97 |
CALL __ge |
OR EAX,EAX |
JNE _lib_19 |
JMP _lib_16 |
_lib_19: |
MOV EAX,1 |
JMP _lib_17 |
_lib_16: |
XOR EAX,EAX |
_lib_17: |
OR EAX,EAX |
JNE _lib_20 |
JMP _lib_15 |
_lib_20: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBP |
RET |
_lib_15: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBP |
RET |
_atoi: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
_lib_22: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isspace |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_24 |
JMP _lib_23 |
_lib_24: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_22 |
_lib_23: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
JMP _lib_27 |
_lib_28: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,-1 |
MOV [EBX],EAX |
_lib_29: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_26 |
_lib_27: |
CALL __switch |
DD _lib_28 |
DD 45 |
DD _lib_29 |
DD 43 |
DD 0 |
_lib_26: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_30: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_32 |
JMP _lib_31 |
_lib_32: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,10 |
IMUL EBX |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_30 |
_lib_31: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
IMUL EBX |
MOV ESP,EBP |
POP EBP |
RET |
_atoib: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_34: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isspace |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_36 |
JMP _lib_35 |
_lib_36: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_34 |
_lib_35: |
_lib_37: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,127 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX,48 |
CALL __ge |
OR EAX,EAX |
JNE _lib_39 |
JMP _lib_38 |
_lib_39: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,97 |
CALL __ge |
OR EAX,EAX |
JNE _lib_41 |
JMP _lib_40 |
_lib_41: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,87 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_42 |
_lib_40: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,65 |
CALL __ge |
OR EAX,EAX |
JNE _lib_44 |
JMP _lib_43 |
_lib_44: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,55 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_45 |
_lib_43: |
LEA EAX,[EBP-8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,48 |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_lib_45: |
_lib_42: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ge |
OR EAX,EAX |
JNE _lib_47 |
JMP _lib_46 |
_lib_47: |
JMP _lib_38 |
_lib_46: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
IMUL EBX |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_37 |
_lib_38: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_fgets: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,1 |
PUSH EAX |
MOV CL,4 |
CALL __gets |
ADD ESP,16 |
POP EBP |
RET |
_gets: |
PUSH EBP |
MOV EBP,ESP |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EAX,32767 |
PUSH EAX |
MOV EAX,__iob |
PUSH EAX |
XOR EAX,EAX |
PUSH EAX |
MOV CL,4 |
CALL __gets |
ADD ESP,16 |
POP EBP |
RET |
__gets: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_lib_51: |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _lib_53 |
JMP _lib_52 |
_lib_53: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _OS_fgetc |
ADD ESP,4 |
POP EBX |
MOV [EBX],AL |
JMP _lib_56 |
_lib_57: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __eq |
OR EAX,EAX |
JNE _lib_59 |
JMP _lib_58 |
_lib_59: |
XOR EAX,EAX |
MOV ESP,EBP |
POP EBP |
RET |
_lib_58: |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_lib_60: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_lib_61: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __ugt |
OR EAX,EAX |
JNE _lib_63 |
JMP _lib_62 |
_lib_63: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
JMP _lib_64 |
_lib_62: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_64: |
JMP _lib_65 |
_lib_66: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
_lib_65: |
JMP _lib_67 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
_lib_68: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _lib_70 |
JMP _lib_69 |
_lib_70: |
MOV EAX,_lib_50+0 |
PUSH EAX |
MOV EAX,__iob |
MOV EBX,64 |
ADD EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL _fputs |
ADD ESP,8 |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_68 |
_lib_69: |
JMP _lib_51 |
_lib_67: |
_lib_71: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_55 |
_lib_56: |
CALL __switch |
DD _lib_57 |
DD -1 |
DD _lib_60 |
DD 10 |
DD _lib_61 |
DD 8 |
DD _lib_66 |
DD 24 |
DD 0 |
JMP _lib_71 |
_lib_55: |
JMP _lib_51 |
_lib_52: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP+20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_lib_50 DB 8,32,8,0 |
_fprintf: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP-4] |
PUSH EAX |
CALL _CCARGC |
PUSH EAX |
LEA EAX,[EBP+8] |
POP EBX |
SHL EBX,1 |
SHL EBX,1 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV [EBX],EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,2 |
CALL __print |
ADD ESP,8 |
MOV ESP,EBP |
POP EBP |
RET |
_printf: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__iob |
MOV EBX,32 |
ADD EAX,EBX |
PUSH EAX |
CALL _CCARGC |
PUSH EAX |
LEA EAX,[EBP+8] |
POP EBX |
SHL EBX,1 |
SHL EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,4 |
XCHG EAX,EBX |
SUB EAX,EBX |
PUSH EAX |
MOV CL,2 |
CALL __print |
ADD ESP,8 |
POP EBP |
RET |
__print: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-56 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
LEA EAX,[EBP-32] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_lib_75: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_77 |
JMP _lib_76 |
_lib_77: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,37 |
CALL __ne |
OR EAX,EAX |
JNE _lib_79 |
JMP _lib_78 |
_lib_79: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_75 |
JMP _lib_80 |
_lib_78: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
_lib_80: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,37 |
CALL __eq |
OR EAX,EAX |
JNE _lib_82 |
JMP _lib_81 |
_lib_82: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_75 |
_lib_81: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,45 |
CALL __eq |
OR EAX,EAX |
JNE _lib_84 |
JMP _lib_83 |
_lib_84: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,1 |
MOV [EBX],EAX |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_85 |
_lib_83: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_85: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,48 |
CALL __eq |
OR EAX,EAX |
JNE _lib_87 |
JMP _lib_86 |
_lib_87: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,48 |
MOV [EBX],EAX |
JMP _lib_88 |
_lib_86: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],EAX |
_lib_88: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_90 |
JMP _lib_89 |
_lib_90: |
LEA EAX,[EBP-28] |
PUSH EAX |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
MOV CL,1 |
CALL _atoi |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
_lib_91: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_93 |
JMP _lib_92 |
_lib_93: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_91 |
_lib_92: |
JMP _lib_94 |
_lib_89: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_94: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,46 |
CALL __eq |
OR EAX,EAX |
JNE _lib_96 |
JMP _lib_95 |
_lib_96: |
LEA EAX,[EBP-24] |
PUSH EAX |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
PUSH EAX |
MOV CL,1 |
CALL _atoi |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
_lib_97: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _isdigit |
ADD ESP,4 |
OR EAX,EAX |
JNE _lib_99 |
JMP _lib_98 |
_lib_99: |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_97 |
_lib_98: |
JMP _lib_100 |
_lib_95: |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_100: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
DEC EAX |
DEC EAX |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
INC EAX |
INC EAX |
INC EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-36] |
PUSH EAX |
LEA EAX,[EBP-56] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-32] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
JMP _lib_103 |
_lib_104: |
LEA EAX,[EBP-56] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-56] |
MOV EBX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _lib_102 |
_lib_105: |
LEA EAX,[EBP-36] |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
JMP _lib_102 |
_lib_106: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV CL,2 |
CALL _itoa |
ADD ESP,8 |
JMP _lib_102 |
_lib_107: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV EAX,2 |
PUSH EAX |
MOV CL,3 |
CALL _itoab |
ADD ESP,12 |
JMP _lib_102 |
_lib_108: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV EAX,8 |
PUSH EAX |
MOV CL,3 |
CALL _itoab |
ADD ESP,12 |
JMP _lib_102 |
_lib_109: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV EAX,10 |
PUSH EAX |
MOV CL,3 |
CALL _itoab |
ADD ESP,12 |
JMP _lib_102 |
_lib_110: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-56] |
PUSH EAX |
MOV EAX,16 |
PUSH EAX |
MOV CL,3 |
CALL _itoab |
ADD ESP,12 |
JMP _lib_102 |
_lib_111: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
JMP _lib_102 |
_lib_103: |
CALL __switch |
DD _lib_104 |
DD 99 |
DD _lib_105 |
DD 115 |
DD _lib_106 |
DD 100 |
DD _lib_107 |
DD 98 |
DD _lib_108 |
DD 111 |
DD _lib_109 |
DD 117 |
DD _lib_110 |
DD 120 |
DD 0 |
JMP _lib_111 |
_lib_102: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _strlen |
ADD ESP,4 |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_115 |
JMP _lib_113 |
_lib_115: |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __lt |
OR EAX,EAX |
JNE _lib_116 |
JMP _lib_113 |
_lib_116: |
MOV EAX,1 |
JMP _lib_114 |
_lib_113: |
XOR EAX,EAX |
_lib_114: |
OR EAX,EAX |
JNE _lib_117 |
JMP _lib_112 |
_lib_117: |
LEA EAX,[EBP-20] |
PUSH EAX |
LEA EAX,[EBP-24] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
_lib_112: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
CALL __gt |
OR EAX,EAX |
JNE _lib_119 |
JMP _lib_118 |
_lib_119: |
LEA EAX,[EBP-28] |
PUSH EAX |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
SUB EAX,EBX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_120 |
_lib_118: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],EAX |
_lib_120: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
CALL __lneg |
OR EAX,EAX |
JNE _lib_122 |
JMP _lib_121 |
_lib_122: |
_lib_123: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _lib_125 |
JMP _lib_124 |
_lib_125: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_123 |
_lib_124: |
_lib_121: |
_lib_126: |
LEA EAX,[EBP-20] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _lib_128 |
JMP _lib_127 |
_lib_128: |
LEA EAX,[EBP-36] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_126 |
_lib_127: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_130 |
JMP _lib_129 |
_lib_130: |
_lib_131: |
LEA EAX,[EBP-28] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
INC EAX |
OR EAX,EAX |
JNE _lib_133 |
JMP _lib_132 |
_lib_133: |
LEA EAX,[EBP-12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_131 |
_lib_132: |
_lib_129: |
JMP _lib_75 |
_lib_76: |
LEA EAX,[EBP-16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_fputs: |
PUSH EBP |
MOV EBP,ESP |
_lib_135: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_137 |
JMP _lib_136 |
_lib_137: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,2 |
CALL _OS_fputc |
ADD ESP,8 |
JMP _lib_135 |
_lib_136: |
POP EBP |
RET |
__is DD 4,4,4,4,4,4,4,4,4,260 |
DD 260,260,260,260,4,4,4,4,4,4 |
DD 4,4,4,4,4,4,4,4,4,4 |
DD 4,4,320,208,208,208,208,208,208,208 |
DD 208,208,208,208,208,208,208,208,1113,1113 |
DD 1113,1113,1113,1113,1113,1113,1113,1113,208,208 |
DD 208,208,208,208,208,1619,1619,1619,1619,1619 |
DD 1619,595,595,595,595,595,595,595,595,595 |
DD 595,595,595,595,595,595,595,595,595,595 |
DD 595,208,208,208,208,208,208,1139,1139,1139 |
DD 1139,1139,1139,115,115,115,115,115,115,115 |
DD 115,115,115,115,115,115,115,115,115,115 |
DD 115,115,115,208,208,208,208,4 |
_isalnum: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
POP EBP |
RET |
_isalpha: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,2 |
AND EAX,EBX |
POP EBP |
RET |
_iscntrl: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,4 |
AND EAX,EBX |
POP EBP |
RET |
_isdigit: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,8 |
AND EAX,EBX |
POP EBP |
RET |
_isgraph: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,16 |
AND EAX,EBX |
POP EBP |
RET |
_islower: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,32 |
AND EAX,EBX |
POP EBP |
RET |
_isprint: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,64 |
AND EAX,EBX |
POP EBP |
RET |
_ispunct: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,128 |
AND EAX,EBX |
POP EBP |
RET |
_isspace: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,256 |
AND EAX,EBX |
POP EBP |
RET |
_isupper: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,512 |
AND EAX,EBX |
POP EBP |
RET |
_isxdigit: |
PUSH EBP |
MOV EBP,ESP |
MOV EAX,__is |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
SHL EAX,1 |
SHL EAX,1 |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1024 |
AND EAX,EBX |
POP EBP |
RET |
_itoa: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JL _lib_151 |
JMP _lib_150 |
_lib_151: |
LEA EAX,[EBP+12] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
_lib_150: |
_lib_152: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+12] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JG _lib_154 |
JMP _lib_153 |
_lib_154: |
JMP _lib_152 |
_lib_153: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_156 |
JMP _lib_155 |
_lib_156: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
DEC EAX |
MOV EBX,EAX |
MOV EAX,45 |
MOV [EBX],AL |
_lib_155: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _reverse |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_itoab: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+8] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
POP EBX |
MOV [EBX],EAX |
_lib_158: |
LEA EAX,[EBP-8] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,32767 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __lt |
OR EAX,EAX |
JNE _lib_161 |
JMP _lib_160 |
_lib_161: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
JMP _lib_162 |
_lib_160: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
MOV EBX,55 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
_lib_162: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
PUSH EAX |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JNE _lib_163 |
JMP _lib_159 |
_lib_163: |
JMP _lib_158 |
_lib_159: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
MOV CL,1 |
CALL _reverse |
ADD ESP,4 |
MOV ESP,EBP |
POP EBP |
RET |
_itod: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_166 |
JMP _lib_165 |
_lib_166: |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,45 |
MOV [EBX],AL |
JMP _lib_167 |
_lib_165: |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],AL |
_lib_167: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _lib_169 |
JMP _lib_168 |
_lib_169: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _lib_170 |
_lib_168: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_172 |
JMP _lib_171 |
_lib_172: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_173 |
_lib_171: |
_lib_174: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_176 |
JMP _lib_175 |
_lib_176: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_174 |
_lib_175: |
_lib_173: |
_lib_170: |
_lib_177: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_179 |
JMP _lib_178 |
_lib_179: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _lib_181 |
JMP _lib_180 |
_lib_181: |
JMP _lib_178 |
_lib_180: |
JMP _lib_177 |
_lib_178: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_183 |
JMP _lib_182 |
_lib_183: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
POP EBX |
MOV [EBX],AL |
_lib_182: |
_lib_184: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _lib_186 |
JMP _lib_185 |
_lib_186: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],AL |
JMP _lib_184 |
_lib_185: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_itoo: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _lib_189 |
JMP _lib_188 |
_lib_189: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _lib_190 |
_lib_188: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_192 |
JMP _lib_191 |
_lib_192: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_193 |
_lib_191: |
_lib_194: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_196 |
JMP _lib_195 |
_lib_196: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_194 |
_lib_195: |
_lib_193: |
_lib_190: |
_lib_197: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_199 |
JMP _lib_198 |
_lib_199: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,7 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,3 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,8191 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _lib_201 |
JMP _lib_200 |
_lib_201: |
JMP _lib_198 |
_lib_200: |
JMP _lib_197 |
_lib_198: |
_lib_202: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_204 |
JMP _lib_203 |
_lib_204: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],AL |
JMP _lib_202 |
_lib_203: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_itou: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-4 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _lib_207 |
JMP _lib_206 |
_lib_207: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _lib_208 |
_lib_206: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_210 |
JMP _lib_209 |
_lib_210: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_211 |
_lib_209: |
_lib_212: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_214 |
JMP _lib_213 |
_lib_214: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_212 |
_lib_213: |
_lib_211: |
_lib_208: |
_lib_215: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_217 |
JMP _lib_216 |
_lib_217: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAR EAX,CL |
MOV EBX,EAX |
MOV EAX,32767 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,5 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
MOV EAX,EDX |
MOV EBX,EAX |
MOV EAX,1 |
MOV ECX,EAX |
MOV EAX,EBX |
SAL EAX,CL |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,48 |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,5 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
OR EAX,EAX |
JE _lib_219 |
JMP _lib_218 |
_lib_219: |
JMP _lib_216 |
_lib_218: |
JMP _lib_215 |
_lib_216: |
_lib_220: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_222 |
JMP _lib_221 |
_lib_222: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],AL |
JMP _lib_220 |
_lib_221: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
_itox: |
PUSH EBP |
MOV EBP,ESP |
ADD ESP,-8 |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JG _lib_225 |
JMP _lib_224 |
_lib_225: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
XOR EAX,EAX |
MOV [EBX],AL |
JMP _lib_226 |
_lib_224: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JL _lib_228 |
JMP _lib_227 |
_lib_228: |
LEA EAX,[EBP+8] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
NEG EAX |
POP EBX |
MOV [EBX],EAX |
JMP _lib_229 |
_lib_227: |
_lib_230: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOVSX EAX,BYTE [EBX] |
OR EAX,EAX |
JNE _lib_232 |
JMP _lib_231 |
_lib_232: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
INC EAX |
MOV [EBX],EAX |
JMP _lib_230 |
_lib_231: |
_lib_229: |
_lib_226: |
_lib_233: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_235 |
JMP _lib_234 |
_lib_235: |
LEA EAX,[EBP-4] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,15 |
AND EAX,EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP+16] |
PUSH EAX |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,16 |
XCHG EAX,EBX |
CDQ |
IDIV EBX |
POP EBX |
MOV [EBX],EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV EBX,EAX |
MOV EAX,10 |
CALL __lt |
OR EAX,EAX |
JNE _lib_237 |
JMP _lib_236 |
_lib_237: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,48 |
MOV [EBX],EAX |
JMP _lib_238 |
_lib_236: |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX,55 |
MOV [EBX],EAX |
_lib_238: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
PUSH EAX |
LEA EAX,[EBP-4] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP-8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
POP EBX |
ADD EAX,EBX |
POP EBX |
MOV [EBX],AL |
LEA EAX,[EBP+16] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JE _lib_240 |
JMP _lib_239 |
_lib_240: |
JMP _lib_234 |
_lib_239: |
JMP _lib_233 |
_lib_234: |
_lib_241: |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
OR EAX,EAX |
JNE _lib_243 |
JMP _lib_242 |
_lib_243: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
PUSH EAX |
LEA EAX,[EBP+8] |
MOV EBX,EAX |
MOV EAX, [EBX] |
DEC EAX |
MOV [EBX],EAX |
POP EBX |
ADD EAX,EBX |
MOV EBX,EAX |
MOV EAX,32 |
MOV [EBX],AL |
JMP _lib_241 |
_lib_242: |
LEA EAX,[EBP+12] |
MOV EBX,EAX |
MOV EAX, [EBX] |
MOV ESP,EBP |
POP EBP |
RET |
__iob: |
times 3*32 db 0x0 |
/programs/develop/scc/Libstd.c |
---|
0,0 → 1,440 |
#include "stdio.h" |
#include "clib.h" |
/* |
** Write string to standard output. |
*/ |
puts(string) char *string; |
{fputs(string,stdout); |
OS_fputc('\n',stdout); |
} |
/* |
** reverse string in place |
*/ |
reverse(s) char *s; |
{char *j; int c; |
j=s+strlen(s)-1; |
while(s<j) |
{c=*s; |
*s++ =*j; |
*j-- =c; |
} |
} |
/* |
** copy t to s |
*/ |
strcpy(s,t) char *s,*t; |
{char *d; |
d=s; |
while(*s++ =*t++); |
return (d); |
} |
/* |
** return length of string s (fast version) |
*/ |
strlen(s) char *s; |
{char *ptr; |
ptr=s; |
while(*ptr) |
{++ptr; |
} |
return (ptr-s); |
#ifdef _INASM |
#asm |
xor al,al ; set search value to zero |
mov cx,65535 ; set huge maximum |
mov di,[bp+4] ; get address of s |
cld ; set direction flag forward |
repne scasb ; scan for zero |
mov ax,65534 |
sub ax,cx ; calc and return length |
#endasm |
#endif |
} |
/* |
** return upper-case of c if it is lower-case, else c |
*/ |
toupper(c) int c; |
{if(c<='z' && c>='a') return (c-32); |
return (c); |
} |
/* |
** atoi(s) - convert s to integer. |
*/ |
atoi(s) char *s; |
{int sign,n; |
while(isspace(*s)) ++s; |
sign = 1; |
switch(*s) |
{case '-': sign=-1; |
case '+': ++s; |
} |
n=0; |
while(isdigit(*s)) n=10*n+*s++ -'0'; |
return (sign*n); |
} |
/* |
** atoib(s,b) - Convert s to "unsigned" integer in base b. |
** NOTE: This is a non-standard function. |
*/ |
atoib(s,b) char *s; int b; |
{int n, digit; |
n=0; |
while(isspace(*s)) ++s; |
while((digit=(127 & *s++))>='0') |
{ if(digit>='a') digit-=87; |
else if(digit>='A') digit-=55; |
else digit -= '0'; |
if(digit>=b) break; |
n=b*n+digit; |
} |
return (n); |
} |
/* |
** Gets an entire string (including its newline |
** terminator) or size-1 characters, whichever comes |
** first. The input is terminated by a null character. |
** Entry: str = Pointer to destination buffer. |
** size = Size of the destination buffer. |
** fd = File descriptor of pertinent file. |
** Returns str on success, else NULL. |
*/ |
fgets(str,size,fd) char *str; unsigned size,fd; |
{return (_gets(str,size,fd,1)); |
} |
/* |
** Gets an entire string from stdin (excluding its newline |
** terminator) or size-1 characters, whichever comes |
** first. The input is terminated by a null character. |
** The user buffer must be large enough to hold the data. |
** Entry: str = Pointer to destination buffer. |
** Returns str on success, else NULL. |
*/ |
gets(str) char *str; |
{return (_gets(str,32767,stdin,0)); |
} |
_gets(str,size,fd,nl) char *str; unsigned size,fd,nl; |
{int backup; char *next; |
next=str; |
while(--size>0) |
{switch (*next=fgetc(fd)) |
{case EOF: |
*next=NULL; |
if(next==str) return (NULL); |
return (str); |
case '\n': |
*(next+nl)=NULL; |
return (str); |
case RUB: /* \b */ |
if(next>str) backup=1; |
else backup=0; |
goto backout; |
case WIPE: /* \r */ |
backup=next-str; |
backout: |
if(0/*iscons(fd)*/) |
{++size; |
while(backup--) |
{fputs("\b \b",stderr); |
--next;++size; |
} |
continue; |
} |
default: |
++next; |
} |
} |
*next = NULL; |
return (str); |
} |
/* |
** fprintf(fd, ctlstring, arg, arg, ...) - Formatted print. |
** Operates as described by Kernighan & Ritchie. |
** b, c, d, o, s, u, and x specifications are supported. |
** Note: b (binary) is a non-standard extension. |
*/ |
fprintf(argc) int argc; |
{int *nxtarg; |
nxtarg=CCARGC()+&argc; |
return(_print(*(--nxtarg),--nxtarg)); |
} |
/* |
** printf(ctlstring, arg, arg, ...) - Formatted print. |
** Operates as described by Kernighan & Ritchie. |
** b, c, d, o, s, u, and x specifications are supported. |
** Note: b (binary) is a non-standard extension. |
*/ |
printf(argc) int argc; |
{return(_print(stdout,CCARGC()+&argc-1)); |
} |
/* |
** _print(fd, ctlstring, arg, arg, ...) |
** Called by fprintf() and printf(). |
*/ |
_print(fd,nxtarg) int fd,*nxtarg; |
{int arg,left,pad,cc,len,maxchr,width; |
char *ctl,*sptr,str[17]; |
cc=0; |
ctl=*nxtarg--; |
while(*ctl) |
{if(*ctl!='%') {OS_fputc(*ctl++,fd); ++cc; continue;} |
else ++ctl; |
if(*ctl=='%') {OS_fputc(*ctl++,fd); ++cc; continue;} |
if(*ctl=='-') {left=1; ++ctl;} else left=0; |
if(*ctl=='0') pad='0'; |
else pad=' '; |
if(isdigit(*ctl)) |
{width=atoi(ctl++); |
while(isdigit(*ctl)) ++ctl; |
}else width=0; |
if(*ctl=='.') |
{maxchr=atoi(++ctl); |
while(isdigit(*ctl)) ++ctl; |
}else maxchr=0; |
arg=*nxtarg--; |
sptr=str; |
switch(*ctl++) |
{case 'c': str[0]=arg; str[1]=NULL; break; |
case 's': sptr=arg; break; |
case 'd': itoa(arg,str); break; |
case 'b': itoab(arg,str,2); break; |
case 'o': itoab(arg,str,8); break; |
case 'u': itoab(arg,str,10); break; |
case 'x': itoab(arg,str,16); break; |
default: return (cc); |
} |
len=strlen(sptr); |
if(maxchr && maxchr<len) len=maxchr; |
if(width>len) width=width-len; else width=0; |
if(!left) while(width--) {OS_fputc(pad,fd); ++cc;} |
while(len--) {OS_fputc(*sptr++,fd); ++cc;} |
if(left) while(width--) {OS_fputc(pad,fd); ++cc;} |
} |
return (cc); |
} |
/* |
** Write a string to fd. |
** Entry: string = Pointer to null-terminated string. |
** fd = File descriptor of pertinent file. |
*/ |
fputs(string,fd) char *string; int fd; |
{while(*string) |
OS_fputc(*string++,fd); |
} |
/* |
** All character classification functions except isascii(). |
** Integer argument (c) must be in ASCII range (0-127) for |
** dependable answers. |
*/ |
#define ALNUM 1 |
#define ALPHA 2 |
#define CNTRL 4 |
#define DIGIT 8 |
#define GRAPH 16 |
#define LOWER 32 |
#define PRINT 64 |
#define PUNCT 128 |
#define BLANK 256 |
#define UPPER 512 |
#define XDIGIT 1024 |
int _is[128] = |
{0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, |
0x004, 0x104, 0x104, 0x104, 0x104, 0x104, 0x004, 0x004, |
0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, |
0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, |
0x140, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, |
0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, |
0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, |
0x459, 0x459, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, |
0x0D0, 0x653, 0x653, 0x653, 0x653, 0x653, 0x653, 0x253, |
0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, |
0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, |
0x253, 0x253, 0x253, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, |
0x0D0, 0x473, 0x473, 0x473, 0x473, 0x473, 0x473, 0x073, |
0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, |
0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, |
0x073, 0x073, 0x073, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x004 |
}; |
isalnum (c) int c; {return (_is[c] & ALNUM );} /* 'a'-'z', 'A'-'Z', '0'-'9' */ |
isalpha (c) int c; {return (_is[c] & ALPHA );} /* 'a'-'z', 'A'-'Z' */ |
iscntrl (c) int c; {return (_is[c] & CNTRL );} /* 0-31, 127 */ |
isdigit (c) int c; {return (_is[c] & DIGIT );} /* '0'-'9' */ |
isgraph (c) int c; {return (_is[c] & GRAPH );} /* '!'-'~' */ |
islower (c) int c; {return (_is[c] & LOWER );} /* 'a'-'z' */ |
isprint (c) int c; {return (_is[c] & PRINT );} /* ' '-'~' */ |
ispunct (c) int c; {return (_is[c] & PUNCT );} /* !alnum && !cntrl && !space */ |
isspace (c) int c; {return (_is[c] & BLANK );} /* HT, LF, VT, FF, CR, ' ' */ |
isupper (c) int c; {return (_is[c] & UPPER );} /* 'A'-'Z' */ |
isxdigit(c) int c; {return (_is[c] & XDIGIT);} /* '0'-'9', 'a'-'f', 'A'-'F' */ |
/* |
** itoa(n,s) - Convert n to characters in s |
*/ |
itoa(n,s) char *s; int n; |
{int sign; |
char *ptr; |
ptr=s; |
if((sign=n)<0) n=-n; |
do |
{*ptr++ =n%10+'0'; |
}while((n=n/10)>0); |
if(sign<0) *ptr++='-'; |
*ptr='\0'; |
reverse(s); |
} |
/* |
** itoab(n,s,b) - Convert "unsigned" n to characters in s using base b. |
** NOTE: This is a non-standard function. |
*/ |
itoab(n,s,b) int n; char *s; int b; |
{char *ptr; |
int lowbit; |
ptr=s; |
b >>= 1; |
do |
{lowbit=n&1; |
n=(n>>1)&32767; |
*ptr=((n%b)<<1)+lowbit; |
if(*ptr<10) *ptr+='0'; |
else *ptr+=55; |
++ptr; |
}while(n/=b); |
*ptr=0; |
reverse(s); |
} |
/* |
** itod -- convert nbr to signed decimal string of width sz |
** right adjusted, blank filled; returns str |
** |
** if sz > 0 terminate with null byte |
** if sz = 0 find end of string |
** if sz < 0 use last byte for data |
*/ |
itod(nbr,str,sz) int nbr; char str[]; int sz; |
{char sgn; |
if(nbr<0) {nbr=-nbr; sgn='-';} |
else sgn=' '; |
if(sz>0) str[--sz]=NULL; |
else if(sz<0) sz=-sz; |
else while(str[sz]!=NULL) ++sz; |
while(sz) |
{str[--sz]=(nbr%10+'0'); |
if((nbr=nbr/10)==0) break; |
} |
if(sz) str[--sz]=sgn; |
while(sz>0) str[--sz]=' '; |
return str; |
} |
/* |
** itoo -- converts nbr to octal string of length sz |
** right adjusted and blank filled, returns str |
** |
** if sz > 0 terminate with null byte |
** if sz = 0 find end of string |
** if sz < 0 use last byte for data |
*/ |
itoo(nbr,str,sz) int nbr; char str[]; int sz; |
{int digit; |
if(sz>0) str[--sz]=0; |
else if(sz<0) sz=-sz; |
else while(str[sz]!=0) ++sz; |
while(sz) |
{digit=nbr&7;nbr=(nbr>>3)&8191; |
str[--sz]=digit+48; |
if(nbr==0) break; |
} |
while(sz) str[--sz]=' '; |
return str; |
} |
/* |
** itou -- convert nbr to unsigned decimal string of width sz |
** right adjusted, blank filled; returns str |
** |
** if sz > 0 terminate with null byte |
** if sz = 0 find end of string |
** if sz < 0 use last byte for data |
*/ |
itou(nbr,str,sz) int nbr; char str[]; int sz; |
{int lowbit; |
if(sz>0) str[--sz]=NULL; |
else if(sz<0) sz=-sz; |
else while(str[sz]!=NULL) ++sz; |
while(sz) |
{lowbit=nbr&1; |
nbr=(nbr>>1)&32767; /* divide by 2 */ |
str[--sz]=((nbr%5)<<1)+lowbit+'0'; |
if((nbr=nbr/5)==0) break; |
} |
while(sz) str[--sz]=' '; |
return str; |
} |
/* |
** itox -- converts nbr to hex string of length sz |
** right adjusted and blank filled, returns str |
** |
** if sz > 0 terminate with null byte |
** if sz = 0 find end of string |
** if sz < 0 use last byte for data |
*/ |
itox(nbr,str,sz) int nbr; char str[]; int sz; |
{int digit,offset; |
if(sz>0) str[--sz]=0; |
else if(sz<0) sz=-sz; |
else while(str[sz]!=0) ++sz; |
while(sz) |
{digit=nbr&15; |
nbr=nbr/16; |
/* |
nbr=(nbr>>4)&4095; // 268435455; // 0xFFFFFFF |
*/ |
if(digit<10) offset=48; |
else offset=55; |
str[--sz]=digit+offset; |
if(nbr==0) break; |
} |
while(sz) str[--sz]=' '; |
return str; |
} |
/programs/develop/scc/MACROS.INC |
---|
0,0 → 1,268 |
; new application structure |
macro meos_app_start |
{ |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd __start |
dd __end |
dd __memory |
dd __stack |
if used __params & ~defined __params |
dd __params |
else |
dd 0x0 |
end if |
dd 0x0 |
} |
MEOS_APP_START fix meos_app_start |
macro code |
{ |
__start: |
} |
CODE fix code |
macro data |
{ |
__data: |
} |
DATA fix data |
macro udata |
{ |
if used __params & ~defined __params |
__params: |
db 0 |
__end: |
rb 255 |
else |
__end: |
end if |
__udata: |
} |
UDATA fix udata |
macro meos_app_end |
{ |
align 32 |
rb 2048 |
__stack: |
__memory: |
} |
MEOS_APP_END fix meos_app_end |
; macro for defining multiline text data |
struc mstr [sstring] |
{ |
forward |
local ssize |
virtual at 0 |
db sstring |
ssize = $ |
end virtual |
dd ssize |
db sstring |
common |
dd -1 |
} |
; strings |
macro sz name,[data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if used name |
db data |
end if |
common |
if used name |
.size = $-name |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if (used name)&(lang eq lng) |
db data |
end if |
common |
if used name |
.size = $-name |
end if |
} |
; easy system call macro |
macro mpack dest, hsrc, lsrc |
{ |
if (hsrc eqtype 0) & (lsrc eqtype 0) |
mov dest, (hsrc) shl 16 + lsrc |
else |
if (hsrc eqtype 0) & (~lsrc eqtype 0) |
mov dest, (hsrc) shl 16 |
add dest, lsrc |
else |
mov dest, hsrc |
shl dest, 16 |
add dest, lsrc |
end if |
end if |
} |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
macro mcall a,b,c,d,e,f { ; mike.dld |
__mov eax,a |
__mov ebx,b |
__mov ecx,c |
__mov edx,d |
__mov esi,e |
__mov edi,f |
int 0x40 |
} |
; language for programs |
lang fix ru ; ru en fr ge fi |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
macro add arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
inc arg1 |
else |
add arg1,arg2 |
end if |
else |
add arg1,arg2 |
end if |
} |
macro sub arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
dec arg1 |
else |
sub arg1,arg2 |
end if |
else |
sub arg1,arg2 |
end if |
} |
macro mov arg1,arg2 |
{ |
if (arg1 in __regs) & (arg2 eqtype 0) |
if (arg2) = 0 |
xor arg1,arg1 |
else if (arg2) = 1 |
xor arg1,arg1 |
inc arg1 |
else if (arg2) = -1 |
or arg1,-1 |
else if (arg2) > -128 & (arg2) < 128 |
push arg2 |
pop arg1 |
else |
mov arg1,arg2 |
end if |
else |
mov arg1,arg2 |
end if |
} |
macro struct name |
{ |
virtual at 0 |
name name |
sizeof.#name = $ - name |
end virtual |
} |
; structures used in MeOS |
struc process_information |
{ |
.cpu_usage dd ? ; +0 |
.window_stack_position dw ? ; +4 |
.window_stack_value dw ? ; +6 |
.not_used1 dw ? ; +8 |
.process_name rb 12 ; +10 |
.memory_start dd ? ; +22 |
.used_memory dd ? ; +26 |
.PID dd ? ; +30 |
.x_start dd ? ; +34 |
.y_start dd ? ; +38 |
.x_size dd ? ; +42 |
.y_size dd ? ; +46 |
.slot_state dw ? ; +50 |
rb (1024-52) |
} |
struct process_information |
struc system_colors |
{ |
.frame dd ? |
.grab dd ? |
.grab_button dd ? |
.grab_button_text dd ? |
.grab_text dd ? |
.work dd ? |
.work_button dd ? |
.work_button_text dd ? |
.work_text dd ? |
.work_graph dd ? |
} |
struct system_colors |
; constants |
; events |
EV_IDLE = 0 |
EV_TIMER = 0 |
EV_REDRAW = 1 |
EV_KEY = 2 |
EV_BUTTON = 3 |
EV_EXIT = 4 |
EV_BACKGROUND = 5 |
EV_MOUSE = 6 |
EV_IPC = 7 |
EV_STACK = 8 |
; event mask bits for function 40 |
EVM_REDRAW = 1b |
EVM_KEY = 10b |
EVM_BUTTON = 100b |
EVM_EXIT = 1000b |
EVM_BACKGROUND = 10000b |
EVM_MOUSE = 100000b |
EVM_IPC = 1000000b |
EVM_STACK = 10000000b |
/programs/develop/scc/NOTICE.H |
---|
0,0 → 1,6 |
/* |
** NOTICE.H -- Small C Signon Notice. |
*/ |
#define VERSION "Small C 386/NT, Version 3.1, Revision Level 1\n" |
#define CRIGHT1 "Copyright 1982-1998 J. E. Hendrix H T Walheim\n" |
#define CRIGHT2 "2008 - port to KolibriOS (jacekm.pl@gmail.com)\n\n" |
/programs/develop/scc/OSFUNC.ASM |
---|
0,0 → 1,681 |
include "macros.inc" |
; |
; OS function implementation |
; SmallC for KolibriOS |
; |
;B+ General definitions |
;B+ File defs |
;const |
;param |
BAD equ -1 |
files equ 100 |
save_buffer equ 0x20000 ;32 |
save_buffer_w equ 0x400000 ;32 |
save_file_name equ 0x20000 |
;system |
EOF equ -1 |
;memory |
fileinfo equ I_END |
start_data equ (fileinfo+16384) |
; |
mem_heap equ 0x100000 |
; |
g_handle equ 0x300000 |
;dword - pointer - relative to file |
;dword - begin of file |
;dword - file size |
;dword - 0/1 <=> read/write |
;E:. |
;E:. |
init_osfunc: |
;B+ Init OS functions |
;B+ Clear file handles |
mov edi,g_handle |
mov ecx,files |
shl ecx,2 ;*4 |
xor eax,eax |
cld |
rep stosd |
;E:. |
ret |
;E:. |
;B+ Main OS functions |
ppp dd 70 |
_OS_fopen: |
;B+ Implement "fopen" |
;esp+4 - mode |
;esp+8 - file name |
; mov eax,-1 |
; int 0x40 |
; mov ebx,[esp+8]; |
; push dword 10 |
; push dword [ppp] |
; push ebx |
; push dword 12 |
; call _outstrg |
; add esp,4*4 |
; add [ppp],10 |
; cmp byte [ebx+8],0 |
; jne .l |
; mov byte [ebx+8],'?' |
;.l: |
; cmp [ppp],80 |
; je .l |
mov ecx , [esp+4] ; file mode |
mov [file_mode],ecx |
;B+ Copy file name |
mov esi,[esp+8] |
mov edi,[p_filename] |
mov ecx,12 |
.next_copy: |
lodsb |
;fill name (space) |
or al,al |
jz .fill_space |
;set upper case |
cmp al,'a' |
jb .good_char |
cmp al,'z' |
ja .good_char |
add al,'A'-'a' |
.good_char: |
stosb |
dec ecx |
jnz .next_copy |
.fill_space: |
mov al,' ' |
cld |
rep stosb |
mov eax,[file_mode] |
cmp byte [eax],'w' |
jne .no_wri |
;B+ Copy file name |
mov esi,[esp+8] |
mov edi,[w_file_name] |
mov ecx,12 |
.next_copy2: |
lodsb |
;fill name (space) |
or al,al |
jz .fill_space2 |
;set upper case |
cmp al,'a' |
jb .good_char2 |
cmp al,'z' |
ja .good_char2 |
add al,'A'-'a' |
.good_char2: |
stosb |
dec ecx |
jnz .next_copy2 |
.fill_space2: |
mov al,' ' |
cld |
rep stosb |
.no_wri: |
;E:. |
;B+ Find file handle |
mov eax,g_handle |
.new_handle: |
cmp dword [eax+4],0 |
je .find_place |
add eax,16 |
cmp eax,g_handle+files*16-16 |
jne .new_handle |
xor eax,eax ; no free handle |
ret |
.find_place: |
; TMP: mov eax,[.ccc] |
; TMP: add [.ccc],16 |
;E:. |
push eax |
;B+ Test open mode |
mov eax,[esp+4+4] |
cmp byte [eax],'r' |
je .open_read |
cmp byte [eax],'w' |
je .open_write |
;bad mode |
add esp,4 |
mov eax,eax ; invalid open mode |
ret |
;E:. |
; TMP:.ccc dd g_handle |
.open_read: |
;B+ Open for read |
;B+ Read file |
;Wait to read correct |
mov ebx,100 |
mov eax,5 |
int 0x40 |
mov eax,[g_fileend] |
mov dword [file_parameters+2*4],2000 ;read all |
mov dword [file_parameters+3*4],eax |
mov dword [file_parameters],0 |
mov ebx,file_parameters |
mov eax,58 |
int 0x40 |
;E:. |
;B+ TEST FILE FOUND |
or eax,eax |
jz .file_found |
cmp eax,5 |
je .file_found |
; mov ecx,eax ; eax |
; mov ebx,8 shl 16 + 0x0100 |
; mov edx,100 shl 16 + 120 |
; mov esi,0xffffff |
; mov eax,47 |
; int 0x40 |
;file not found - return 0 |
add esp,4 |
xor eax,eax |
ret |
.file_found: |
;E:. |
pop eax |
push ebx |
xchg eax,ebx |
;B+ Fill file handle |
;save current pointer |
xor eax,eax |
mov [ebx],eax |
;save file begin |
mov eax,[g_fileend] |
mov [ebx+4],eax |
;save file size |
pop eax |
mov [ebx+8],eax |
;reserve file zone |
add eax,7 |
and eax,not 7 |
add [g_fileend],eax |
;save file mode |
mov eax,0 ;read |
mov [ebx+12],eax |
;E:. |
xchg eax,ebx ;return pointer place |
ret |
;E:. |
.open_write: |
;B+ Open for write |
;B+ Reserve filename |
; p_filename -> w_file_name |
;pusha |
; mov eax, w_file_name |
; mov ebx, [p_filename] |
;.ncpy: |
; mov ch, byte [ebx] |
; cmp ch, 0 |
; je .ecpy |
; mov [eax], ch |
; inc dword [eax] |
; inc dword [ebx] |
;jmp .ncpy |
; |
;.ecpy: |
; |
;popa |
mov [save_buffer_p], save_buffer_w |
mov esi,[p_filename] |
mov edi,[g_fileend] |
mov ecx,12 |
cld |
rep movsb |
add [g_fileend],16 |
;E:. |
pop ebx |
;B+ Fill file handle |
;save begin pointer |
xor eax,eax |
mov [ebx],eax |
;save file begin |
mov eax,[g_fileend] |
mov [ebx+4],eax |
;save file zone |
mov dword [ebx+8],save_buffer |
;reserve file zone |
add [g_fileend],save_buffer |
;save file mode |
mov eax,1 ;write |
mov [ebx+12],eax |
;E:. |
xchg eax,ebx ;return pointer place |
ret |
;E:. |
;E:. |
_OS_fclos: |
;B+ Close file |
;esp+4 - file handle |
;B+ Test write mode - save file |
mov eax,[esp+4] |
mov eax,[eax+12] |
cmp eax,1 |
;E:. |
jne .no_write |
mov eax, [esp+4] |
mov ecx, [eax] |
mov ebx, [eax+8] |
mov ebx, [save_buffer_p] |
sub ebx, save_buffer_w |
; ebx = number of read bytes = file size |
; save loaded file |
mov [dest_info.bytes],ebx ; file size in bytes |
mov [dest_info.bytes+4], save_buffer_w |
;mov eax, [p_filename];[w_file_name] |
;mov [destination],eax |
mov eax,70 |
mov ebx,dest_info |
mcall |
; check if 58 function failed |
test eax,eax |
je .ok_write |
add eax,7 ; error number += 7 |
cmp eax,6+7 |
jna .copy_error |
mov eax,7+7 |
jmp .copy_error |
.copy_error: |
.ok_write: |
;E:. |
jmp .read |
.no_write: |
;B+ Test read mode - if no error end |
cmp eax,0 |
je .read |
mov eax,BAD |
ret |
;E:. |
.read: |
;B+ Relace memory |
;find file size |
mov eax,[esp+4] |
mov ecx,[eax+8] |
add ecx,7 |
and ecx,not 7 |
push ecx |
;mov memory |
mov esi,[eax+4] |
mov edi,esi |
add esi,ecx |
mov ecx,[g_fileend] |
sub ecx,edi |
jz .is_last |
shr ecx,2 |
inc ecx ;not neccessery |
cld |
rep movsd |
;update gl. memory |
.is_last: |
pop ecx |
sub dword [g_fileend],ecx |
;update file pointers |
mov edx,ecx |
mov ecx,[eax+4] |
mov eax,g_handle |
.new_handle1: |
mov ebx,[eax+4] |
cmp ebx,ecx |
jbe .no_update |
sub ebx,edx |
mov [eax+4],ebx |
.no_update: |
add eax,16 |
cmp eax,g_handle+files*16 |
jne .new_handle1 |
;clear handle |
mov edi,[esp+4] |
xor eax,eax |
cld |
stosd |
stosd |
stosd |
stosd |
;E:. |
ret |
;E:. |
_OS_fgetc: |
;B+ Load char from file |
;esp+4 - input file |
mov eax,[esp+4] |
mov ebx,[eax] |
cmp ebx,[eax+8] |
je .eof |
inc dword [eax] |
add ebx,[eax+4] |
movzx eax,byte [ebx] |
ret |
.eof: |
mov eax,EOF |
ret |
;E:. |
;rrr db 'g',0 |
_OS_fputc: |
;B+ Save char to file |
;esp+4 - output file |
;esp+8 - char to write |
;push dword '<' |
;mov cl,1 |
;push dword 0 |
;call test_outch |
;add esp,8 |
;B+ Temp - write direct. |
cmp dword [esp+4],__iob |
jne .real_write0 |
jmp _OS_exit |
.real_write0: |
cmp dword [esp+4],__iob+32 |
jne .real_write1 |
mov [print_textcolor],0x00ffff |
jmp test_outch |
.real_write1: |
cmp dword [esp+4],__iob+64 |
jne .real_write2 |
mov [print_textcolor],0x77ffff |
jmp test_outch |
.real_write2: |
;E:. |
mov ebx,[save_buffer_p] |
mov eax,[esp+8] |
mov [ebx],eax |
inc dword [save_buffer_p] |
ret |
;push dword '<' |
;mov cl,1 |
;push dword 0 |
;call test_outch |
;add esp,8 |
mov eax,[esp+4] |
mov ebx,[eax] |
push ebx |
cmp ebx,[eax+8] |
jne .write_normal |
;B+ Alloc save_buffer bytes |
;mov memory |
mov ebx,[esp+4+4] |
mov esi,[g_fileend] |
mov edi,esi |
add edi,save_buffer-4 |
mov ecx,esi |
sub ecx,[ebx+4] |
sub ecx,[ebx+8] |
shr ecx,2 |
jz .is_last |
sub esi,4 |
std |
rep movsd |
.is_last: |
;expand file size |
add dword [eax+8],save_buffer |
;update file pointers |
mov ebx,g_handle |
.new_handle: |
mov ecx,[ebx+4] |
cmp [eax+4],ecx |
jae .no_update |
add dword [ebx+4],save_buffer |
.no_update: |
add ebx,16 |
cmp ebx,g_handle+files*16-16 |
jne .new_handle |
;E:. |
.write_normal: |
pop ebx |
inc dword [eax] |
add ebx,[eax+4] |
mov cl,[esp+8] |
mov byte [ebx],cl |
;sub [test_outch.x_coord],2 |
; |
;push dword '>' |
;mov cl,1 |
;push dword 0 |
;call test_outch |
;add esp,8 |
; |
;sub [test_outch.x_coord],6 |
xor eax,eax |
ret |
;E:. |
_OS_callo: |
;B+ Alloc memory |
;find all size |
mov eax,[esp+4] |
mov ebx,[esp+8] |
mul ebx |
push eax |
;clear memory |
mov edi,[.mem_p] |
xor eax,eax |
mov ecx,[esp] |
cld |
rep stosb |
;update new memory pointer |
pop ebx |
push dword [.mem_p] |
add ebx,7 |
and ebx,not 7 |
add [.mem_p],ebx |
;return value |
pop eax |
ret |
.mem_p dd mem_heap |
;E:. |
_OS_exit: |
;B+ Exit program |
; ;TMP |
; mov eax,-1 |
; int 0x40 |
mov esp,[exit_esp] |
sub esp,4 |
ret |
;E:. |
;E:. |
;B+ Test procedures |
;B+ Definitions |
LEFTMARGIN equ 11 |
BEGIN_CHARS equ 20 |
NL equ 10 |
;E:. |
print_textcolor dd 0x00ffff |
_file_beg: |
;B+ Show begin of file - test fopen |
;esp+4 - file handle (descriptor) |
mov eax,[esp+4] |
mov ebx,10 shl 16 + 30 |
mov ecx,[print_textcolor] |
mov edx,[eax+4] |
mov esi,BEGIN_CHARS |
mov eax,4 |
int 0x40 |
ret |
;E:. |
_outstrg: |
;B+ Draw black text - test function call |
;esp+4*4 - x |
;esp+4*3 - y |
;esp+4*2 - *c |
;esp+4*1 - len |
mov ebx,[esp+4*4] |
shl ebx,16 |
mov bx,[esp+4*3] |
mov ecx,[print_textcolor] |
mov edx,[esp+4*2] |
mov esi,[esp+4] |
mov eax,4 |
int 0x40 |
ret |
;E:. |
test_outch: |
;B+ Draw one char - use as _OS_fputc, to test printf(...) |
;esp+8 - char to write |
;this is test! \b \r - not nesessary |
mov al,[esp+8] |
cmp al,NL |
jne .no_newline |
add [.y_coord],10 |
mov [.x_coord],LEFTMARGIN |
ret |
.no_newline: |
mov ebx,[.x_coord] |
shl ebx,16 |
mov bx,word [.y_coord] |
mov ecx,[print_textcolor] |
mov [.out_char],al |
mov edx,.out_char |
mov esi,1 |
mov eax,4 |
int 0x40 |
add [.x_coord],6 |
;mov eax,5 |
;mov ebx,5 |
;int 0x40 |
ret |
.x_coord dd LEFTMARGIN |
.y_coord dd 60 |
.out_char db 0 |
;E:. |
;E:. |
;B+ Data section |
;B+ Memory managment |
g_fileend dd g_handle+files*4*4 ;from 2MB+100*4*4 |
;w_buff dd |
;E:. |
save_buffer_p dd save_buffer_w |
;B+ File parameters |
file_parameters: |
dd 0x0 ; mode |
dd 0x0 ; first block |
dd 1000 ; block read |
dd -1 ; return place |
dd fileinfo ; work area |
filepath: times 100 db 0 |
file_mode dd 0 ;file mode |
dest_info: ; DESTINATION FILEINFO |
dd 2 |
dd 0 |
dd 0 |
.bytes dd ? |
dd save_buffer |
db 0 |
destination: |
dd save_file_name |
;db "EXAMPLE.ASM",0 |
w_file_name dd save_file_name |
p_filename dd 0x0 |
;E:. |
;E:. |
;TO DO |
mov eax,-1 |
int 0x40 |
;TO DO |
/programs/develop/scc/README.TXT |
---|
0,0 → 1,18 |
############################## |
# SCC (simple c compiler) |
# port of CCOMP to KolibriOS |
# |
###### |
# contact: jacekm.pl@gmail.com |
############################## |
KNOWN BUGS: |
* only directiory /rd/1/ works |
HISTORY: |
* 0.5.3: |
- output dir fixed |
* 0.5.2: |
- static output file |
* 0.5.1: |
- first realase |
/programs/develop/scc/SCC.ASM |
---|
0,0 → 1,392 |
; |
; Port to KolibliOS |
; (jacekm.pl@gmail.com) |
; |
;B+ System header |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd START |
dd I_END |
dd 0x500000 |
dd 0x7fff0 |
dd 0x0,0x0 |
;E:. |
;B+ Include C files |
; Compiler tools |
include "INTRINS.ASM" |
; C Library ("stdio.asm") |
include "LIBSTD.ASM" |
; MenuetOS implement |
include "OSFUNC.ASM" |
_fopen equ _OS_fopen |
_fputc equ _OS_fputc |
_fgetc equ _OS_fgetc |
_fclose equ _OS_fclos |
;Main program (compiled from C) |
include "GETARG.ASM" |
include "CC1.ASM" |
include "CC2.ASM" |
include "CC3.ASM" |
include "CC4.ASM" |
;E:. |
START: |
;B+ Main cycle |
call draw_window |
still: |
mov eax,10 |
int 0x40 |
still1: |
cmp eax,1 |
je red |
cmp eax,2 |
je key |
cmp eax,3 |
je button |
jmp still |
red: |
call draw_window |
jmp still |
key: |
mov eax,2 |
int 0x40 |
jmp still |
button: |
mov eax,17 |
int 0x40 |
cmp ah,1 |
jne .noclose |
mov eax,-1 |
int 0x40 |
.noclose: |
cmp ah,2 |
jne .no_run |
; call begin_osfunc |
;B+ Copy file path |
mov esi,inp_path |
mov edi,filepath |
mov ecx,[p_len] |
push ecx |
cld |
rep movsb |
pop ecx |
add ecx,filepath |
mov [p_filename],ecx |
;E:. |
;B+ Clear word area |
mov ebx,10 shl 16 + 280 |
mov ecx,60 shl 16 + 250 |
mov edx,0x303030 |
mov eax,13 |
int 0x40 |
;E:. |
;B+ Init parameters |
mov ecx,_input |
sub ecx,_nogo |
mov edi,_nogo |
xor eax,eax |
cld |
rep stosb |
mov [_input],-1 |
mov [_input2],-1 |
mov [_usexpr],1 |
mov [_ccode],1 |
mov [_quote],34 |
mov [test_outch.y_coord],60 |
;E:. |
call init_osfunc |
push dword 4 |
push args |
;B+ Save exit ESP |
mov [exit_esp],esp |
;E:. |
call _main |
add esp,8 |
; call end_osfunc |
.no_run: |
cmp ah,3 |
jne .no_path |
mov eax,inp_path |
mov bx,27 |
call read_string |
mov edx,[r_pos] |
mov [p_len],edx |
; |
cmp ah,10 |
je still |
jmp still1 |
.no_path: |
cmp ah,4 |
jne .no_file |
mov eax,inp_file |
mov bx,42 |
call read_string |
mov edx,[r_pos] |
mov [f_len],edx |
; |
cmp ah,10 |
je still |
jmp still1 |
.no_file: |
jmp still |
;E:. |
read_string: |
;B+ Read string |
mov [c_place],eax |
mov [r_pos],0 |
mov [rel_x],60 |
mov [rel_y],bx |
mov ebx,60 |
shl ebx,16 |
mov bx,6*26+1 |
movzx ecx,[rel_y] |
shl ecx,16 |
mov cx,10 |
mov edx,0x000000 |
mov eax,13 |
int 0x40 |
add ecx,11 shl 16 |
mov cx,2 |
mov edx,0x999999 |
int 0x40 |
.next: |
mov ebx,[rel_x] |
shl ebx,16 |
mov bx,7 |
movzx ecx,[rel_y] |
shl ecx,16 |
mov cx,10 |
mov edx,0x000000 |
mov eax,13 |
int 0x40 |
mov ebx,[c_place] |
mov byte [ebx],0 |
mov eax,10 |
int 0x40 |
cmp eax,2 |
je .key |
jmp .to_ret |
.key: |
mov eax,2 |
int 0x40 |
cmp ah,13 |
jne .no_enter |
jmp .to_ret |
.no_enter: |
cmp ah,8 |
jne .no_back |
cmp [r_pos],0 |
je .next |
dec [r_pos] |
dec [c_place] |
sub [rel_x],6 |
jmp .next |
.no_back: |
cmp [r_pos],25 |
je .next |
cmp ah,'a' |
jb .no_sm_l |
cmp ah,'z' |
ja .no_sm_l |
add ah,'A'-'a' |
.no_sm_l: |
mov byte [ebx],ah |
mov [char],ah |
inc [c_place] |
inc [r_pos] |
mov ebx,[rel_x] |
inc ebx |
shl ebx,16 |
mov bx,[rel_y] |
inc bx |
mov ecx,0x00ffff |
mov edx,char |
mov esi,1 |
mov eax,4 |
int 0x40 |
add [rel_x],6 |
jmp .next |
.to_ret: |
push eax |
mov ebx,60 |
shl ebx,16 |
mov bx,6*26+1 |
movzx ecx,[rel_y] |
add ecx,11 |
shl ecx,16 |
mov cx,2 |
mov edx,0x000000 |
mov eax,13 |
int 0x40 |
pop eax |
ret |
rel_x dd 60 |
rel_y dw 0x0 |
c_place dd 0x0 |
r_pos dd 0x0 |
char db '?' |
;E:. |
draw_window: |
;B+ Draw window |
mov eax,12 |
mov ebx,1 |
int 0x40 |
mov ebx,100*65536+300 |
mov ecx,100*65536+320 |
mov edx,0x035555DD |
mov esi,0x805080d0 |
mov edi,0x005080d0 |
mov eax,0 |
int 0x40 |
mov ebx,8*65536+8 |
mov ecx,0x10ddeeff |
mov edx,caption |
mov esi,caption_end-caption |
mov eax,4 |
int 0x40 |
;mov ebx,(300-19)*65536+12 |
;mov ecx,5*65536+12 |
;mov edx,1 |
;mov esi,0x6688dd |
;mov eax,8 |
;int 0x40 |
;B+ Hot buttons |
mov ebx,220 shl 16 + 70 |
mov ecx,25 shl 16 + 29 |
mov edx,2 ; compile |
mov esi,0x6688dd |
mov eax,8 |
int 0x40 |
mov ebx,10 shl 16 + 47 |
mov ecx,26 shl 16 + 12 |
mov edx,3 ; path |
mov esi,0x6688dd |
mov eax,8 |
int 0x40 |
mov ebx,10 shl 16 + 47 |
mov ecx,41 shl 16 + 12 |
mov edx,4 ; file name |
mov esi,0x6688dd |
mov eax,8 |
int 0x40 |
;E:. |
;B+ Text in buttons |
mov ebx,231 shl 16 + 36 |
mov ecx,0x10ffffff |
mov edx,txt_compile |
mov esi,txt_compile_end-txt_compile |
mov eax,4 |
int 0x40 |
mov ebx,14 shl 16 + 28 |
mov ecx,0xffffff |
mov edx,txt_path |
mov esi,txt_path_end-txt_path |
int 0x40 |
mov ebx,14 shl 16 + 43 |
mov edx,txt_file |
mov esi,txt_file_end-txt_file |
int 0x40 |
;E:. |
;B+ Draw path / file name |
mov ebx,61 shl 16 + 28 |
mov ecx,0x00ffff |
mov edx,inp_path |
mov esi,[p_len] |
mov eax,4 |
int 0x40 |
mov ebx,61 shl 16 + 43 |
mov ecx,0x00ffff |
mov edx,inp_file |
mov esi,[f_len] |
mov eax,4 |
int 0x40 |
;E:. |
mov eax,12 |
mov ebx,2 |
int 0x40 |
ret |
;E:. |
;B+ Data area |
;B+ Interface |
inp_path: times 100 db '/RD/1/',0 |
p_len dd 6 |
inp_file: times 100 db 'EXAMPLE',0 |
f_len dd 7 |
txt_compile db 'Compile' |
txt_compile_end: |
txt_path db 'Path ->' |
txt_path_end: |
txt_file db 'File ->' |
txt_file_end: |
;E:. |
;B+ Main arguments |
args dd arg_str0,inp_file,arg_str2,arg_str3,arg_str4 |
arg_str0 db 'CC',0 |
arg_str1 db 'prog',0 |
arg_str2 db '-m',0 |
arg_str3 db '-a',0 |
arg_str4 db '-p',0 |
;E:. |
;B+ System parameters |
exit_esp dd 0x0 |
;E:. |
caption db 'Small C compiler for KolibriOS v 0.5.3' |
caption_end: |
times 8-($ mod 8) db 0 |
;E:. |
I_END: |
/programs/develop/scc/STDIO.H |
---|
0,0 → 1,33 |
/* |
** STDIO.H -- Standard Small C Definitions. |
*/ |
extern char _iob[]; |
#define exit OS_exit |
#define fopen OS_fopen |
#define fgetc OS_fgetc |
#define fputc OS_fputc |
#define fclose OS_fclose |
#define calloc OS_calloc // stdlib.h |
#define SIZEOF_FILE 32 // sizeof (FILE) |
#define stdin (&_iob[0]) |
#define stdout (&_iob[1*SIZEOF_FILE]) |
#define stderr (&_iob[2*SIZEOF_FILE]) |
#define stdaux 3 /* file descriptor for standard auxiliary port */ |
#define stdprn 4 /* file descriptor for standard printer */ |
#define FILE char /* supports "FILE *fp;" declarations */ |
#define ERR (-2) /* return value for errors */ |
#define EOF (-1) /* return value for end-of-file */ |
#define YES 1 /* true */ |
#define NO 0 /* false */ |
#define NULL 0 /* zero */ |
#define CR 13 /* ASCII carriage return */ |
#define LF 10 /* ASCII line feed */ |
#define BELL 7 /* ASCII bell */ |
#define SPACE ' ' /* ASCII space */ |
#define NEWLINE LF /* Small C newline character */ |
/programs/develop/scc/cc.h |
---|
0,0 → 1,320 |
/* |
** CC.H -- Symbol Definitions for Small-C compiler. |
*/ |
#ifdef _MSC_VER |
#define YES 1 /* true */ |
#define NO 0 /* false */ |
#define CR 13 /* ASCII carriage return */ |
#define LF 10 /* ASCII line feed */ |
#define BELL 7 /* ASCII bell */ |
#define SPACE ' ' /* ASCII space */ |
#define NEWLINE LF /* Small C newline character */ |
#endif |
/* |
** size of 'int' |
*/ |
#define INT32 /* if #defined int = 32 bits, else 16 */ |
/* |
** ALIGNMENT |
*/ |
#define ALIGN 4 |
/* |
** machine dependent parameters |
*/ |
#define BPD 4 /* bytes per dword */ |
#define LBPD 2 /* log2(BPD) */ |
#define BPW 2 /* bytes per word */ |
#define LBPW 1 /* log2(BPW) */ |
#define SBPC 1 /* stack bytes per character */ |
#define ERRCODE 7 /* op sys return code */ |
#define INTSIZE 4 |
/* |
** symbol table format |
*/ |
#define IDENT 0 |
#define TYPE 1 |
#define CLASS 2 |
#define SIZE 3 |
#define OFFSET 5+2 |
#define NAME (7+4) |
#define SYMAVG (12+4) |
#define SYMMAX (16+4) |
/* |
** symbol table parameters |
*/ |
#define NUMLOCS 25 |
#define STARTLOC symtab |
#define ENDLOC (symtab+NUMLOCS*SYMAVG) |
#define NUMGLBS 200 |
#define STARTGLB ENDLOC |
#define ENDGLB (ENDLOC+(NUMGLBS-1)*SYMMAX) |
#define SYMTBSZ /*3050*/ (NUMLOCS*SYMAVG + NUMGLBS*SYMMAX) |
/* |
** system wide name size (for symbols) |
*/ |
#define NAMESIZE 9 |
#define NAMEMAX 8 |
/* |
** values for "IDENT" |
*/ |
#define LABEL 0 |
#define VARIABLE 1 |
#define ARRAY 2 |
#define POINTER 3 |
#define FUNCTION 4 |
#define PTRSIZE INTSIZE /* Size of pointer (must match an int!) */ |
/* |
** values for "TYPE" |
** high order 14 bits give length of object |
** low order 2 bits make type unique within length |
*/ |
/* LABEL 0 */ |
#define CHR ( 1 << 2) |
#define SHORT (BPW << 2) |
#define INT (INTSIZE << 2) |
#define UCHR (( 1 << 2) + 1) |
#define USHORT ((BPW << 2) + 1) |
#define UINT ((INTSIZE << 2) + 1) |
#define UNSIGNED 1 |
/* |
** values for "CLASS" |
*/ |
/* LABEL 0 */ |
#define AUTOMATIC 1 |
#define STATIC 2 |
#define EXTERNAL 3 |
#define AUTOEXT 4 |
/* |
** segment types |
*/ |
#define DATASEG 1 |
#define CODESEG 2 |
/* |
** "switch" table |
*/ |
#define SWSIZ (2*BPW) |
#define SWTABSZ (90*SWSIZ) |
/* |
** "while" queue |
*/ |
#define WQTABSZ 30 |
#define WQSIZ 3 |
#define WQMAX (wq+WQTABSZ-WQSIZ) |
/* |
** field offsets in "while" queue |
*/ |
#define WQSP 0 |
#define WQLOOP 1 |
#define WQEXIT 2 |
/* |
** literal pool |
*/ |
#define LITABSZ 3000 |
#define LITMAX (LITABSZ-1) |
/* |
** input line |
*/ |
#define LINEMAX 127 |
#define LINESIZE 128 |
/* |
** entries in staging buffer |
*/ |
#define STAGESIZE 200 |
/* |
** macro (#define) pool |
*/ |
#define MACNBR 300 |
#define MACNSIZE (MACNBR*(NAMESIZE+2)) |
#define MACNEND (macn+MACNSIZE) |
#define MACQSIZE (MACNBR*7) |
#define MACMAX (MACQSIZE-1) |
/* |
** statement types |
*/ |
#define STIF 1 |
#define STWHILE 2 |
#define STRETURN 3 |
#define STBREAK 4 |
#define STCONT 5 |
#define STASM 6 |
#define STEXPR 7 |
#define STDO 8 |
#define STFOR 9 |
#define STSWITCH 10 |
#define STCASE 11 |
#define STDEF 12 |
#define STGOTO 13 |
#define STLABEL 14 |
/* |
** p-code symbols |
** |
** legend: |
** 1 = primary register (pr in comments) |
** 2 = secondary register (sr in comments) |
** b = byte |
** f = jump on false condition |
** l = current literal pool label number |
** m = memory reference by label |
** n = numeric constant |
** p = indirect reference thru pointer in sr |
** r = repeated r times |
** s = stack frame reference |
** u = unsigned |
** w = word |
** _ (tail) = another p-code completes this one |
*/ |
/* compiler-generated */ |
#define ADD12 1 /* add sr to pr */ |
#define ADDSP 2 /* add to stack pointer */ |
#define AND12 3 /* AND sr to pr */ |
#define ANEG1 4 /* arith negate pr */ |
#define ARGCNTn 5 /* pass arg count to function */ |
#define ASL12 6 /* arith shift left sr by pr into pr */ |
#define ASR12 7 /* arith shift right sr by pr into pr */ |
#define CALL1 8 /* call function thru pr */ |
#define CALLm 9 /* call function directly */ |
#define BYTE_ 10 /* define bytes (part 1) */ |
#define BYTEn 11 /* define byte of value n */ |
#define BYTEr0 12 /* define r bytes of value 0 */ |
#define COM1 13 /* ones complement pr */ |
#define DBL1 14 /* double pr */ |
#define DBL2 15 /* double sr */ |
#define DIV12 16 /* div pr by sr */ |
#define DIV12u 17 /* div pr by sr unsigned */ |
#define DWORD_ 111 /* define dword (part 1) */ |
#define DWORDn 112 /* define dword of value n */ |
#define DWORDr0 113 /* define r dwords of value 0 */ |
#define ENTER 18 /* set stack frame on function entry */ |
#define EQ10f 19 /* jump if (pr == 0) is false */ |
#define EQ12 20 /* set pr TRUE if (sr == pr) */ |
#define GE10f 21 /* jump if (pr >= 0) is false */ |
#define GE12 22 /* set pr TRUE if (sr >= pr) */ |
#define GE12u 23 /* set pr TRUE if (sr >= pr) unsigned */ |
#define POINT1l 24 /* point pr to function's literal pool */ |
#define POINT1m 25 /* point pr to mem item thru label */ |
#define GETb1m 26 /* get byte into pr from mem thru label */ |
#define GETb1mu 27 /* get unsigned byte into pr from mem thru label */ |
#define GETb1p 28 /* get byte into pr from mem thru sr ptr */ |
#define GETb1pu 29 /* get unsigned byte into pr from mem thru sr ptr */ |
#define GETd1m 107 /* get dword into pr from mem thru label */ |
#define GETd1n 108 /* get dword of value n into pr */ |
#define GETd1p 109 /* get dword into pr from mem thru sr ptr */ |
#define GETd2n 110 /* get word of value n into sr */ |
#define GETw1m 30 /* get word into pr from mem thru label */ |
#define GETw1n 31 /* get word of value n into pr */ |
#define GETw1p 32 /* get word into pr from mem thru sr ptr */ |
#define GETw2n 33 /* get word of value n into sr */ |
#define GT10f 34 /* jump if (pr > 0) is false */ |
#define GT12 35 /* set pr TRUE if (sr > pr) */ |
#define GT12u 36 /* set pr TRUE if (sr > pr) unsigned */ |
#define WORD_ 37 /* define word (part 1) */ |
#define WORDn 38 /* define word of value n */ |
#define WORDr0 39 /* define r words of value 0 */ |
#define JMPm 40 /* jump to label */ |
#define LABm 41 /* define label m */ |
#define LE10f 42 /* jump if (pr <= 0) is false */ |
#define LE12 43 /* set pr TRUE if (sr <= pr) */ |
#define LE12u 44 /* set pr TRUE if (sr <= pr) unsigned */ |
#define LNEG1 45 /* logical negate pr */ |
#define LT10f 46 /* jump if (pr < 0) is false */ |
#define LT12 47 /* set pr TRUE if (sr < pr) */ |
#define LT12u 48 /* set pr TRUE if (sr < pr) unsigned */ |
#define MOD12 49 /* modulo pr by sr */ |
#define MOD12u 50 /* modulo pr by sr unsigned */ |
#define MOVE21 51 /* move pr to sr */ |
#define MUL12 52 /* multiply pr by sr */ |
#define MUL12u 53 /* multiply pr by sr unsigned */ |
#define NE10f 54 /* jump if (pr != 0) is false */ |
#define NE12 55 /* set pr TRUE if (sr != pr) */ |
#define NEARm 56 /* define near pointer thru label */ |
#define OR12 57 /* OR sr onto pr */ |
#define POINT1s 58 /* point pr to stack item */ |
#define POP2 59 /* pop stack into sr */ |
#define PUSH1 60 /* push pr onto stack */ |
#define PUTbm1 61 /* put pr byte in mem thru label */ |
#define PUTbp1 62 /* put pr byte in mem thru sr ptr */ |
#define PUTdm1 114 /* put pr dword in mem thru label */ |
#define PUTdp1 115 /* put pr dword in mem thru sr ptr */ |
#define PUTwm1 63 /* put pr word in mem thru label */ |
#define PUTwp1 64 /* put pr word in mem thru sr ptr */ |
#define rDEC1 65 /* dec pr (may repeat) */ |
#define REFm 66 /* finish instruction with label */ |
#define RETURN 67 /* restore stack and return */ |
#define rINC1 68 /* inc pr (may repeat) */ |
#define SUB12 69 /* sub sr from pr */ |
#define SWAP12 70 /* swap pr and sr */ |
#define SWAP1s 71 /* swap pr and top of stack */ |
#define SWITCH 72 /* find switch case */ |
#define XOR12 73 /* XOR pr with sr */ |
/* optimizer-generated */ |
#define ADD1n 74 /* add n to pr */ |
#define ADD21 75 /* add pr to sr */ |
#define ADD2n 76 /* add immediate to sr */ |
#define ADDbpn 77 /* add n to mem byte thru sr ptr */ |
#define ADDwpn 78 /* add n to mem word thru sr ptr */ |
#define ADDm_ 79 /* add n to mem byte/word thru label (part 1) */ |
#define COMMAn 80 /* finish instruction with ,n */ |
#define DECbp 81 /* dec mem byte thru sr ptr */ |
#define DECwp 82 /* dec mem word thru sr ptr */ |
#define POINT2m 83 /* point sr to mem thru label */ |
#define POINT2m_ 84 /* point sr to mem thru label (part 1) */ |
#define GETb1s 85 /* get byte into pr from stack */ |
#define GETb1su 86 /* get unsigned byte into pr from stack */ |
#define GETw1m_ 87 /* get word into pr from mem thru label (part 1) */ |
#define GETw1s 88 /* get word into pr from stack */ |
#define GETw2m 89 /* get word into sr from mem (label) */ |
#define GETw2p 90 /* get word into sr thru sr ptr */ |
#define GETw2s 91 /* get word into sr from stack */ |
#define INCbp 92 /* inc byte in mem thru sr ptr */ |
#define INCwp 93 /* inc word in mem thru sr ptr */ |
#define PLUSn 94 /* finish instruction with +n */ |
#define POINT2s 95 /* point sr to stack */ |
#define PUSH2 96 /* push sr */ |
#define PUSHm 97 /* push word from mem thru label */ |
#define PUSHp 98 /* push word from mem thru sr ptr */ |
#define PUSHs 99 /* push word from stack */ |
#define PUT_m_ 100 /* put byte/word into mem thru label (part 1) */ |
#define rDEC2 101 /* dec sr (may repeat) */ |
#define rINC2 102 /* inc sr (may repeat) */ |
#define SUB_m_ 103 /* sub from mem byte/word thru label (part 1) */ |
#define SUB1n 104 /* sub n from pr */ |
#define SUBbpn 105 /* sub n from mem byte thru sr ptr */ |
#define SUBwpn 106 /* sub n from mem word thru sr ptr */ |
#define PCODES 116 /* size of code[] (it's a [+ 1]) */ |
/programs/develop/scc/cc1.c |
---|
0,0 → 1,911 |
/* |
** Small-C Compiler -- Part 1 -- Top End. |
** Copyright 1982, 1983, 1985, 1988 J. E. Hendrix |
** Copyright 1998 H T Walheim |
** All rights reserved. |
*/ |
#include <stdio.h> |
#include "notice.h" |
#include "cc.h" |
/* |
** miscellaneous storage |
*/ |
int |
nogo, /* disable goto statements? */ |
noloc, /* disable block locals? */ |
opindex, /* index to matched operator */ |
opsize, /* size of operator in characters */ |
swactive, /* inside a switch? */ |
swdefault,/* default label #, else 0 */ |
*swnext, /* address of next entry */ |
*swend, /* address of last entry */ |
*stage, /* staging buffer address */ |
*wq, /* while queue */ |
argcs, /* static argc */ |
*argvs, /* static argv */ |
*wqptr, /* ptr to next entry */ |
litptr, /* ptr to next entry */ |
macptr, /* macro buffer index */ |
pptr, /* ptr to parsing buffer */ |
ch, /* current character of input line */ |
nch, /* next character of input line */ |
declared, /* # of local bytes to declare, -1 when declared */ |
iflevel, /* #if... nest level */ |
skiplevel,/* level at which #if... skipping started */ |
nxtlab, /* next avail label # */ |
litlab, /* label # assigned to literal pool */ |
csp, /* compiler relative stk ptr */ |
argstk, /* function arg sp */ |
argtop, /* highest formal argument offset */ |
ncmp, /* # open compound statements */ |
errflag, /* true after 1st error in statement */ |
eof, /* true on final input eof */ |
output, /* fd for output file */ |
files, /* true if file list specified on cmd line */ |
filearg = 0, /* cur file arg index */ |
input = EOF, /* fd for input file */ |
input2 = EOF, /* fd for "#include" file */ |
usexpr = YES, /* true if value of expression is used */ |
ccode = YES, /* true while parsing C code */ |
*snext, /* next addr in stage */ |
*stail, /* last addr of data in stage */ |
*slast, /* last addr in stage */ |
listfp, /* file pointer to list device */ |
lastst, /* last parsed statement type */ |
oldseg; /* current segment (0, DATASEG, CODESEG) */ |
char |
optimize, /* optimize output of staging buffer? */ |
alarm, /* audible alarm on errors? */ |
monitor, /* monitor function headers? */ |
pause, /* pause for operator on errors? */ |
*symtab, /* symbol table */ |
*litq, /* literal pool */ |
*macn, /* macro name buffer */ |
*macq, /* macro string buffer */ |
*pline, /* parsing buffer */ |
*mline, /* macro buffer */ |
*line, /* ptr to pline or mline */ |
*lptr, /* ptr to current character in "line" */ |
*glbptr, /* global symbol table */ |
*locptr, /* next local symbol table entry */ |
quote[2] = {'"'}, /* literal string for '"' */ |
*cptr, /* work ptrs to any char buffer */ |
*cptr2, |
*cptr3, |
msname[NAMESIZE], /* macro symbol name */ |
ssname[NAMESIZE]; /* static symbol name */ |
int op[16] = { /* p-codes of signed binary operators */ |
OR12, /* level5 */ |
XOR12, /* level6 */ |
AND12, /* level7 */ |
EQ12, NE12, /* level8 */ |
LE12, GE12, LT12, GT12, /* level9 */ |
ASR12, ASL12, /* level10 */ |
ADD12, SUB12, /* level11 */ |
MUL12, DIV12, MOD12 /* level12 */ |
}; |
int op2[16] = { /* p-codes of unsigned binary operators */ |
OR12, /* level5 */ |
XOR12, /* level6 */ |
AND12, /* level7 */ |
EQ12, NE12, /* level8 */ |
LE12u, GE12u, LT12u, GT12u, /* level9 */ |
ASR12, ASL12, /* level10 */ |
ADD12, SUB12, /* level11 */ |
MUL12u, DIV12u, MOD12u /* level12 */ |
}; |
/* |
** execution begins here |
*/ |
main(argc, argv) int argc, *argv; { |
fputs(VERSION, stdout); |
fputs(CRIGHT1, stdout); |
fputs(CRIGHT2, stdout); |
argcs = argc; |
argvs = argv; |
swnext = calloc(SWTABSZ, 1); |
swend = swnext+(SWTABSZ-SWSIZ); |
stage = calloc(STAGESIZE, 2*INTSIZE); |
wqptr = |
wq = calloc(WQTABSZ, INTSIZE); |
litq = calloc(LITABSZ, 1); |
macn = calloc(MACNSIZE, 1); |
macq = calloc(MACQSIZE, 1); |
pline = calloc(LINESIZE, 1); |
mline = calloc(LINESIZE, 1); |
slast = stage+(STAGESIZE*2*INTSIZE); |
symtab = calloc((NUMLOCS*SYMAVG + NUMGLBS*SYMMAX), 1); |
locptr = STARTLOC; |
glbptr = STARTGLB; |
ask(); /* get user options */ |
openfile(); /* and initial input file */ |
preprocess(); /* fetch first line */ |
header(); /* intro code */ |
setcodes(); /* initialize code pointer array */ |
parse(); /* process ALL input */ |
trailer(); /* follow-up code */ |
fclose(output); /* explicitly close output */ |
} |
/******************** high level parsing *******************/ |
/* |
** process all input text |
** |
** At this level, only static declarations, |
** defines, includes and function |
** definitions are legal... |
*/ |
parse() { |
while (eof == 0) { |
if (amatch("extern", 6)) dodeclare(EXTERNAL); |
else if(dodeclare(STATIC)) ; |
else if( match("#asm")) doasm(); |
else if( match("#include")) doinclude(); |
else if( match("#define")) dodefine(); |
else dofunction(); |
blanks(); /* force eof if pending */ |
} |
} |
/* |
** test for global declarations |
*/ |
dodeclare(class) int class; { |
if (amatch("char", 4)) declglb(CHR, class); |
else if(amatch("unsigned", 8)) { |
if (amatch("char", 4)) declglb(UCHR, class); |
else {amatch("int", 3); declglb(UINT, class);} |
} |
else if(amatch("int", 3) |
|| class == EXTERNAL) declglb(INT, class); |
else return 0; |
ns(); |
return 1; |
} |
/* |
** declare a static variable |
*/ |
declglb(type, class) |
int type, class; |
{ |
int id, dim; |
while(1) |
{ |
if(endst()) |
return; /* do line */ |
if(match("*")) |
{ |
id = POINTER; dim = 0; |
} |
else |
{ |
id = VARIABLE; dim = 1; |
} |
if(symname(ssname) == 0) |
illname(); |
if(findglb(ssname)) |
multidef(ssname); |
if(id == VARIABLE) |
{ |
if (match("(")) |
{ |
id = FUNCTION; need(")"); |
} |
else if(match("[")) |
{ |
id = ARRAY; dim = needsub(); |
} |
} |
if (class == EXTERNAL) |
external(ssname, type >> 2, id); |
else if (id != FUNCTION) |
initials(type >> 2, id, dim); |
if(id == POINTER) |
addsym(ssname, id, type, PTRSIZE, 0, &glbptr, class); |
else |
addsym(ssname, id, type, dim * (type >> 2), 0, &glbptr, class); |
if(match(",") == 0) |
return; |
} |
} |
/* |
** initialize global objects |
*/ |
initials(size, ident, dim) int size, ident, dim; { |
int savedim; |
litptr = 0; |
if(dim == 0) dim = -1; /* *... or ...[] */ |
savedim = dim; |
/* public(ident); */ |
if(match("=")) { |
if(match("{")) { |
while(dim) { |
init(size, ident, &dim); |
if(match(",") == 0) break; |
} |
need("}"); |
} |
else init(size, ident, &dim); |
} |
if(savedim == -1 && dim == -1) { |
if(ident == ARRAY) error("need array size"); |
stowlit(0, size = PTRSIZE); |
} |
/* FASM */ |
public(ident); |
if(litptr>0) dumplits(size); |
else if(dim>0) |
{/*In FASM: "<variable>: TIMES <number> D<type> 0" */ |
fputc(':',output); |
} |
dumpzero(size, dim); /* only if dim > 0 */ |
/* FASM */ |
} |
/* |
** evaluate one initializer |
*/ |
init(size, ident, dim) int size, ident, *dim; { |
int value; |
if(string(&value)) { |
if(ident == VARIABLE || size != 1) |
error("must assign to char pointer or char array"); |
*dim -= (litptr - value); |
if(ident == POINTER) point(); |
} |
else if(constexpr(&value)) { |
if(ident == POINTER) error("cannot assign to pointer"); |
stowlit(value, size); |
*dim -= 1; |
} |
} |
/* |
** get required array size |
*/ |
needsub() { |
int val; |
if(match("]")) return 0; /* null size */ |
if(constexpr(&val) == 0) val = 1; |
if(val < 0) { |
error("negative size illegal"); |
val = -val; |
} |
need("]"); /* force single dimension */ |
return val; /* and return size */ |
} |
/* |
** open an include file |
*/ |
doinclude() { |
int i; char str[30]; |
blanks(); /* skip over to name */ |
if(*lptr == '"' || *lptr == '<') ++lptr; |
i = 0; |
while(lptr[i] |
&& lptr[i] != '"' |
&& lptr[i] != '>' |
&& lptr[i] != '\n') { |
str[i] = lptr[i]; |
++i; |
} |
str[i] = NULL; |
if((input2 = fopen(str,"r")) == NULL) { |
input2 = EOF; |
error("open failure on include file"); |
} |
kill(); /* make next read come from new file (if open) */ |
} |
/* |
** define a macro symbol |
*/ |
dodefine() { |
int k; |
if(symname(msname) == 0) { |
illname(); |
kill(); |
return; |
} |
/* |
puts (msname); |
puts (" is #defined\n"); |
*/ |
k = 0; |
if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0) == 0) { |
if(cptr2 = cptr) |
while(*cptr2++ = msname[k++]) ; |
else { |
error("macro name table full"); |
return; |
} |
} |
putint(macptr, cptr+NAMESIZE, 2 /*INTSIZE*/); |
while(white()) gch(); |
while(putmac(gch())); |
if(macptr >= MACMAX) { |
error("macro string queue full"); |
exit(ERRCODE); |
} |
} |
putmac(c) char c; { |
macq[macptr] = c; |
if(macptr < MACMAX) ++macptr; |
return c; |
} |
/* |
** begin a function |
** |
** called from "parse" and tries to make a function |
** out of the following text |
*/ |
dofunction() { |
char *ptr; |
nogo = /* enable goto statements */ |
noloc = /* enable block-local declarations */ |
lastst = /* no statement yet */ |
litptr = 0; /* clear lit pool */ |
litlab = getlabel(); /* label next lit pool */ |
locptr = STARTLOC; /* clear local variables */ |
if(match("void")) blanks(); /* skip "void" & locate header */ |
if(monitor) lout(line, stderr); |
if(symname(ssname) == 0) { |
error("illegal function or declaration"); |
errflag = 0; |
kill(); /* invalidate line */ |
return; |
} |
if(ptr = findglb(ssname)) { /* already in symbol table? */ |
if(ptr[CLASS] == AUTOEXT) |
ptr[CLASS] = STATIC; |
else multidef(ssname); |
} |
else addsym(ssname, FUNCTION, INT, 0, 0, &glbptr, STATIC); |
public(FUNCTION); |
argstk = 0; /* init arg count */ |
if(match("(") == 0) error("no open paren"); |
while(match(")") == 0) { /* then count args */ |
if(symname(ssname)) { |
if(findloc(ssname)) multidef(ssname); |
else { |
addsym(ssname, 0, 0, 0, argstk, &locptr, AUTOMATIC); |
argstk += INTSIZE; |
} |
} |
else { |
error("illegal argument name"); |
skip(); |
} |
blanks(); |
if(streq(lptr,")") == 0 && match(",") == 0) |
error("no comma"); |
if(endst()) break; |
} |
csp = 0; /* preset stack ptr */ |
argtop = argstk+INTSIZE; /* account for the pushed BP */ |
while(argstk) { |
if (amatch("char", 4)) {doargs(CHR); ns();} |
else if(amatch("int", 3)) {doargs(INT); ns();} |
else if(amatch("unsigned", 8)) { |
if (amatch("char", 4)) {doargs(UCHR); ns();} |
else {amatch("int", 3); doargs(UINT); ns();} |
} |
else {error("wrong number of arguments"); break;} |
} |
gen(ENTER, 0); |
statement(); |
if(lastst != STRETURN && lastst != STGOTO) |
gen(RETURN, 0); |
if(litptr) { |
toseg(DATASEG); |
gen(REFm, litlab); |
dumplits(1); /* dump literals */ |
} |
} |
/* |
** declare argument types |
*/ |
doargs(type) int type; { |
int id, sz; |
char c, *ptr; |
while(1) { |
if(argstk == 0) return; /* no arguments */ |
if(decl(type, POINTER, &id, &sz)) { |
if(ptr = findloc(ssname)) { |
ptr[IDENT] = id; |
ptr[TYPE] = type; |
putint(sz, ptr+SIZE, INTSIZE); |
putint(argtop-getint(ptr+OFFSET, INTSIZE), ptr+OFFSET, INTSIZE); |
} |
else error("not an argument"); |
} |
argstk = argstk - INTSIZE; /* cnt down */ |
if(endst()) return; |
if(match(",") == 0) error("no comma"); |
} |
} |
/* |
** parse next local or argument declaration |
*/ |
decl(type, aid, id, sz) |
int type, aid, *id, *sz; |
{ |
int n, p; |
int mod; |
if(match("(")) p = 1; |
else p = 0; |
if(match("*")) {*id = POINTER; *sz = PTRSIZE;} |
else {*id = VARIABLE; *sz = type >> 2;} |
if((n = symname(ssname)) == 0) illname(); |
if(p && match(")")) ; |
if(match("(")) |
{ |
if(!p || *id != POINTER) |
error("try (*...)()"); |
need(")"); |
} |
else if(*id == VARIABLE && match("[")) |
{ |
*id = aid; |
if((*sz *= needsub()) == 0) |
{ |
if(aid == ARRAY) error("need array size"); |
*sz = PTRSIZE; /* size of pointer argument */ |
} |
} |
mod = *sz % ALIGN; |
if (mod) |
{ |
*sz = *sz + (ALIGN-mod); |
} |
return n; |
} |
/******************** start 2nd level parsing *******************/ |
/* |
** statement parser |
*/ |
statement() { |
if(ch == 0 && eof) return; |
else if(amatch("char", 4)) {declloc(CHR); ns();} |
else if(amatch("int", 3)) {declloc(INT); ns();} |
else if(amatch("unsigned", 8)) { |
if (amatch("char", 4)) {declloc(UCHR); ns();} |
else {amatch("int", 3); declloc(UINT); ns();} |
} |
else { |
if(declared >= 0) { |
if(ncmp > 1) nogo = declared; /* disable goto */ |
gen(ADDSP, csp - declared); |
declared = -1; |
} |
if(match("{")) compound(); |
else if(amatch("if", 2)) {doif(); lastst = STIF;} |
else if(amatch("while", 5)) {dowhile(); lastst = STWHILE;} |
else if(amatch("do", 2)) {dodo(); lastst = STDO;} |
else if(amatch("for", 3)) {dofor(); lastst = STFOR;} |
else if(amatch("switch", 6)) {doswitch(); lastst = STSWITCH;} |
else if(amatch("case", 4)) {docase(); lastst = STCASE;} |
else if(amatch("default", 7)) {dodefault(); lastst = STDEF;} |
else if(amatch("goto", 4)) {dogoto(); lastst = STGOTO;} |
else if(dolabel()) lastst = STLABEL; |
else if(amatch("return", 6)) {doreturn(); ns(); lastst = STRETURN;} |
else if(amatch("break", 5)) {dobreak(); ns(); lastst = STBREAK;} |
else if(amatch("continue", 8)) {docont(); ns(); lastst = STCONT;} |
else if(match(";")) errflag = 0; |
else if(match("#asm")) {doasm(); lastst = STASM;} |
else {doexpr(NO); ns(); lastst = STEXPR;} |
} |
return lastst; |
} |
/* |
** declare local variables |
*/ |
declloc(type) int type; { |
int id, sz; |
if(swactive) error("not allowed in switch"); |
if(noloc) error("not allowed with goto"); |
if(declared < 0) error("must declare first in block"); |
while(1) { |
if(endst()) return; |
decl(type, ARRAY, &id, &sz); |
declared += sz; |
addsym(ssname, id, type, sz, csp - declared, &locptr, AUTOMATIC); |
if(match(",") == 0) return; |
} |
} |
compound() { |
int savcsp; |
char *savloc; |
savcsp = csp; |
savloc = locptr; |
declared = 0; /* may now declare local variables */ |
++ncmp; /* new level open */ |
while (match("}") == 0) |
if(eof) { |
error("no final }"); |
break; |
} |
else statement(); /* do one */ |
if(--ncmp /* close current level */ |
&& lastst != STRETURN |
&& lastst != STGOTO) |
gen(ADDSP, savcsp); /* delete local variable space */ |
cptr = savloc; /* retain labels */ |
while(cptr < locptr) { |
cptr2 = nextsym(cptr); |
if(cptr[IDENT] == LABEL) { |
while(cptr < cptr2) *savloc++ = *cptr++; |
} |
else cptr = cptr2; |
} |
locptr = savloc; /* delete local symbols */ |
declared = -1; /* may not declare variables */ |
} |
doif() { |
int flab1, flab2; |
test(flab1 = getlabel(), YES); /* get expr, and branch false */ |
statement(); /* if true, do a statement */ |
if(amatch("else", 4) == 0) { /* if...else ? */ |
/* simple "if"...print false label */ |
gen(LABm, flab1); |
return; /* and exit */ |
} |
flab2 = getlabel(); |
if(lastst != STRETURN && lastst != STGOTO) |
gen(JMPm, flab2); |
gen(LABm, flab1); /* print false label */ |
statement(); /* and do "else" clause */ |
gen(LABm, flab2); /* print true label */ |
} |
dowhile() { |
int wq[4]; /* allocate local queue */ |
addwhile(wq); /* add entry to queue for "break" */ |
gen(LABm, wq[WQLOOP]); /* loop label */ |
test(wq[WQEXIT], YES); /* see if true */ |
statement(); /* if so, do a statement */ |
gen(JMPm, wq[WQLOOP]); /* loop to label */ |
gen(LABm, wq[WQEXIT]); /* exit label */ |
delwhile(); /* delete queue entry */ |
} |
dodo() { |
int wq[4]; |
addwhile(wq); |
gen(LABm, wq[WQLOOP]); |
statement(); |
need("while"); |
test(wq[WQEXIT], YES); |
gen(JMPm, wq[WQLOOP]); |
gen(LABm, wq[WQEXIT]); |
delwhile(); |
ns(); |
} |
dofor() { |
int wq[4], lab1, lab2; |
addwhile(wq); |
lab1 = getlabel(); |
lab2 = getlabel(); |
need("("); |
if(match(";") == 0) { |
doexpr(NO); /* expr 1 */ |
ns(); |
} |
gen(LABm, lab1); |
if(match(";") == 0) { |
test(wq[WQEXIT], NO); /* expr 2 */ |
ns(); |
} |
gen(JMPm, lab2); |
gen(LABm, wq[WQLOOP]); |
if(match(")") == 0) { |
doexpr(NO); /* expr 3 */ |
need(")"); |
} |
gen(JMPm, lab1); |
gen(LABm, lab2); |
statement(); |
gen(JMPm, wq[WQLOOP]); |
gen(LABm, wq[WQEXIT]); |
delwhile(); |
} |
doswitch() { |
int wq[4], endlab, swact, swdef, *swnex, *swptr; |
swact = swactive; |
swdef = swdefault; |
swnex = swptr = swnext; |
addwhile(wq); |
*(wqptr + WQLOOP - WQSIZ) = 0; |
need("("); |
doexpr(YES); /* evaluate switch expression */ |
need(")"); |
swdefault = 0; |
swactive = 1; |
gen(JMPm, endlab = getlabel()); |
statement(); /* cases, etc. */ |
gen(JMPm, wq[WQEXIT]); |
gen(LABm, endlab); |
gen(SWITCH, 0); /* match cases */ |
while(swptr < swnext) { |
gen(NEARm, *swptr++); |
#ifdef INT32 |
gen(DWORDn, *swptr++); /* case value */ |
#else |
gen(WORDn, *swptr++); /* case value */ |
#endif |
} |
#ifdef INT32 |
gen(DWORDn, 0); |
#else |
gen(WORDn, 0); |
#endif |
if(swdefault) gen(JMPm, swdefault); |
gen(LABm, wq[WQEXIT]); |
delwhile(); |
swnext = swnex; |
swdefault = swdef; |
swactive = swact; |
} |
docase() { |
if(swactive == 0) error("not in switch"); |
if(swnext > swend) { |
error("too many cases"); |
return; |
} |
gen(LABm, *swnext++ = getlabel()); |
constexpr(swnext++); |
need(":"); |
} |
dodefault() { |
if(swactive) { |
if(swdefault) error("multiple defaults"); |
} |
else error("not in switch"); |
need(":"); |
gen(LABm, swdefault = getlabel()); |
} |
dogoto() { |
if(nogo > 0) error("not allowed with block-locals"); |
else noloc = 1; |
if(symname(ssname)) gen(JMPm, addlabel(NO)); |
else error("bad label"); |
ns(); |
} |
dolabel() { |
char *savelptr; |
blanks(); |
savelptr = lptr; |
if(symname(ssname)) { |
if(gch() == ':') { |
gen(LABm, addlabel(YES)); |
return 1; |
} |
else bump(savelptr-lptr); |
} |
return 0; |
} |
addlabel(def) int def; { |
if(cptr = findloc(ssname)) { |
if(cptr[IDENT] != LABEL) error("not a label"); |
else if(def) { |
if(cptr[TYPE]) error("duplicate label"); |
else cptr[TYPE] = YES; |
} |
} |
else cptr = addsym(ssname, LABEL, def, 0, getlabel(), &locptr, LABEL); |
return (getint(cptr+OFFSET, INTSIZE)); |
} |
doreturn() { |
int savcsp; |
if(endst() == 0) doexpr(YES); |
savcsp = csp; |
gen(RETURN, 0); |
csp = savcsp; |
} |
dobreak() { |
int *ptr; |
if((ptr = readwhile(wqptr)) == 0) return; |
gen(ADDSP, ptr[WQSP]); |
gen(JMPm, ptr[WQEXIT]); |
} |
docont() { |
int *ptr; |
ptr = wqptr; |
while (1) { |
if((ptr = readwhile(ptr)) == 0) return; |
if(ptr[WQLOOP]) break; |
} |
gen(ADDSP, ptr[WQSP]); |
gen(JMPm, ptr[WQLOOP]); |
} |
doasm() { |
ccode = 0; /* mark mode as "asm" */ |
while (1) { |
inline(); |
if(match("#endasm")) break; |
if(eof)break; |
fputs(line, output); |
} |
kill(); |
ccode = 1; |
} |
doexpr(use) int use; { |
int constant, val; |
int *before, *start; |
usexpr = use; /* tell isfree() whether expr value is used */ |
while(1) { |
setstage(&before, &start); |
expression(&constant, &val); |
clearstage(before, start); |
if(ch != ',') break; |
bump(1); |
} |
usexpr = YES; /* return to normal value */ |
} |
/******************** miscellaneous functions *******************/ |
/* |
** get run options |
*/ |
ask() |
{ |
int i; |
int j; |
i = listfp = nxtlab = 0; |
output = stdout; |
#ifdef LATER |
optimize = YES; // Not working for 32 bit int's yer |
#else |
optimize = NO; |
#endif |
alarm = monitor = pause = NO; |
line = mline; |
while(getarg(++i, line, LINESIZE, argcs, argvs) != EOF) |
{ |
if(line[0] != '-' && line[0] != '/') |
continue; |
if(toupper(line[1]) == 'L' // List |
&& isdigit(line[2]) |
&& line[3] <= ' ') |
{ |
listfp = line[2]-'0'; |
continue; |
} |
if(toupper(line[1]) == 'N' // No optimize |
&& toupper(line[2]) == 'O' |
&& line[3] <= ' ') |
{ |
optimize = NO; |
continue; |
} |
if(toupper(line[1]) == 'D') |
{ |
j = 0; |
ch = line[j+2]; |
lptr = line + j+2; |
/* |
while (line[j+2] != ' ') |
{ |
if (j < (NAMEMAX-1)) |
{ |
msname[j] = line[j+1]; |
++j; |
} |
else |
{ |
break; |
} |
} |
msname[j] = '\0'; |
*/ |
dodefine (); |
continue; |
} |
if(line[2] <= ' ') |
{ |
if(toupper(line[1]) == 'A') {alarm = YES; continue;} |
if(toupper(line[1]) == 'M') {monitor = YES; continue;} |
if(toupper(line[1]) == 'P') {pause = YES; continue;} |
} |
fputs("usage: cc [file]... [-m] [-a] [-p] [-l#] [-no] [-d<id>]\n", stderr); |
fputs(" -m monitor\n", stderr); |
fputs(" -a alarm\n", stderr); |
fputs(" -p pause\n", stderr); |
fputs(" -l# list\n", stderr); |
fputs(" -no no optimize\n", stderr); |
fputs(" -d<id> pre-#define id\n", stderr); |
exit(ERRCODE); |
} |
} |
/* |
** input and output file opens |
*/ |
openfile() { /* entire function revised */ |
char outfn[15]; |
int i, j, ext; |
input = EOF; |
while(getarg(++filearg, pline, LINESIZE, argcs, argvs) != EOF) { |
if(pline[0] == '-' || pline[0] == '/') continue; |
ext = NO; |
i = -1; |
j = 0; |
while(pline[++i]) { |
if(pline[i] == '.') { |
ext = YES; |
break; |
} |
if(j < 10) outfn[j++] = pline[i]; |
} |
if(!ext) strcpy(pline + i, ".C"); |
input = mustopen(pline, "r"); |
#ifdef _MSC_VER |
if(!files) { |
strcpy(outfn + j, ".ASM"); |
output = mustopen(outfn, "w"); |
} |
#else |
if(!files /* && iscons(stdout)*/) { |
strcpy(outfn + j, ".ASM"); |
output = mustopen(outfn, "w"); |
} |
#endif |
files = YES; |
kill(); |
return; |
} |
if(files++) eof = YES; |
else input = stdin; |
kill(); |
} |
/* |
** open a file with error checking |
*/ |
mustopen(fn, mode) char *fn, *mode; { |
int fd; |
if(fd = fopen(fn, mode)) return fd; |
fputs("open error on ", stderr); |
lout(fn, stderr); |
exit(ERRCODE); |
} |
/programs/develop/scc/cc2.c |
---|
0,0 → 1,557 |
/* |
** Small-C Compiler -- Part 2 -- Front End and Miscellaneous. |
** Copyright 1982, 1983, 1985, 1988 J. E. Hendrix |
** Copyright 1998 H T Walheim |
** All rights reserved. |
*/ |
#include <stdio.h> |
#include "cc.h" |
extern char |
*symtab, *macn, *macq, *pline, *mline, optimize, |
alarm, *glbptr, *line, *lptr, *cptr, *cptr2, *cptr3, |
*locptr, msname[NAMESIZE], pause, quote[2]; |
extern int |
*wq, ccode, ch, csp, eof, errflag, iflevel, |
input, input2, listfp, macptr, nch, |
nxtlab, op[16], opindex, opsize, output, pptr, |
skiplevel, *wqptr; |
/********************** input functions **********************/ |
preprocess() { |
int k; |
char c; |
if(ccode) { |
line = mline; |
ifline(); |
if(eof) return; |
} |
else { |
inline(); |
return; |
} |
pptr = -1; |
while(ch != NEWLINE && ch) { |
if(white()) { |
keepch(' '); |
while(white()) gch(); |
} |
else if(ch == '"') { |
keepch(ch); |
gch(); |
while(ch != '"' || (*(lptr-1) == 92 && *(lptr-2) != 92)) { |
if(ch == NULL) { |
error("no quote"); |
break; |
} |
keepch(gch()); |
} |
gch(); |
keepch('"'); |
} |
else if(ch == 39) { |
keepch(39); |
gch(); |
while(ch != 39 || (*(lptr-1) == 92 && *(lptr-2) != 92)) { |
if(ch == NULL) { |
error("no apostrophe"); |
break; |
} |
keepch(gch()); |
} |
gch(); |
keepch(39); |
} |
else if(ch == '/' && nch == '*') |
{ |
bump(2); |
while((ch == '*' && nch == '/') == 0) |
{ |
if(ch) |
bump(1); |
else |
{ |
ifline(); |
if(eof) |
break; |
} |
} |
bump(2); |
} |
else if(ch == '/' && nch == '/') |
{ |
bump(2); |
while(ch != NEWLINE) |
{ |
if(ch) |
bump(1); |
else |
{ |
if(eof) |
break; |
} |
} |
bump(1); |
} |
else if(an(ch)) { |
k = 0; |
while(an(ch) && k < NAMEMAX) { |
msname[k++] = ch; |
gch(); |
} |
msname[k] = NULL; |
if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0)) { |
k = getint(cptr+NAMESIZE, 2/*INTSIZE*/); |
while(c = macq[k++]) keepch(c); |
while(an(ch)) gch(); |
} |
else { |
k = 0; |
while(c = msname[k++]) keepch(c); |
} |
} |
else keepch(gch()); |
} |
if(pptr >= LINEMAX) error("line too long"); |
keepch(NULL); |
line = pline; |
bump(0); |
} |
keepch(c) char c; { |
if(pptr < LINEMAX) pline[++pptr] = c; |
} |
ifline() { |
while(1) { |
inline(); |
if(eof) return; |
if(match("#ifdef")) { |
++iflevel; |
if(skiplevel) continue; |
symname(msname); |
if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0) == 0) |
skiplevel = iflevel; |
continue; |
} |
if(match("#ifndef")) { |
++iflevel; |
if(skiplevel) continue; |
symname(msname); |
if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0)) |
skiplevel = iflevel; |
continue; |
} |
if(match("#else")) { |
if(iflevel) { |
if(skiplevel == iflevel) skiplevel = 0; |
else if(skiplevel == 0) skiplevel = iflevel; |
} |
else noiferr(); |
continue; |
} |
if(match("#endif")) { |
if(iflevel) { |
if(skiplevel == iflevel) skiplevel = 0; |
--iflevel; |
} |
else noiferr(); |
continue; |
} |
if(skiplevel) continue; |
if(ch == 0) continue; |
break; |
} |
} |
inline() { /* numerous revisions */ |
int k, unit; |
if(input == EOF) openfile(); |
if(eof) return; |
if((unit = input2) == EOF) unit = input; |
if(fgets(line, LINEMAX, unit) == NULL) { |
fclose(unit); |
if(input2 != EOF) |
input2 = EOF; |
else input = EOF; |
*line = NULL; |
} |
else if(listfp) |
{ |
if(listfp == output) fputc(';', output); |
fputs(line, listfp); |
} |
#ifdef _MSC_VER |
else |
{ |
fputc(';', output); |
fputs(line, output); |
} |
#endif |
bump(0); |
} |
inbyte() { |
while(ch == 0) { |
if(eof) return 0; |
preprocess(); |
} |
return gch(); |
} |
/********************* scanning functions ********************/ |
/* |
** test if next input string is legal symbol name |
*/ |
symname(sname) char *sname; { |
int k;char c; |
blanks(); |
if(alpha(ch) == 0) return (*sname = 0); |
k = 0; |
while(an(ch)) { |
sname[k] = gch(); |
if(k < NAMEMAX) ++k; |
} |
sname[k] = 0; |
return 1; |
} |
need(str) char *str; { |
if(match(str) == 0) error("missing token"); |
} |
ns() { |
if(match(";") == 0) error("no semicolon"); |
else errflag = 0; |
} |
match(lit) char *lit; { |
int k; |
blanks(); |
if(k = streq(lptr, lit)) { |
bump(k); |
return 1; |
} |
return 0; |
} |
streq(str1, str2) char str1[], str2[]; { |
int k; |
k = 0; |
while (str2[k]) { |
if(str1[k] != str2[k]) return 0; |
++k; |
} |
return k; |
} |
amatch(lit, len) char *lit; int len; { |
int k; |
blanks(); |
if(k = astreq(lptr, lit, len)) { |
bump(k); |
return 1; |
} |
return 0; |
} |
astreq(str1, str2, len) char str1[], str2[]; int len; { |
int k; |
k = 0; |
while (k < len) { |
if(str1[k] != str2[k]) break; |
/* |
** must detect end of symbol table names terminated by |
** symbol length in binary |
*/ |
if(str2[k] < ' ') break; |
if(str1[k] < ' ') break; |
++k; |
} |
if(an(str1[k]) || an(str2[k])) return 0; |
return k; |
} |
nextop(list) char *list; { |
char op[4]; |
opindex = 0; |
blanks(); |
while(1) { |
opsize = 0; |
while(*list > ' ') op[opsize++] = *list++; |
op[opsize] = 0; |
if(opsize = streq(lptr, op)) |
if(*(lptr+opsize) != '=' && |
*(lptr+opsize) != *(lptr+opsize-1)) |
return 1; |
if(*list) { |
++list; |
++opindex; |
} |
else return 0; |
} |
} |
blanks() { |
while(1) { |
while(ch) { |
if(white()) gch(); |
else return; |
} |
if(line == mline) return; |
preprocess(); |
if(eof) break; |
} |
} |
white() { |
return (*lptr <= ' ' && *lptr); |
} |
gch() { |
int c; |
if(c = ch) bump(1); |
return c; |
} |
bump(n) int n; { |
if(n) lptr += n; |
else lptr = line; |
if(ch = nch = *lptr) nch = *(lptr+1); |
} |
kill() { |
*line = 0; |
bump(0); |
} |
skip() { |
if(an(inbyte())) |
while(an(ch)) gch(); |
else while(an(ch) == 0) { |
if(ch == 0) break; |
gch(); |
} |
blanks(); |
} |
endst() { |
blanks(); |
return (streq(lptr, ";") || ch == 0); |
} |
/*********** symbol table management functions ***********/ |
addsym(sname, id, type, size, value, lgpp, class) |
char *sname, id, type; |
int size, value, *lgpp, class; |
{ |
if(lgpp == &glbptr) |
{ |
if(cptr2 = findglb(sname)) |
return cptr2; |
if(cptr == 0) |
{ |
error("global symbol table overflow"); |
return 0; |
} |
} |
else |
{ |
if(locptr > (ENDLOC-SYMMAX)) |
{ |
error("local symbol table overflow"); |
exit(ERRCODE); |
} |
cptr = *lgpp; |
} |
cptr[IDENT] = id; |
cptr[TYPE] = type; |
cptr[CLASS] = class; |
putint(size, cptr + SIZE, INTSIZE); |
putint(value, cptr + OFFSET, INTSIZE); |
cptr3 = cptr2 = cptr + NAME; |
while(an(*sname)) |
*cptr2++ = *sname++; |
if(lgpp == &locptr) |
{ |
*cptr2 = cptr2 - cptr3; /* set length */ |
*lgpp = ++cptr2; |
} |
return cptr; |
} |
/* |
** search for symbol match |
** on return cptr points to slot found or empty slot |
*/ |
search(sname, buf, len, end, max, off) |
char *sname, *buf, *end; int len, max, off; { |
cptr = |
cptr2 = buf+((hash(sname)%(max-1))*len); |
while(*cptr != NULL) { |
if(astreq(sname, cptr+off, NAMEMAX)) return 1; |
if((cptr = cptr+len) >= end) cptr = buf; |
if(cptr == cptr2) return (cptr = 0); |
} |
return 0; |
} |
hash(sname) char *sname; { |
int i, c; |
i = 0; |
while(c = *sname++) i = (i << 1) + c; |
return i; |
} |
findglb(sname) char *sname; { |
if(search(sname, STARTGLB, SYMMAX, ENDGLB, NUMGLBS, NAME)) |
return cptr; |
return 0; |
} |
findloc(sname) char *sname; { |
cptr = locptr - 1; /* search backward for block locals */ |
while(cptr > STARTLOC) { |
cptr = cptr - *cptr; |
if(astreq(sname, cptr, NAMEMAX)) return (cptr - NAME); |
cptr = cptr - NAME - 1; |
} |
return 0; |
} |
nextsym(entry) char *entry; { |
entry = entry + NAME; |
while(*entry++ >= ' '); /* find length byte */ |
return entry; |
} |
/******** while queue management functions *********/ |
addwhile(ptr) int ptr[]; { |
int k; |
ptr[WQSP] = csp; /* and stk ptr */ |
ptr[WQLOOP] = getlabel(); /* and looping label */ |
ptr[WQEXIT] = getlabel(); /* and exit label */ |
if(wqptr == WQMAX) { |
error("control statement nesting limit"); |
exit(ERRCODE); |
} |
k = 0; |
while (k < WQSIZ) *wqptr++ = ptr[k++]; |
} |
readwhile(ptr) int *ptr; { |
if(ptr <= wq) { |
error("out of context"); |
return 0; |
} |
else return (ptr - WQSIZ); |
} |
delwhile() { |
if(wqptr > wq) wqptr -= WQSIZ; |
} |
/****************** utility functions ********************/ |
/* |
** test if c is alphabetic |
*/ |
alpha(c) char c; { |
return (isalpha(c) || c == '_'); |
} |
/* |
** test if given character is alphanumeric |
*/ |
an(c) char c; { |
return (alpha(c) || isdigit(c)); |
} |
/* |
** return next avail internal label number |
*/ |
getlabel() { |
return(++nxtlab); |
} |
/* |
** get integer of length len from address addr |
** (byte sequence set by "putint") |
*/ |
getint(addr, len) char *addr; int len; { |
int i; |
i = *(addr + --len); /* high order byte sign extended */ |
while(len--) i = (i << 8) | *(addr + len) & 255; |
return i; |
} |
/* |
** put integer i of length len into address addr |
** (low byte first) |
*/ |
putint(i, addr, len) char *addr; int i, len; { |
while(len--) { |
*addr++ = i; |
i = i >> 8; |
} |
} |
lout(line, fd) char *line; int fd; { |
fputs(line, fd); |
fputc(NEWLINE, fd); |
} |
/******************* error functions *********************/ |
illname() { |
error("illegal symbol"); |
skip(); |
} |
multidef(sname) char *sname; { |
error("already defined"); |
} |
needlval() { |
error("must be lvalue"); |
} |
noiferr() { |
error("no matching #if..."); |
errflag = 0; |
} |
error(msg) |
char msg[]; |
{ |
if(errflag) |
return; |
else |
errflag = 1; |
lout(line, stderr); |
errout(msg, stderr); |
if(alarm) |
fputc(7, stderr); |
if(pause) |
while(fgetc(stderr) != NEWLINE); |
if(listfp > 0) |
errout(msg, listfp); |
} |
errout(msg, fp) char msg[]; int fp; { |
int k; |
k = line+2; |
while(k++ <= lptr) fputc(' ', fp); |
lout("/\\", fp); |
fputs("**** ", fp); lout(msg, fp); |
} |
/programs/develop/scc/cc3.c |
---|
0,0 → 1,1093 |
/* |
** Small-C Compiler -- Part 3 -- Expression Analyzer. |
** Copyright 1982, 1983, 1985, 1988 J. E. Hendrix |
** Copyright 1998 H T Walheim |
** All rights reserved. |
*/ |
#include <stdio.h> |
#include "cc.h" |
#define ST 0 /* is[ST] - symbol table address, else 0 */ |
#define TI 1 /* is[TI] - type of indirect obj to fetch, else 0 */ |
#define TA 2 /* is[TA] - type of address, else 0 */ |
#define TC 3 /* is[TC] - type of constant (INT or UINT), else 0 */ |
#define CV 4 /* is[CV] - value of constant (+ auxiliary uses) */ |
#define OP 5 /* is[OP] - code of highest/last binary operator */ |
#define SA 6 /* is[SA] - stage address of "op 0" code, else 0 */ |
extern char |
*litq, *glbptr, *lptr, ssname[NAMESIZE], quote[2]; |
extern int |
ch, csp, litlab, litptr, nch, op[16], op2[16], |
opindex, opsize, *snext; |
/***************** lead-in functions *******************/ |
constexpr(val) int *val; { |
int constant; |
int *before, *start; |
setstage(&before, &start); |
expression(&constant, val); |
clearstage(before, 0); /* scratch generated code */ |
if(constant == 0) error("must be constant expression"); |
return constant; |
} |
null_is (is) |
int is[7]; |
{ |
int i; |
for (i = 0; i < 7; ++i) |
{ |
is[i] = 0; /* <-- */ |
} |
} |
expression(con, val) int *con, *val; |
{ |
int i; |
int is[7]; |
null_is (is); |
if(level1(is)) fetch(is); |
*con = is[TC]; |
*val = is[CV]; |
} |
test(label, parens) int label, parens; { |
int is[7]; |
int *before, *start; |
null_is (is); |
if(parens) need("("); |
while(1) { |
setstage(&before, &start); |
if(level1(is)) fetch(is); |
if(match(",")) clearstage(before, start); |
else break; |
} |
if(parens) need(")"); |
if(is[TC]) { /* constant expression */ |
clearstage(before, 0); |
if(is[CV]) return; |
gen(JMPm, label); |
return; |
} |
if(is[SA]) { /* stage address of "oper 0" code */ |
switch(is[OP]) { /* operator code */ |
case EQ12: |
case LE12u: zerojump(EQ10f, label, is); break; |
case NE12: |
case GT12u: zerojump(NE10f, label, is); break; |
case GT12: zerojump(GT10f, label, is); break; |
case GE12: zerojump(GE10f, label, is); break; |
case GE12u: clearstage(is[SA], 0); break; |
case LT12: zerojump(LT10f, label, is); break; |
case LT12u: zerojump(JMPm, label, is); break; |
case LE12: zerojump(LE10f, label, is); break; |
default: gen(NE10f, label); break; |
} |
} |
else gen(NE10f, label); |
clearstage(before, start); |
} |
/* |
** test primary register against zero and jump if false |
*/ |
zerojump(oper, label, is) int oper, label, is[]; { |
clearstage(is[SA], 0); /* purge conventional code */ |
gen(oper, label); |
} |
/***************** precedence levels ******************/ |
#ifdef _MSC_VER |
level2(); |
level3(); |
level4(); |
level5(); |
level6(); |
level7(); |
level8(); |
level9(); |
level10(); |
level11(); |
level12(); |
level13(); |
#endif |
level1(is) int is[]; { |
int k, is2[7], is3[2], oper, oper2; |
null_is (is2); |
null_is (is3); |
k = down1(level2, is); |
if(is[TC]) |
{ |
#ifdef INT32 |
gen(GETd1n, is[CV]); |
#else |
gen(GETw1n, is[CV]); |
#endif |
} |
if(match("|=")) {oper = oper2 = OR12;} |
else if(match("^=")) {oper = oper2 = XOR12;} |
else if(match("&=")) {oper = oper2 = AND12;} |
else if(match("+=")) {oper = oper2 = ADD12;} |
else if(match("-=")) {oper = oper2 = SUB12;} |
else if(match("*=")) {oper = MUL12; oper2 = MUL12u;} |
else if(match("/=")) {oper = DIV12; oper2 = DIV12u;} |
else if(match("%=")) {oper = MOD12; oper2 = MOD12u;} |
else if(match(">>=")) {oper = oper2 = ASR12;} |
else if(match("<<=")) {oper = oper2 = ASL12;} |
else if(match("=")) {oper = oper2 = 0;} |
else return k; |
/* have an assignment operator */ |
if(k == 0) { |
needlval(); |
return 0; |
} |
is3[ST] = is[ST]; |
is3[TI] = is[TI]; |
if(is[TI]) { /* indirect target */ |
if(oper) { /* ?= */ |
gen(PUSH1, 0); /* save address */ |
fetch(is); /* fetch left side */ |
} |
down2(oper, oper2, level1, is, is2); /* parse right side */ |
if(oper) gen(POP2, 0); /* retrieve address */ |
} |
else { /* direct target */ |
if(oper) { /* ?= */ |
fetch(is); /* fetch left side */ |
down2(oper, oper2, level1, is, is2); /* parse right side */ |
} |
else { /* = */ |
if(level1(is2)) fetch(is2); /* parse right side */ |
} |
} |
store(is3); /* store result */ |
return 0; |
} |
level2(is1) int is1[]; { |
int is2[7], is3[7], k, flab, endlab, *before, *after; |
null_is (is2); |
null_is (is3); |
k = down1(level3, is1); /* expression 1 */ |
if(match("?") == 0) return k; |
dropout(k, NE10f, flab = getlabel(), is1); |
if(down1(level2, is2)) fetch(is2); /* expression 2 */ |
else if(is2[TC]) |
{ |
#ifdef INT32 |
gen(GETd1n, is2[CV]); |
#else |
gen(GETw1n, is2[CV]); |
#endif |
} |
need(":"); |
gen(JMPm, endlab = getlabel()); |
gen(LABm, flab); |
if(down1(level2, is3)) fetch(is3); /* expression 3 */ |
else if(is3[TC]) |
{ |
#ifdef INT32 |
gen(GETd1n, is3[CV]); |
#else |
gen(GETw1n, is3[CV]); |
#endif |
} |
gen(LABm, endlab); |
is1[TC] = is1[CV] = 0; |
if(is2[TC] && is3[TC]) { /* expr1 ? const2 : const3 */ |
is1[TA] = is1[TI] = is1[SA] = 0; |
} |
else if(is3[TC]) { /* expr1 ? var2 : const3 */ |
is1[TA] = is2[TA]; |
is1[TI] = is2[TI]; |
is1[SA] = is2[SA]; |
} |
else if((is2[TC]) /* expr1 ? const2 : var3 */ |
|| (is2[TA] == is3[TA])) { /* expr1 ? same2 : same3 */ |
is1[TA] = is3[TA]; |
is1[TI] = is3[TI]; |
is1[SA] = is3[SA]; |
} |
else error("mismatched expressions"); |
return 0; |
} |
level3 (is) int is[]; {return skim("||", EQ10f, 1, 0, level4, is);} |
level4 (is) int is[]; {return skim("&&", NE10f, 0, 1, level5, is);} |
level5 (is) int is[]; {return down("|", 0, level6, is);} |
level6 (is) int is[]; {return down("^", 1, level7, is);} |
level7 (is) int is[]; {return down("&", 2, level8, is);} |
level8 (is) int is[]; {return down("== !=", 3, level9, is);} |
level9 (is) int is[]; {return down("<= >= < >", 5, level10, is);} |
level10(is) int is[]; {return down(">> <<", 9, level11, is);} |
level11(is) int is[]; {return down("+ -", 11, level12, is);} |
level12(is) int is[]; {return down("* / %", 13, level13, is);} |
level13(is) int is[]; { |
int k; |
char *ptr; |
if(match("++")) { /* ++lval */ |
if(level13(is) == 0) { |
needlval(); |
return 0; |
} |
step(rINC1, is, 0); |
return 0; |
} |
else if(match("--")) { /* --lval */ |
if(level13(is) == 0) { |
needlval(); |
return 0; |
} |
step(rDEC1, is, 0); |
return 0; |
} |
else if(match("~")) { /* ~ */ |
if(level13(is)) fetch(is); |
gen(COM1, 0); |
is[CV] = ~ is[CV]; |
return (is[SA] = 0); |
} |
else if(match("!")) { /* ! */ |
if(level13(is)) fetch(is); |
gen(LNEG1, 0); |
is[CV] = ! is[CV]; |
return (is[SA] = 0); |
} |
else if(match("-")) { /* unary - */ |
if(level13(is)) fetch(is); |
gen(ANEG1, 0); |
is[CV] = -is[CV]; |
return (is[SA] = 0); |
} |
else if(match("*")) { /* unary * */ |
if(level13(is)) fetch(is); |
if(ptr = is[ST]) is[TI] = ptr[TYPE]; |
else is[TI] = INT; |
is[SA] = /* no (op 0) stage address */ |
is[TA] = /* not an address */ |
is[TC] = 0; /* not a constant */ |
is[CV] = 1; /* omit fetch() on func call */ |
return 1; |
} |
else if(amatch("sizeof", 6)) { /* sizeof() */ |
int sz, p; char *ptr, sname[NAMESIZE]; |
if(match("(")) p = 1; |
else p = 0; |
sz = 0; |
if (amatch("unsigned", 8)) sz = INTSIZE; |
if (amatch("int", 3)) sz = INTSIZE; |
else if(amatch("char", 4)) sz = 1; |
if(sz) {if(match("*")) sz = PTRSIZE;} |
else if(symname(sname) |
&& ((ptr = findloc(sname)) || |
(ptr = findglb(sname))) |
&& ptr[IDENT] != FUNCTION |
&& ptr[IDENT] != LABEL) sz = getint(ptr+SIZE, INTSIZE); |
else if(sz == 0) error("must be object or type"); |
if(p) need(")"); |
is[TC] = INT; |
is[CV] = sz; |
is[TA] = is[TI] = is[ST] = 0; |
return 0; |
} |
else if(match("&")) { /* unary & */ |
if(level13(is) == 0) { |
error("illegal address"); |
return 0; |
} |
ptr = is[ST]; |
is[TA] = ptr[TYPE]; |
if(is[TI]) return 0; |
gen(POINT1m, ptr); |
is[TI] = ptr[TYPE]; |
return 0; |
} |
else { |
k = level14(is); |
if(match("++")) { /* lval++ */ |
if(k == 0) { |
needlval(); |
return 0; |
} |
step(rINC1, is, rDEC1); |
return 0; |
} |
else if(match("--")) { /* lval-- */ |
if(k == 0) { |
needlval(); |
return 0; |
} |
step(rDEC1, is, rINC1); |
return 0; |
} |
else return k; |
} |
} |
level14(is) int *is; { |
int k, consta, val; |
char *ptr, *before, *start; |
k = primary(is); |
ptr = is[ST]; |
blanks(); |
if(ch == '[' || ch == '(') { |
int is2[7]; /* allocate only if needed */ |
null_is (is2); |
while(1) { |
if(match("[")) { /* [subscript] */ |
if(ptr == 0) { |
error("can't subscript"); |
skip(); |
need("]"); |
return 0; |
} |
if(is[TA]) {if(k) fetch(is);} |
else {error("can't subscript"); k = 0;} |
setstage(&before, &start); |
is2[TC] = 0; |
down2(0, 0, level1, is2, is2); |
need("]"); |
if(is2[TC]) { |
clearstage(before, 0); |
if(is2[CV]) |
{ /* only add if non-zero */ |
if(ptr[TYPE] >> 2 == BPD) |
{ |
#ifdef INT32 |
gen(GETd2n, is2[CV] << LBPD); |
#else |
gen(GETw2n, is2[CV] << LBPD); |
#endif |
} |
else if(ptr[TYPE] >> 2 == BPW) |
{ |
#ifdef INT32 |
gen(GETd2n, is2[CV] << LBPW); |
#else |
gen(GETw2n, is2[CV] << LBPW); |
#endif |
} |
else |
{ |
#ifdef INT32 |
gen(GETd2n, is2[CV]); |
#else |
gen(GETw2n, is2[CV]); |
#endif |
} |
gen(ADD12, 0); |
} |
} |
else |
{ |
if(ptr[TYPE] >> 2 == BPD) |
{ |
gen(DBL1, 0); |
gen(DBL1, 0); |
} |
else if(ptr[TYPE] >> 2 == BPW) |
{ |
gen(DBL1, 0); |
} |
gen(ADD12, 0); |
} |
is[TA] = 0; |
is[TI] = ptr[TYPE]; |
k = 1; |
} |
else if(match("(")) { /* function(...) */ |
if(ptr == 0) callfunc(0); |
else if(ptr[IDENT] != FUNCTION) { |
if(k && !is[CV]) fetch(is); |
callfunc(0); |
} |
else callfunc(ptr); |
k = is[ST] = is[TC] = is[CV] = 0; |
} |
else return k; |
} |
} |
if(ptr && ptr[IDENT] == FUNCTION) { |
gen(POINT1m, ptr); |
is[ST] = 0; |
return 0; |
} |
return k; |
} |
primary(is) int *is; { |
char *ptr, sname[NAMESIZE]; |
int k; |
if(match("(")) { /* (subexpression) */ |
do k = level1(is); while(match(",")); |
need(")"); |
return k; |
} |
putint(0, is, 7 << LBPW); /* clear "is" array */ |
if(symname(sname)) { /* is legal symbol */ |
if(ptr = findloc(sname)) { /* is local */ |
if(ptr[IDENT] == LABEL) { |
experr(); |
return 0; |
} |
gen(POINT1s, getint(ptr+OFFSET, INTSIZE)); |
is[ST] = ptr; |
is[TI] = ptr[TYPE]; |
if(ptr[IDENT] == ARRAY) { |
is[TA] = ptr[TYPE]; |
return 0; |
} |
if(ptr[IDENT] == POINTER) { |
is[TI] = UINT; |
is[TA] = ptr[TYPE]; |
} |
return 1; |
} |
if(ptr = findglb(sname)) { /* is global */ |
is[ST] = ptr; |
if(ptr[IDENT] != FUNCTION) { |
if(ptr[IDENT] == ARRAY) { |
gen(POINT1m, ptr); |
is[TI] = |
is[TA] = ptr[TYPE]; |
return 0; |
} |
if(ptr[IDENT] == POINTER) |
is[TA] = ptr[TYPE]; |
return 1; |
} |
} |
else is[ST] = addsym(sname, FUNCTION, INT, 0, 0, &glbptr, AUTOEXT); |
return 0; |
} |
if(constant(is) == 0) experr(); |
return 0; |
} |
experr() { |
error("invalid expression"); |
#ifdef INT32 |
gen(GETd1n, 0); |
#else |
gen(GETw1n, 0); |
#endif |
skip(); |
} |
/* attempt at right to left - do it later */ |
#ifdef LATER |
pushargs (ptr, nargs) |
char *ptr; |
int nargs; |
{ |
if (streq(lptr, ")") != 0) |
return; |
if(endst()) |
return; |
if(ptr) |
{ |
expression(&consta, &val); |
gen(PUSH1, 0); |
} |
else |
{ |
gen(PUSH1, 0); |
expression(&consta, &val); |
gen(SWAP1s, 0); /* don't push addr */ |
} |
nargs = nargs + INTSIZE; /* count args*BPW */ |
if(match(",") == 0) break; |
} |
#endif |
callfunc(ptr) |
char *ptr; /* symbol table entry or 0 */ |
{ |
int nargs, consta, val; |
nargs = 0; |
blanks(); /* already saw open paren */ |
while(streq(lptr, ")") == 0) |
{ |
if(endst()) |
break; |
if(ptr) |
{ |
expression(&consta, &val); |
gen(PUSH1, 0); |
} |
else |
{ |
gen(PUSH1, 0); |
expression(&consta, &val); |
gen(SWAP1s, 0); /* don't push addr */ |
} |
nargs = nargs + INTSIZE; /* count args*BPW */ |
if(match(",") == 0) break; |
} |
need(")"); |
if(ptr && (streq(ptr + NAME, "CCARGC") == 0)) /* accessing ... like va_args */ |
#ifdef INT32 |
gen(ARGCNTn, nargs >> LBPD); /* to get start of frame */ |
#else |
gen(ARGCNTn, nargs >> LBPW); /* to get start of frame */ |
#endif |
if(ptr) |
gen(CALLm, ptr); |
else |
gen(CALL1, 0); |
gen(ADDSP, csp + nargs); |
} |
/* |
** true if is2's operand should be doubled |
*/ |
fdouble (oper, is1, is2) |
int oper, is1[], is2[]; |
{ |
////////////////////////////////////////////////////// |
// This is a 'magic' function, its usage and function |
// are not so obvious |
// |
// Purpose: when indexing an address we must know |
// what we are pointing at so that the indexsize is |
// proper, e,g, |
// charptr++, should multiply index by a 1 |
// shortptr++, should multiply index by a 2 |
// intptr++, should multiply index by a 4 |
// |
// Algorithm: |
// IF |
// operation is ADD12 or SUB12 |
// AND |
// is1 is an address (pointer, array or via & operator |
// AND |
// is2 is NOT an address (pointer, array or via & operator |
// THEN |
// return the multiplication factor based on s1 (or true) |
// ELSE |
// return 0 (or false) |
// |
// Usage: The return value is used as a 'boolean' |
// for nonconstant values, indicating that runtime code |
// is necessary to do the necessary multiplication |
// For contant value the return value is used to do a compile-time |
// multiplication (shift actually) |
// |
if ((oper == ADD12 || oper == SUB12) |
&& (is2[TA] == 0)) |
{ |
switch (is1[TA]>>2) |
{ |
default: |
case 1: // char |
return (0); |
case 2: // short |
return (1); |
case 4: // int |
return (2); |
} |
} |
return (0); |
/* |
- original code - |
if((oper != ADD12 && oper != SUB12) |
|| (is1[TA] >> 2 != BPW) |
|| (is2[TA])) |
return 0; |
return 1; |
*/ |
} |
step (oper, is, oper2) int oper, is[], oper2; { |
fetch(is); |
gen(oper, is[TA] ? (is[TA] >> 2) : 1); |
store(is); |
if(oper2) gen(oper2, is[TA] ? (is[TA] >> 2) : 1); |
} |
store(is) |
int is[]; |
{ |
char *ptr; |
if(is[TI]) |
{ /* putstk */ |
if(is[TI] >> 2 == 1) |
{ |
gen(PUTbp1, 0); |
} |
else if(is[TI] >> 2 == 2) |
{ |
gen(PUTwp1, 0); |
} |
else |
{ |
gen(PUTdp1, 0); |
} |
} |
else |
{ /* putmem */ |
ptr = is[ST]; |
if(ptr[IDENT] == POINTER) |
{ |
#ifdef INT32 /* int and ptr-size are ALWAYS the same */ |
gen(PUTdm1, ptr); |
#else |
gen(PUTwm1, ptr); |
#endif |
} |
else if (ptr[TYPE] >> 2 == 1) |
{ |
gen(PUTbm1, ptr); |
} |
else if (ptr[TYPE] >> 2 == BPW) |
{ |
gen(PUTwm1, ptr); |
} |
else |
{ |
gen(PUTdm1, ptr); |
} |
} |
} |
fetch(is) |
int is[]; |
{ |
char *ptr; |
ptr = is[ST]; |
if(is[TI]) /* indirect */ |
{ |
if(is[TI] >> 2 == BPD) /* pointer to DWORD */ |
{ |
gen(GETd1p, 0); |
} |
else if(is[TI] >> 2 == BPW) /* pointer to WORD */ |
{ |
/* if INT32 must make distinction between signed/unsigned <-- */ |
gen(GETw1p, 0); |
} |
else |
{ |
if(ptr[TYPE] & UNSIGNED) |
gen(GETb1pu, 0); |
else |
gen(GETb1p, 0); |
} |
} |
else |
{ /* direct */ |
if(ptr[IDENT] == POINTER) |
{ |
#ifdef INT32 |
gen(GETd1m, ptr); |
#else |
gen(GETw1m, ptr); |
#endif |
} |
else if (ptr[TYPE] >> 2 == BPD) |
{ |
gen(GETd1m, ptr); |
} |
else if (ptr[TYPE] >> 2 == BPW) |
{ |
gen(GETw1m, ptr); |
} |
else |
{ |
if(ptr[TYPE] & UNSIGNED) |
gen(GETb1mu, ptr); |
else |
gen(GETb1m, ptr); |
} |
} |
} |
constant(is) |
int is[]; |
{ |
int offset; |
if (is[TC] = number(is + CV)) |
{ |
#ifdef INT32 |
gen(GETd1n, is[CV]); |
#else |
gen(GETw1n, is[CV]); |
#endif |
} |
else if(is[TC] = chrcon(is + CV)) |
{ |
#ifdef INT32 |
gen(GETd1n, is[CV]); |
#else |
gen(GETw1n, is[CV]); |
#endif |
} |
else if(string(&offset)) |
{ |
gen(POINT1l, offset); |
} |
else |
{ |
return 0; |
} |
return 1; |
} |
number(value) int *value; { |
int k, minus; |
k = minus = 0; |
while(1) { |
if(match("+")) ; |
else if(match("-")) minus = 1; |
else break; |
} |
if(isdigit(ch) == 0) return 0; |
if(ch == '0') { |
while(ch == '0') inbyte(); |
if(toupper(ch) == 'X') { |
inbyte(); |
while(isxdigit(ch)) { |
if(isdigit(ch)) |
k = k*16 + (inbyte() - '0'); |
else k = k*16 + 10 + (toupper(inbyte()) - 'A'); |
} |
} |
else while (ch >= '0' && ch <= '7') |
k = k*8 + (inbyte() - '0'); |
} |
else while (isdigit(ch)) k = k*10 + (inbyte() - '0'); |
if(minus) { |
*value = -k; |
return (INT); |
} |
if((*value = k) < 0) return (UINT); |
else return (INT); |
} |
chrcon(value) |
int *value; |
{ |
int k; |
k = 0; |
if(match("'") == 0) |
return 0; |
while(ch != '\'') |
k = (k << 8) + (litchar() & 255); |
gch(); |
*value = k; |
return (INT); |
} |
string(offset) int *offset; { |
char c; |
if(match(quote) == 0) return 0; |
*offset = litptr; |
while (ch != '"') { |
if(ch == 0) break; |
stowlit(litchar(), 1); |
} |
gch(); |
litq[litptr++] = 0; |
return 1; |
} |
stowlit(value, size) int value, size; { |
if((litptr+size) >= LITMAX) { |
error("literal queue overflow"); |
exit(ERRCODE); |
} |
putint(value, litq+litptr, size); |
litptr += size; |
} |
litchar() { |
int i, oct; |
if(ch != '\\' || nch == 0) return gch(); |
gch(); |
switch(ch) { |
case 'n': gch(); return NEWLINE; |
case 't': gch(); return 9; /* HT */ |
case 'b': gch(); return 8; /* BS */ |
case 'f': gch(); return 12; /* FF */ |
} |
i = 3; |
oct = 0; |
while((i--) > 0 && ch >= '0' && ch <= '7') |
oct = (oct << 3) + gch() - '0'; |
if(i == 2) return gch(); |
else return oct; |
} |
/***************** pipeline functions ******************/ |
/* |
** skim over terms adjoining || and && operators |
*/ |
skim(opstr, tcode, dropval, endval, level, is) |
char *opstr; |
int tcode, dropval, endval, (*level)(), is[]; { |
int k, droplab, endlab; |
droplab = 0; |
while(1) { |
k = down1(level, is); |
if(nextop(opstr)) { |
bump(opsize); |
if(droplab == 0) droplab = getlabel(); |
dropout(k, tcode, droplab, is); |
} |
else if(droplab) { |
dropout(k, tcode, droplab, is); |
#ifdef INT32 |
gen(GETd1n, endval); |
#else |
gen(GETw1n, endval); |
#endif |
gen(JMPm, endlab = getlabel()); |
gen(LABm, droplab); |
#ifdef INT32 |
gen(GETd1n, dropval); |
#else |
gen(GETw1n, dropval); |
#endif |
gen(LABm, endlab); |
is[TI] = is[TA] = is[TC] = is[CV] = is[SA] = 0; |
return 0; |
} |
else return k; |
} |
} |
/* |
** test for early dropout from || or && sequences |
*/ |
dropout(k, tcode, exit1, is) |
int k, tcode, exit1, is[]; { |
if(k) fetch(is); |
else if(is[TC]) |
{ |
#ifdef INT32 |
gen(GETd1n, is[CV]); |
#else |
gen(GETw1n, is[CV]); |
#endif |
} |
gen(tcode, exit1); /* jumps on false */ |
} |
/* |
** drop to a lower level |
*/ |
down(opstr, opoff, level, is) |
char *opstr; int opoff, (*level)(), is[]; { |
int k; |
k = down1(level, is); |
if(nextop(opstr) == 0) return k; |
if(k) fetch(is); |
while(1) { |
if(nextop(opstr)) { |
int is2[7]; /* allocate only if needed */ |
null_is (is2); |
bump(opsize); |
opindex += opoff; |
down2(op[opindex], op2[opindex], level, is, is2); |
} |
else return 0; |
} |
} |
/* |
** unary drop to a lower level |
*/ |
down1(level, is) int (*level)(), is[]; { |
int k, *before, *start; |
setstage(&before, &start); |
k = (*level)(is); |
if(is[TC]) clearstage(before, 0); /* load constant later */ |
return k; |
} |
/* |
** binary drop to a lower level |
*/ |
down2(oper, oper2, level, is, is2) |
int oper, oper2, (*level)(), is[], is2[]; { |
int *before, *start; |
char *ptr; |
int value; |
setstage(&before, &start); |
is[SA] = 0; /* not "... op 0" syntax */ |
if(is[TC]) { /* consant op unknown */ |
if(down1(level, is2)) fetch(is2); |
if(is[CV] == 0) is[SA] = snext; |
gen(GETw2n, is[CV] << fdouble(oper, is2, is)); |
} |
else { /* variable op unknown */ |
gen(PUSH1, 0); /* at start in the buffer */ |
if(down1(level, is2)) fetch(is2); |
if(is2[TC]) { /* variable op constant */ |
if(is2[CV] == 0) is[SA] = start; |
#ifdef INT32 |
csp += BPD; /* adjust stack and */ |
#else |
csp += BPW; /* adjust stack and */ |
#endif |
clearstage(before, 0); /* discard the PUSH */ |
if(oper == ADD12) { /* commutative */ |
#ifdef INT32 |
gen(GETd2n, is2[CV] << fdouble(oper, is, is2)); |
#else |
gen(GETw2n, is2[CV] << fdouble(oper, is, is2)); |
#endif |
} |
else { /* non-commutative */ |
gen(MOVE21, 0); |
#ifdef INT32 |
gen(GETd1n, is2[CV] << fdouble(oper, is, is2)); |
#else |
gen(GETw1n, is2[CV] << fdouble(oper, is, is2)); |
#endif |
} |
} |
else { /* variable op variable */ |
gen(POP2, 0); |
if(value = fdouble(oper, is, is2)) |
{ |
gen(DBL1, 0); // index size 2 |
if (value > 1) |
gen(DBL1, 0); // .. or even 4 |
} |
if(value = fdouble(oper, is2, is)) |
{ |
gen(DBL2, 0); |
if (value > 1) |
gen(DBL2, 0); |
} |
} |
} |
if(oper) { |
if(nosign(is) || nosign(is2)) oper = oper2; |
if(is[TC] = is[TC] & is2[TC]) { /* constant result */ |
is[CV] = calc(is[CV], oper, is2[CV]); |
clearstage(before, 0); |
if(is2[TC] == UINT) is[TC] = UINT; |
} |
else { /* variable result */ |
gen(oper, 0); |
if(oper == SUB12 |
&& is [TA] >> 2 == BPW |
&& is2[TA] >> 2 == BPW) { /* difference of two word addresses */ |
gen(SWAP12, 0); |
gen(GETw1n, 1); |
gen(ASR12, 0); /* div by 2 */ |
} |
is[OP] = oper; /* identify the operator */ |
} |
if(oper == SUB12 || oper == ADD12) { |
if(is[TA] && is2[TA]) /* addr +/- addr */ |
is[TA] = 0; |
else if(is2[TA]) { /* value +/- addr */ |
is[ST] = is2[ST]; |
is[TI] = is2[TI]; |
is[TA] = is2[TA]; |
} |
} |
if(is[ST] == 0 || ((ptr = is2[ST]) && (ptr[TYPE] & UNSIGNED))) |
is[ST] = is2[ST]; |
} |
} |
/* |
** unsigned operand? |
*/ |
nosign(is) int is[]; { |
char *ptr; |
if(is[TA] |
|| is[TC] == UINT |
|| ((ptr = is[ST]) && (ptr[TYPE] & UNSIGNED)) |
) return 1; |
return 0; |
} |
/* |
** calcualte signed constant result |
*/ |
calc(left, oper, right) int left, oper, right; { |
switch(oper) { |
case ADD12: return (left + right); |
case SUB12: return (left - right); |
case MUL12: return (left * right); |
case DIV12: return (left / right); |
case MOD12: return (left % right); |
case EQ12: return (left == right); |
case NE12: return (left != right); |
case LE12: return (left <= right); |
case GE12: return (left >= right); |
case LT12: return (left < right); |
case GT12: return (left > right); |
case AND12: return (left & right); |
case OR12: return (left | right); |
case XOR12: return (left ^ right); |
case ASR12: return (left >> right); |
case ASL12: return (left << right); |
} |
return (calc2(left, oper, right)); |
} |
/* |
** calcualte unsigned constant result |
*/ |
calc2(left, oper, right) unsigned left, right; int oper; { |
switch(oper) { |
case MUL12u: return (left * right); |
case DIV12u: return (left / right); |
case MOD12u: return (left % right); |
case LE12u: return (left <= right); |
case GE12u: return (left >= right); |
case LT12u: return (left < right); |
case GT12u: return (left > right); |
} |
return (0); |
} |
/programs/develop/scc/cc4.c |
---|
0,0 → 1,985 |
/* |
** Small-C Compiler -- Part 4 -- Back End. |
** Copyright 1982, 1983, 1985, 1988 J. E. Hendrix |
** Copyright 1998 H T Walheim |
** All rights reserved. |
*/ |
#include <stdio.h> |
#include "cc.h" |
/* #define DISOPT */ /* display optimizations values */ |
/*************************** externals ****************************/ |
extern char |
*cptr, *macn, *litq, *symtab, optimize, ssname[NAMESIZE]; |
extern int |
*stage, litlab, litptr, csp, output, oldseg, usexpr, |
*snext, *stail, *slast; |
/***************** optimizer command definitions ******************/ |
/* -- p-codes must not overlap these */ |
#define any 0x00FF /* matches any p-code */ |
#define _pop 0x00FE /* matches if corresponding POP2 exists */ |
#define pfree 0x00FD /* matches if pri register free */ |
#define sfree 0x00FC /* matches if sec register free */ |
#define comm 0x00FB /* matches if registers are commutative */ |
/* -- these digits are reserved for n */ |
#define go 0x0100 /* go n entries */ |
#define gc 0x0200 /* get code from n entries away */ |
#define gv 0x0300 /* get value from n entries away */ |
#define sum 0x0400 /* add value from nth entry away */ |
#define neg 0x0500 /* negate the value */ |
#define ife 0x0600 /* if value == n do commands to next 0 */ |
#define ifl 0x0700 /* if value < n do commands to next 0 */ |
#define swv 0x0800 /* swap value with value n entries away */ |
#define topop 0x0900 /* moves |code and current value to POP2 */ |
#define p1 0x0001 /* plus 1 */ |
#define p2 0x0002 /* plus 2 */ |
#define p3 0x0003 /* plus 3 */ |
#define p4 0x0004 /* plus 4 */ |
#define m1 0x00FF /* minus 1 */ |
#define m2 0x00FE /* minus 2 */ |
#define m3 0x00FD /* minus 3 */ |
#define m4 0x00FC /* minus 4 */ |
#define PRI 0030 /* primary register bits */ |
#define SEC 0003 /* secondary register bits */ |
#define USES 0011 /* use register contents */ |
#define ZAPS 0022 /* zap register contents */ |
#define PUSHES 0100 /* pushes onto the stack */ |
#define COMMUTES 0200 /* commutative p-code */ |
/******************** optimizer command lists *********************/ |
int |
seq00[] = {0,ADD12,MOVE21,0, /* ADD21 */ |
go|p1,ADD21,0}, |
seq01[] = {0,ADD1n,0, /* rINC1 or rDEC1 ? */ |
ifl|m2,0,ifl|0,rDEC1,neg,0,ifl|p3,rINC1,0,0}, |
seq02[] = {0,ADD2n,0, /* rINC2 or rDEC2 ? */ |
ifl|m2,0,ifl|0,rDEC2,neg,0,ifl|p3,rINC2,0,0}, |
seq03[] = {0,rDEC1,PUTbp1,rINC1,0, /* SUBbpn or DECbp */ |
go|p2,ife|p1,DECbp,0,SUBbpn,0}, |
seq04[] = {0,rDEC1,PUTwp1,rINC1,0, /* SUBwpn or DECwp */ |
go|p2,ife|p1,DECwp,0,SUBwpn,0}, |
seq05[] = {0,rDEC1,PUTbm1,rINC1,0, /* SUB_m_ COMMAn */ |
go|p1,SUB_m_,go|p1,COMMAn,go|m1,0}, |
seq06[] = {0,rDEC1,PUTwm1,rINC1,0, /* SUB_m_ COMMAn */ |
go|p1,SUB_m_,go|p1,COMMAn,go|m1,0}, |
seq07[] = {0,GETw1m,GETw2n,ADD12,MOVE21,GETb1p,0, /* GETw2m GETb1p */ |
go|p4,gv|m3,go|m1,GETw2m,gv|m3,0}, |
seq08[] = {0,GETw1m,GETw2n,ADD12,MOVE21,GETb1pu,0, /* GETw2m GETb1pu */ |
go|p4,gv|m3,go|m1,GETw2m,gv|m3,0}, |
seq09[] = {0,GETw1m,GETw2n,ADD12,MOVE21,GETw1p,0, /* GETw2m GETw1p */ |
go|p4,gv|m3,go|m1,GETw2m,gv|m3,0}, |
seq10[] = {0,GETw1m,GETw2m,SWAP12,0, /* GETw2m GETw1m */ |
go|p2,GETw1m,gv|m1,go|m1,gv|m1,0}, |
seq11[] = {0,GETw1m,MOVE21,0, /* GETw2m */ |
go|p1,GETw2m,gv|m1,0}, |
seq12[] = {0,GETw1m,PUSH1,pfree,0, /* PUSHm */ |
go|p1,PUSHm,gv|m1,0}, |
seq13[] = {0,GETw1n,PUTbm1,pfree,0, /* PUT_m_ COMMAn */ |
PUT_m_,go|p1,COMMAn,go|m1,swv|p1,0}, |
seq14[] = {0,GETw1n,PUTwm1,pfree,0, /* PUT_m_ COMMAn */ |
PUT_m_,go|p1,COMMAn,go|m1,swv|p1,0}, |
seq15[] = {0,GETw1p,PUSH1,pfree,0, /* PUSHp */ |
go|p1,PUSHp,gv|m1,0}, |
seq16[] = {0,GETw1s,GETw2n,ADD12,MOVE21,0, /* GETw2s ADD2n */ |
go|p3,ADD2n,gv|m2,go|m1,GETw2s,gv|m2,0}, |
seq17[] = {0,GETw1s,GETw2s,SWAP12,0, /* GETw2s GETw1s */ |
go|p2,GETw1s,gv|m1,go|m1,GETw2s,gv|m1,0}, |
seq18[] = {0,GETw1s,MOVE21,0, /* GETw2s */ |
go|p1,GETw2s,gv|m1,0}, |
seq19[] = {0,GETw2m,GETw1n,SWAP12,SUB12,0, /* GETw1m SUB1n */ |
go|p3,SUB1n,gv|m2,go|m1,GETw1m,gv|m2,0}, |
seq20[] = {0,GETw2n,ADD12,0, /* ADD1n */ |
go|p1,ADD1n,gv|m1,0}, |
seq21[] = {0,GETw2s,GETw1n,SWAP12,SUB12,0, /* GETw1s SUB1n */ |
go|p3,SUB1n,gv|m2,go|m1,GETw1s,gv|m2,0}, |
seq22[] = {0,rINC1,PUTbm1,rDEC1,0, /* ADDm_ COMMAn */ |
go|p1,ADDm_,go|p1,COMMAn,go|m1,0}, |
seq23[] = {0,rINC1,PUTwm1,rDEC1,0, /* ADDm_ COMMAn */ |
go|p1,ADDm_,go|p1,COMMAn,go|m1,0}, |
seq24[] = {0,rINC1,PUTbp1,rDEC1,0, /* ADDbpn or INCbp */ |
go|p2,ife|p1,INCbp,0,ADDbpn,0}, |
seq25[] = {0,rINC1,PUTwp1,rDEC1,0, /* ADDwpn or INCwp */ |
go|p2,ife|p1,INCwp,0,ADDwpn,0}, |
seq26[] = {0,MOVE21,GETw1n,SWAP12,SUB12,0, /* SUB1n */ |
go|p3,SUB1n,gv|m2,0}, |
seq27[] = {0,MOVE21,GETw1n,comm,0, /* GETw2n comm */ |
go|p1,GETw2n,0}, |
seq28[] = {0,POINT1m,GETw2n,ADD12,MOVE21,0, /* POINT2m_ PLUSn */ |
go|p3,PLUSn,gv|m2,go|m1,POINT2m_,gv|m2,0}, |
seq29[] = {0,POINT1m,MOVE21,pfree,0, /* POINT2m */ |
go|p1,POINT2m,gv|m1,0}, |
seq30[] = {0,POINT1m,PUSH1,pfree,_pop,0, /* ... POINT2m */ |
topop|POINT2m,go|p2,0}, |
seq31[] = {0,POINT1s,GETw2n,ADD12,MOVE21,0, /* POINT2s */ |
sum|p1,go|p3,POINT2s,gv|m3,0}, |
seq32[] = {0,POINT1s,PUSH1,MOVE21,0, /* POINT2s PUSH2 */ |
go|p1,POINT2s,gv|m1,go|p1,PUSH2,go|m1,0}, |
seq33[] = {0,POINT1s,PUSH1,pfree,_pop,0, /* ... POINT2s */ |
topop|POINT2s,go|p2,0}, |
seq34[] = {0,POINT1s,MOVE21,0, /* POINT2s */ |
go|p1,POINT2s,gv|m1,0}, |
seq35[] = {0,POINT2m,GETb1p,sfree,0, /* GETb1m */ |
go|p1,GETb1m,gv|m1,0}, |
seq36[] = {0,POINT2m,GETb1pu,sfree,0, /* GETb1mu */ |
go|p1,GETb1mu,gv|m1,0}, |
seq37[] = {0,POINT2m,GETw1p,sfree,0, /* GETw1m */ |
go|p1,GETw1m,gv|m1,0}, |
seq38[] = {0,POINT2m_,PLUSn,GETw1p,sfree,0, /* GETw1m_ PLUSn */ |
go|p2,gc|m1,gv|m1,go|m1,GETw1m_,gv|m1,0}, |
seq39[] = {0,POINT2s,GETb1p,sfree,0, /* GETb1s */ |
sum|p1,go|p1,GETb1s,gv|m1,0}, |
seq40[] = {0,POINT2s,GETb1pu,sfree,0, /* GETb1su */ |
sum|p1,go|p1,GETb1su,gv|m1,0}, |
seq41[] = {0,POINT2s,GETw1p,PUSH1,pfree,0, /* PUSHs */ |
sum|p1,go|p2,PUSHs,gv|m2,0}, |
seq42[] = {0,POINT2s,GETw1p,sfree,0, /* GETw1s */ |
sum|p1,go|p1,GETw1s,gv|m1,0}, |
seq43[] = {0,PUSH1,any,POP2,0, /* MOVE21 any */ |
go|p2,gc|m1,gv|m1,go|m1,MOVE21,0}, |
seq44[] = {0,PUSHm,_pop,0, /* ... GETw2m */ |
topop|GETw2m,go|p1,0}, |
seq45[] = {0,PUSHp,any,POP2,0, /* GETw2p ... */ |
go|p2,gc|m1,gv|m1,go|m1,GETw2p,gv|m1,0}, |
seq46[] = {0,PUSHs,_pop,0, /* ... GETw2s */ |
topop|GETw2s,go|p1,0}, |
seq47[] = {0,SUB1n,0, /* rDEC1 or rINC1 ? */ |
ifl|m2,0,ifl|0,rINC1,neg,0,ifl|p3,rDEC1,0,0}; |
#define HIGH_SEQ 47 |
int seq[HIGH_SEQ + 1]; |
setseq() { |
seq[ 0] = seq00; seq[ 1] = seq01; seq[ 2] = seq02; seq[ 3] = seq03; |
seq[ 4] = seq04; seq[ 5] = seq05; seq[ 6] = seq06; seq[ 7] = seq07; |
seq[ 8] = seq08; seq[ 9] = seq09; seq[10] = seq10; seq[11] = seq11; |
seq[12] = seq12; seq[13] = seq13; seq[14] = seq14; seq[15] = seq15; |
seq[16] = seq16; seq[17] = seq17; seq[18] = seq18; seq[19] = seq19; |
seq[20] = seq20; seq[21] = seq21; seq[22] = seq22; seq[23] = seq23; |
seq[24] = seq24; seq[25] = seq25; seq[26] = seq26; seq[27] = seq27; |
seq[28] = seq28; seq[29] = seq29; seq[30] = seq30; seq[31] = seq31; |
seq[32] = seq32; seq[33] = seq33; seq[34] = seq34; seq[35] = seq35; |
seq[36] = seq36; seq[37] = seq37; seq[38] = seq38; seq[39] = seq39; |
seq[40] = seq40; seq[41] = seq41; seq[42] = seq42; seq[43] = seq43; |
seq[44] = seq44; seq[45] = seq45; seq[46] = seq46; seq[47] = seq47; |
} |
/***************** assembly-code strings ******************/ |
int code[PCODES]; |
/* |
** First byte contains flag bits indicating: |
** the value in ax is needed (010) or zapped (020) |
** the value in bx is needed (001) or zapped (002) |
*/ |
setcodes() { |
setseq(); |
code[ADD12] = "\211ADD EAX,EBX\15\n"; |
code[ADD1n] = "\010?ADD EAX,<n>\15\n??"; |
code[ADD21] = "\211ADD EBX,EAX\15\n"; |
code[ADD2n] = "\010?ADD EBX,<n>\15\n??"; |
code[ADDbpn] = "\001ADD BYTE [EBX],<n>\15\n"; |
code[ADDwpn] = "\001ADD WORD [EBX],<n>\15\n"; |
code[ADDm_] = "\000ADD <m>"; |
code[ADDSP] = "\000?ADD ESP,<n>\15\n??"; |
code[AND12] = "\211AND EAX,EBX\15\n"; |
code[ANEG1] = "\010NEG EAX\15\n"; |
code[ARGCNTn] = "\000?MOV CL,<n>?XOR CL,CL?\15\n"; |
code[ASL12] = "\011MOV ECX,EAX\15\nMOV EAX,EBX\15\nSAL EAX,CL\15\n"; |
code[ASR12] = "\011MOV ECX,EAX\15\nMOV EAX,EBX\15\nSAR EAX,CL\15\n"; |
code[CALL1] = "\010CALL EAX\15\n"; |
code[CALLm] = "\020CALL <m>\15\n"; |
code[BYTE_] = "\000 DB "; |
code[BYTEn] = "\000 RESB <n>\15\n"; |
code[BYTEr0] = "\000 TIMES <n> DB 0\15\n"; |
code[COM1] = "\010NOT EAX\15\n"; |
code[COMMAn] = "\000,<n>\15\n"; |
code[DBL1] = "\010SHL EAX,1\15\n"; |
code[DBL2] = "\001SHL EBX,1\15\n"; |
code[DECbp] = "\001DEC BYTE [EBX]\15\n"; |
code[DECwp] = "\001DEC WORD [EBX]\15\n"; |
code[DIV12] = "\011CDQ\15\nIDIV EBX\15\n"; /* see gen() */ |
code[DIV12u] = "\011XOR EDX,EDX\15\nDIV EBX\15\n"; /* see gen() */ |
code[DWORD_] = "\000 DD "; |
code[DWORDn] = "\000 DD <n>\15\n"; |
code[DWORDr0] = "\000 TIMES <n> DD 0\15\n"; |
code[ENTER] = "\100PUSH EBP\15\nMOV EBP,ESP\15\n"; |
code[EQ10f] = "\010<g>OR EAX,EAX\15\nJE _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[EQ12] = "\211CALL __eq\15\n"; |
code[GE10f] = "\010<g>OR EAX,EAX\15\nJGE _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[GE12] = "\011CALL __ge\15\n"; |
code[GE12u] = "\011CALL __uge\15\n"; |
code[GETb1m] = "\020MOVSX EAX,BYTE [<m>]\15\n"; |
code[GETb1mu] = "\020MOVZX EAX,BYTE [<m>]\15\n"; |
code[GETb1p] = "\021MOVSX EAX,BYTE [EBX?<o>??]\15\n"; /* see gen() */ |
code[GETb1pu] = "\021MOVZX EAX,BYTE [EBX?<o>??]\15\n"; /* see gen() */ |
code[GETb1s] = "\020MOVSX EAX,BYTE [EBP<o>]\15\n"; |
code[GETb1su] = "\020MOVZX EAX,BYTE [EBP<o>]\15\n"; |
code[GETd1m] = "\020MOV EAX,[<m>]\15\n"; |
code[GETd1n] = "\020?MOV EAX,<n>?XOR EAX,EAX?\15\n"; |
code[GETd1p] = "\021MOV EAX, [EBX?<o>??]\15\n"; /* see gen() */ |
code[GETd2n] = "\002?MOV EBX,<n>?XOR EBX,EBX?\15\n"; |
code[GETw1m] = "\020MOVSX EAX,WORD [<m>]\15\n"; |
code[GETw1m_] = "\020MOVSX EAX,WORD [<m>]"; |
code[GETw1n] = "\020?MOV EAX,<n>?XOR EAX,EAX?\15\n"; |
code[GETw1p] = "\021MOVSX EAX, WORD [EBX?<o>??]\15\n"; /* see gen() */ |
code[GETw1s] = "\020MOVSX EAX, WORD [EBP<o>]\15\n"; |
code[GETw2m] = "\002MOVSX EBX,WORD <m>\15\n"; |
code[GETw2n] = "\002?MOV EBX,<n>?XOR EBX,EBX?\15\n"; |
code[GETw2p] = "\021MOVSX EBX,WORD [EBX?<o>??]\15\n"; |
code[GETw2s] = "\002MOVSX EBX,WORD [EBP<o>]\15\n"; |
code[GT10f] = "\010<g>OR EAX,EAX\15\nJG _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[GT12] = "\010CALL __gt\15\n"; |
code[GT12u] = "\011CALL __ugt\15\n"; |
code[INCbp] = "\001INC BYTE [EBX]\15\n"; |
code[INCwp] = "\001INC WORD [EBX]\15\n"; |
code[WORD_] = "\000 DW "; |
code[WORDn] = "\000 RESW <n>\15\n"; |
code[WORDr0] = "\000 TIMES <n> DW 0\15\n"; |
code[JMPm] = "\000JMP _<n>\15\n"; |
code[LABm] = "\000_<n>:\15\n"; |
code[LE10f] = "\010<g>OR EAX,EAX\15\nJLE _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[LE12] = "\011CALL __le\15\n"; |
code[LE12u] = "\011CALL __ule\15\n"; |
code[LNEG1] = "\010CALL __lneg\15\n"; |
code[LT10f] = "\010<g>OR EAX,EAX\15\nJL _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[LT12] = "\011CALL __lt\15\n"; |
code[LT12u] = "\011CALL __ult\15\n"; |
code[MOD12] = "\011CDQ\15\nIDIV EBX\15\nMOV EAX,EDX\15\n"; /* see gen() */ |
code[MOD12u] = "\011XOR EDX,EDX\15\nDIV EBX\15\nMOV EAX,EDX\15\n"; /* see gen() */ |
code[MOVE21] = "\012MOV EBX,EAX\15\n"; |
code[MUL12] = "\211IMUL EBX\15\n"; |
code[MUL12u] = "\211MUL EBX\15\n"; |
code[NE10f] = "\010<g>OR EAX,EAX\15\nJNE _<d>\15\nJMP _<n>\15\n_<d>:\15\n"; |
code[NE12] = "\211CALL __ne\15\n"; |
code[NEARm] = "\000 DD _<n>\15\n"; |
code[OR12] = "\211OR EAX,EBX\15\n"; |
code[PLUSn] = "\000?+<n>??\15\n"; |
code[POINT1l] = "\020MOV EAX,_<l>+<n>\15\n"; |
code[POINT1m] = "\020MOV EAX,<m>\15\n"; |
code[POINT1s] = "\020LEA EAX,[EBP<o>]\15\n"; |
code[POINT2m] = "\002MOV EBX,<m>\15\n"; |
code[POINT2m_]= "\002MOV EBX,<m>"; |
code[POINT2s] = "\002LEA EBX,[EBP<o>]\15\n"; |
code[POP2] = "\002POP EBX\15\n"; |
code[PUSH1] = "\110PUSH EAX\15\n"; |
code[PUSH2] = "\101PUSH EBX\15\n"; |
code[PUSHm] = "\100PUSH <m>\15\n"; |
code[PUSHp] = "\100PUSH [EBX?<o>??]\15\n"; |
code[PUSHs] = "\100PUSH [EBP?<o>??]\15\n"; |
code[PUT_m_] = "\000MOV <m>"; |
code[PUTbm1] = "\010MOV BYTE [<m>],AL\15\n"; |
code[PUTbp1] = "\011MOV [EBX],AL\15\n"; |
code[PUTdm1] = "\010MOV DWORD [<m>],EAX\15\n"; |
code[PUTdp1] = "\011MOV [EBX],EAX\15\n"; |
code[PUTwm1] = "\010MOV WORD [<m>],AX\15\n"; |
code[PUTwp1] = "\011MOV [EBX],AX\15\n"; |
code[rDEC1] = "\010#DEC EAX\15\n#"; |
code[rDEC2] = "\010#DEC EBX\15\n#"; |
code[REFm] = "\000_<n>"; |
code[RETURN] = "\000?MOV ESP,EBP\15\n??POP EBP\15\nRET\15\n"; |
code[rINC1] = "\010#INC EAX\15\n#"; |
code[rINC2] = "\010#INC EBX\15\n#"; |
code[SUB_m_] = "\000SUB <m>"; |
code[SUB12] = "\011SUB EAX,EBX\15\n"; /* see gen() */ |
code[SUB1n] = "\010?SUB EAX,<n>\15\n??"; |
code[SUBbpn] = "\001SUB [EBX],<n>\15\n"; |
code[SUBwpn] = "\001SUB [EBX],<n>\15\n"; |
code[SWAP12] = "\011XCHG EAX,EBX\15\n"; |
code[SWAP1s] = "\012POP EBX\15\nXCHG EAX,EBX\15\nPUSH EBX\15\n"; |
code[SWITCH] = "\012CALL __switch\15\n"; |
code[XOR12] = "\211XOR EAX,EBX\15\n"; |
} |
/***************** code generation functions *****************/ |
/* |
** print all assembler info before any code is generated |
** and ensure that the segments appear in the correct order. |
*/ |
header() { |
/* outline(" .386"); |
outline(" .MODEL FLAT"); |
*/ toseg(CODESEG); |
/* - FASM |
outline("EXTERN __eq"); |
outline("EXTERN __ne"); |
outline("EXTERN __le"); |
outline("EXTERN __lt"); |
outline("EXTERN __ge"); |
outline("EXTERN __gt"); |
outline("EXTERN __ule"); |
outline("EXTERN __ult"); |
outline("EXTERN __uge"); |
outline("EXTERN __ugt"); |
outline("EXTERN __lneg"); |
outline("EXTERN __switch"); |
*/ |
/* outline("dw 0"); *//* force non-zero code pointers, word alignment */ |
toseg(DATASEG); |
/* outline("dw 0"); *//* force non-zero data pointers, word alignment */ |
} |
/* |
** print any assembler stuff needed at the end |
*/ |
trailer() { |
char *cp; |
cptr = STARTGLB; |
while(cptr < ENDGLB) { |
if(cptr[IDENT] == FUNCTION && cptr[CLASS] == AUTOEXT) |
external(cptr + NAME, 0, FUNCTION); |
cptr += SYMMAX; |
} |
/* |
if((cp = findglb("main")) && cp[CLASS]==STATIC) |
external("_main", 0, FUNCTION); |
*/ |
toseg(NULL); |
/* outline("END"); */ |
#ifdef DISOPT |
{ |
int i, *count; |
printf(";opt count\n"); |
for(i = -1; ++i <= HIGH_SEQ; ) { |
count = seq[i]; |
printf("; %2u %5u\n", i, *count); |
} |
} |
#endif |
} |
/* |
** remember where we are in the queue in case we have to back up. |
*/ |
setstage(before, start) int *before, *start; { |
if((*before = snext) == 0) |
snext = stage; |
*start = snext; |
} |
/* |
** generate code in staging buffer. |
*/ |
gen(pcode, value) |
int pcode, value; |
{ |
int newcsp; |
switch(pcode) |
{ |
case GETb1pu: |
case GETb1p: |
case GETw1p: |
case GETd1p: |
gen(MOVE21, 0); |
break; |
case SUB12: |
case MOD12: |
case MOD12u: |
case DIV12: |
case DIV12u: |
gen(SWAP12, 0); |
break; |
case PUSH1: |
#ifdef INT32 |
csp -= BPD; |
#else |
csp -= BPW; |
#endif |
break; |
case POP2: |
#ifdef INT32 |
csp += BPD; |
#else |
csp += BPW; |
#endif |
break; |
case ADDSP: |
case RETURN: |
newcsp = value; |
value -= csp; |
csp = newcsp; |
} |
if(snext == 0) |
{ |
outcode(pcode, value); |
return; |
} |
if(snext >= slast) |
{ |
error("staging buffer overflow"); |
return; |
} |
snext[0] = pcode; |
snext[1] = value; |
snext += 2; |
} |
/* |
** dump the contents of the queue. |
** If start = 0, throw away contents. |
** If before != 0, don't dump queue yet. |
*/ |
clearstage(before, start) |
int *before, *start; |
{ |
if(before) |
{ |
snext = before; |
return; |
} |
if(start) |
dumpstage(); |
snext = 0; |
} |
/* |
** dump the staging buffer |
*/ |
dumpstage() |
{ |
int i; |
stail = snext; |
snext = stage; |
while(snext < stail) |
{ |
if(optimize) |
{ |
restart: |
i = -1; |
while(++i <= HIGH_SEQ) |
if(peep(seq[i])) |
{ |
#ifdef DISOPT |
if(isatty(output)) |
fprintf(stderr, " optimized %2u\n", i); |
#endif |
goto restart; |
} |
} |
outcode(snext[0], snext[1]); |
snext += 2; |
} |
} |
/* |
** change to a new segment |
** may be called with NULL, CODESEG, or DATASEG |
** With NASM the section names are case-sensitive |
*/ |
toseg(newseg) |
int newseg; |
{ |
if(oldseg == newseg) |
return; |
/* if(oldseg == CODESEG) |
outline("_TEXT ENDS"); |
else if(oldseg == DATASEG) |
outline("_DATA ENDS"); <-- */ |
/* - FASM |
if(newseg == CODESEG) |
{ |
outline("SECTION .text"); |
} |
else if(newseg == DATASEG) |
outline("SECTION .data"); |
*/ |
oldseg = newseg; |
} |
/* |
** declare entry point |
*/ |
public(ident) int ident;{ |
if(ident == FUNCTION) |
toseg(CODESEG); |
else toseg(DATASEG); |
/* - FASM |
outstr("GLOBAL "); |
outname(ssname); |
*/ |
newline(); |
outname(ssname); |
if(ident == FUNCTION) { |
colon(); |
newline(); |
} |
} |
/* |
** declare external reference |
*/ |
external(name, size, ident) char *name; int size, ident; { |
if(ident == FUNCTION) |
toseg(CODESEG); |
else toseg(DATASEG); |
/* - FASM |
outstr("EXTERN "); |
outname(name); |
/# colon(); |
outsize(size, ident); <-- #/ |
newline(); |
*/ |
} |
/* |
** output the size of the object pointed to. |
*/ |
outsize(size, ident) int size, ident; |
{ |
/* why not size on FUNCTION and POINTER ? */ |
if (ident == FUNCTION) |
outstr("NEAR"); |
else if (ident == POINTER) |
outstr("DWORD"); |
else if(size == 1) |
outstr("BYTE"); |
else if(size == 2) |
outstr("WORD"); |
else |
outstr("DWORD"); |
} |
/* |
** point to following object(s) |
*/ |
point() { |
outline(" DW $+2"); |
} |
/* |
** dump the literal pool |
*/ |
dumplits(size) int size; |
{ |
int j, k; |
k = 0; |
while (k < litptr) |
{ |
if(size == 1) |
{ |
gen(BYTE_, NULL); |
} |
else if (size == 2) |
{ |
gen(WORD_, NULL); |
} |
else |
{ |
gen(DWORD_,NULL); |
} |
j = 10; |
while(j--) |
{ |
outdec(getint(litq + k, size)); |
k += size; |
if(j == 0 || k >= litptr) |
{ |
newline(); |
break; |
} |
fputc(',', output); |
} |
} |
} |
/* |
** dump zeroes for default initial values |
*/ |
dumpzero(size, count) |
int size, count; |
{ |
if(count > 0) |
{ |
if(size == 1) |
gen(BYTEr0, count); |
else if (size == 2) |
gen(WORDr0, count); |
else |
gen(DWORDr0, count); |
} |
} |
/******************** optimizer functions ***********************/ |
/* |
** Try to optimize sequence at snext in the staging buffer. |
*/ |
peep(seq) int *seq; { |
int *next, *count, *pop, n, skip, tmp, reply; |
char c; |
next = snext; |
count = seq++; |
while(*seq) { |
switch(*seq) { |
case any: if(next < stail) break; return (NO); |
case pfree: if(isfree(PRI, next)) break; return (NO); |
case sfree: if(isfree(SEC, next)) break; return (NO); |
case comm: if(*next & COMMUTES) break; return (NO); |
case _pop: if(pop = getpop(next)) break; return (NO); |
default: if(next >= stail || *next != *seq) return (NO); |
} |
next += 2; ++seq; |
} |
/****** have a match, now optimize it ******/ |
*count += 1; |
reply = skip = NO; |
while(*(++seq) || skip) { |
if(skip) { |
if(*seq == 0) skip = NO; |
continue; |
} |
if(*seq >= PCODES) { |
c = *seq & 0xFF; /* get low byte of command */ |
n = c; /* and sign extend into n */ |
switch(*seq & 0xFF00) { |
case ife: if(snext[1] != n) skip = YES; break; |
case ifl: if(snext[1] >= n) skip = YES; break; |
case go: snext += (n<<1); break; |
case gc: snext[0] = snext[(n<<1)]; goto done; |
case gv: snext[1] = snext[(n<<1)+1]; goto done; |
case sum: snext[1] += snext[(n<<1)+1]; goto done; |
case neg: snext[1] = -snext[1]; goto done; |
case topop: pop[0] = n; pop[1] = snext[1]; goto done; |
case swv: tmp = snext[1]; |
snext[1] = snext[(n<<1)+1]; |
snext[(n<<1)+1] = tmp; |
done: reply = YES; |
break; |
} |
} |
else snext[0] = *seq; /* set p-code */ |
} |
return (reply); |
} |
/* |
** Is the primary or secondary register free? |
** Is it zapped or unused by the p-code at pp |
** or a successor? If the primary register is |
** unused by it still may not be free if the |
** context uses the value of the expression. |
*/ |
isfree(reg, pp) int reg, *pp; { |
char *cp; |
while(pp < stail) { |
cp = code[*pp]; |
if(*cp & USES & reg) return (NO); |
if(*cp & ZAPS & reg) return (YES); |
pp += 2; |
} |
if(usexpr) return (reg & 001); /* PRI => NO, SEC => YES at end */ |
else return (YES); |
} |
/* |
** Get place where the currently pushed value is popped? |
** NOTE: Function arguments are not popped, they are |
** wasted with an ADDSP. |
*/ |
getpop(next) int *next; { |
char *cp; |
int level; level = 0; |
while(YES) { |
if(next >= stail) /* compiler error */ |
return 0; |
if(*next == POP2) |
if(level) --level; |
else return next; /* have a matching POP2 */ |
else if(*next == ADDSP) { /* after func call */ |
if((level -= (next[1]>>LBPW)) < 0) |
return 0; |
} |
else { |
cp = code[*next]; /* code string ptr */ |
if(*cp & PUSHES) ++level; /* must be a push */ |
} |
next += 2; |
} |
} |
/******************* output functions *********************/ |
colon() { |
fputc(':', output); |
} |
newline() { |
fputc('\15', output); |
fputc(NEWLINE, output); |
} |
/* |
** output assembly code. |
** |
*/ |
outcode(pcode, value) |
int pcode, value; |
{ |
int part, skip, count; |
int byte_opt; |
char *cp, *back; |
int loc_label; |
part = back = 0; |
skip = NO; |
byte_opt = 0; |
cp = code[pcode] + 1; /* skip 1st byte of code string */ |
#ifdef _MSC_VER |
switch (pcode) |
{ |
case BYTE_: |
case BYTEn: |
case BYTEr0: |
case WORD_: |
case WORDn: |
case WORDr0: |
case DWORD_: |
case DWORDn: |
case DWORDr0: |
case REFm: |
case COMMAn: |
case PLUSn: |
break; |
default: |
dump_debug (pcode, value); |
outtab (); |
} |
#endif |
if (pcode == ADD1n) |
{ |
if (value < 0) |
{ |
pcode = SUB1n; |
value = -value; |
} |
if (value < 128) |
{ |
byte_opt = 1; |
} |
} |
while(*cp) |
{ |
if(*cp == '<') |
{ |
++cp; /* skip to action code */ |
if(skip == NO) |
switch(*cp) |
{ |
case 'm': |
outname(value+NAME); |
break; /* mem ref by label */ |
case 'n': |
if (byte_opt) |
{ |
outstr ("BYTE "); |
} |
outdec(value); |
break; /* numeric constant */ |
case 'o': |
offset(value); |
break; /* numeric constant */ |
case 'l': |
outdec(litlab); |
break; /* current literal label */ |
case 'g': /* generate local label */ |
loc_label = getlabel (); |
break; |
case 'd': /* dump local label */ |
outdec(loc_label); |
break; |
} |
cp += 2; /* skip past > */ |
} |
else if(*cp == '?') /* ?..if value...?...if not value...? */ |
{ |
switch(++part) |
{ |
case 1: |
if(value == 0) |
skip = YES; |
break; |
case 2: |
skip = !skip; |
break; |
case 3: |
part = 0; |
skip = NO; |
break; |
} |
++cp; /* skip past ? */ |
} |
else if(*cp == '#') |
{ /* repeat #...# value times */ |
++cp; |
if(back == 0) |
{ |
if((count = value) < 1) |
{ |
while(*cp && *cp++ != '#') |
; |
continue; |
} |
back = cp; |
continue; |
} |
if(--count > 0) |
cp = back; |
else |
back = 0; |
} |
else if(skip == NO) |
fputc(*cp++, output); |
else |
++cp; |
} |
} |
outdec(number) int number; { |
int k, zs; |
char c, *q, *r; |
zs = 0; |
k = 1000000000; |
#ifdef _MSC_VER |
// fprintf(output, "/* %d */", number); |
#endif |
if(number < 0) { |
number = -number; |
fputc('-', output); |
} |
while (k >= 1) { |
q = 0; |
r = number; |
while(r >= k) {++q; r = r - k;} |
c = q + '0'; |
if(c != '0' || k == 1 || zs) { |
zs = 1; |
fputc(c, output); |
} |
number = r; |
k /= 10; |
} |
} |
offset(number) |
int number; |
{ |
int k, zs; |
char c, *q, *r; |
zs = 0; |
k = 1000000000; |
if(number < 0) { |
number = -number; |
fputc('-', output); |
} |
else |
{ |
fputc('+',output); |
} |
while (k >= 1) { |
q = 0; |
r = number; |
while(r >= k) {++q; r = r - k;} |
c = q + '0'; |
if(c != '0' || k == 1 || zs) { |
zs = 1; |
fputc(c, output); |
} |
number = r; |
k /= 10; |
} |
} |
outline(ptr) char ptr[]; { |
outstr(ptr); |
newline(); |
} |
outname(ptr) char ptr[]; { |
outstr("_"); |
while(*ptr >= ' ') fputc(*ptr++, output); |
} |
outstr(ptr) char ptr[]; { |
while(*ptr == '\t' || *ptr >= ' ') fputc(*ptr++, output); |
} |
outtab () |
{ |
fputc ('\t', output); |
} |