test.M1 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686
  1. # Core program
  2. # Defining function exit
  3. :FUNCTION_exit
  4. pop_ebx
  5. pop_ebx
  6. mov_eax, %1
  7. int !0x80
  8. ret
  9. # Defining function fgetc
  10. :FUNCTION_fgetc
  11. mov_eax, %3
  12. lea_ebx,[esp+DWORD] %4
  13. mov_ebx,[ebx]
  14. push_ebx
  15. mov_ecx,esp
  16. mov_edx, %1
  17. int !0x80
  18. test_eax,eax
  19. pop_eax
  20. jne %FUNCTION_fgetc_Done
  21. mov_eax, %-1
  22. :FUNCTION_fgetc_Done
  23. ret
  24. # Defining function fputc
  25. :FUNCTION_fputc
  26. mov_eax, %4
  27. lea_ebx,[esp+DWORD] %4
  28. mov_ebx,[ebx]
  29. lea_ecx,[esp+DWORD] %8
  30. mov_edx, %1
  31. int !0x80
  32. ret
  33. # Defining function open
  34. :FUNCTION_open
  35. lea_ebx,[esp+DWORD] %12
  36. mov_ebx,[ebx]
  37. lea_ecx,[esp+DWORD] %8
  38. mov_ecx,[ecx]
  39. lea_edx,[esp+DWORD] %4
  40. mov_edx,[edx]
  41. mov_eax, %5
  42. int !0x80
  43. ret
  44. # Defining function fopen
  45. :FUNCTION_fopen
  46. # Defining local f
  47. push_eax #f
  48. # IF_0
  49. mov_eax, %119
  50. push_eax #_common_recursion
  51. lea_eax,[esp+DWORD] %12
  52. mov_eax,[eax]
  53. push_eax #_common_recursion
  54. mov_eax, %0
  55. pop_ebx # _common_recursion
  56. add_eax,ebx
  57. movsx_eax,BYTE_PTR_[eax]
  58. pop_ebx # _common_recursion
  59. cmp
  60. sete_al
  61. movzx_eax,al
  62. test_eax,eax
  63. je %ELSE_0
  64. lea_eax,[esp+DWORD] %0
  65. push_eax #_common_recursion
  66. lea_eax,[esp+DWORD] %16
  67. mov_eax,[eax]
  68. push_eax #_process_expression1
  69. mov_eax, %577
  70. push_eax #_process_expression2
  71. mov_eax, %384
  72. push_eax #_process_expression2
  73. call %FUNCTION_open
  74. pop_ebx # _process_expression_locals
  75. pop_ebx # _process_expression_locals
  76. pop_ebx # _process_expression_locals
  77. pop_ebx # _common_recursion
  78. mov_[ebx],eax
  79. jmp %_END_IF_0
  80. :ELSE_0
  81. lea_eax,[esp+DWORD] %0
  82. push_eax #_common_recursion
  83. lea_eax,[esp+DWORD] %16
  84. mov_eax,[eax]
  85. push_eax #_process_expression1
  86. mov_eax, %0
  87. push_eax #_process_expression2
  88. mov_eax, %0
  89. push_eax #_process_expression2
  90. call %FUNCTION_open
  91. pop_ebx # _process_expression_locals
  92. pop_ebx # _process_expression_locals
  93. pop_ebx # _process_expression_locals
  94. pop_ebx # _common_recursion
  95. mov_[ebx],eax
  96. :_END_IF_0
  97. # IF_1
  98. mov_eax, %0
  99. push_eax #_common_recursion
  100. lea_eax,[esp+DWORD] %4
  101. mov_eax,[eax]
  102. pop_ebx # _common_recursion
  103. cmp
  104. setg_al
  105. movzx_eax,al
  106. test_eax,eax
  107. je %ELSE_1
  108. mov_eax, %0
  109. pop_ebx # _return_result_locals
  110. ret
  111. jmp %_END_IF_1
  112. :ELSE_1
  113. :_END_IF_1
  114. lea_eax,[esp+DWORD] %0
  115. mov_eax,[eax]
  116. pop_ebx # _return_result_locals
  117. ret
  118. # Defining function close
  119. :FUNCTION_close
  120. lea_ebx,[esp+DWORD] %4
  121. mov_eax, %6
  122. int !0x80
  123. ret
  124. # Defining function fclose
  125. :FUNCTION_fclose
  126. # Defining local error
  127. lea_eax,[esp+DWORD] %4
  128. mov_eax,[eax]
  129. push_eax #_process_expression1
  130. call %FUNCTION_close
  131. pop_ebx # _process_expression_locals
  132. push_eax #error
  133. lea_eax,[esp+DWORD] %0
  134. mov_eax,[eax]
  135. pop_ebx # _return_result_locals
  136. ret
  137. # Defining function file_print
  138. :FUNCTION_file_print
  139. :WHILE_0
  140. mov_eax, %0
  141. push_eax #_common_recursion
  142. lea_eax,[esp+DWORD] %12
  143. mov_eax,[eax]
  144. push_eax #_common_recursion
  145. mov_eax, %0
  146. pop_ebx # _common_recursion
  147. add_eax,ebx
  148. movsx_eax,BYTE_PTR_[eax]
  149. pop_ebx # _common_recursion
  150. cmp
  151. setne_al
  152. movzx_eax,al
  153. test_eax,eax
  154. je %END_WHILE_0
  155. # THEN_while_0
  156. lea_eax,[esp+DWORD] %8
  157. mov_eax,[eax]
  158. push_eax #_common_recursion
  159. mov_eax, %0
  160. pop_ebx # _common_recursion
  161. add_eax,ebx
  162. movsx_eax,BYTE_PTR_[eax]
  163. push_eax #_process_expression1
  164. lea_eax,[esp+DWORD] %8
  165. mov_eax,[eax]
  166. push_eax #_process_expression2
  167. call %FUNCTION_fputc
  168. pop_ebx # _process_expression_locals
  169. pop_ebx # _process_expression_locals
  170. lea_eax,[esp+DWORD] %8
  171. push_eax #_common_recursion
  172. lea_eax,[esp+DWORD] %12
  173. mov_eax,[eax]
  174. push_eax #_common_recursion
  175. mov_eax, %1
  176. pop_ebx # _common_recursion
  177. add_eax,ebx
  178. pop_ebx # _common_recursion
  179. mov_[ebx],eax
  180. jmp %WHILE_0
  181. :END_WHILE_0
  182. ret
  183. # Defining function malloc
  184. :FUNCTION_malloc
  185. mov_eax,[esp+DWORD] %4
  186. push_eax
  187. mov_eax, %45
  188. mov_ebx, %0
  189. int !0x80
  190. pop_ebx
  191. add_ebx,eax
  192. push_eax
  193. push_ebx
  194. mov_eax, %45
  195. int !0x80
  196. pop_ebx
  197. cmp
  198. pop_eax
  199. je %FUNCTION_malloc_Done
  200. mov_eax, %-1
  201. :FUNCTION_malloc_Done
  202. ret
  203. # Defining function memset
  204. :FUNCTION_memset
  205. # Defining local s
  206. push_eax #s
  207. # FOR_initialization_0
  208. lea_eax,[esp+DWORD] %0
  209. push_eax #_common_recursion
  210. lea_eax,[esp+DWORD] %20
  211. mov_eax,[eax]
  212. pop_ebx # _common_recursion
  213. mov_[ebx],eax
  214. :FOR_0
  215. mov_eax, %0
  216. push_eax #_common_recursion
  217. lea_eax,[esp+DWORD] %12
  218. mov_eax,[eax]
  219. pop_ebx # _common_recursion
  220. cmp
  221. setl_al
  222. movzx_eax,al
  223. test_eax,eax
  224. je %FOR_END_0
  225. jmp %FOR_THEN_0
  226. :FOR_ITER_0
  227. lea_eax,[esp+DWORD] %8
  228. push_eax #_common_recursion
  229. lea_eax,[esp+DWORD] %12
  230. mov_eax,[eax]
  231. push_eax #_common_recursion
  232. mov_eax, %1
  233. pop_ebx # _common_recursion
  234. sub_ebx,eax
  235. mov_eax,ebx
  236. pop_ebx # _common_recursion
  237. mov_[ebx],eax
  238. jmp %FOR_0
  239. :FOR_THEN_0
  240. lea_eax,[esp+DWORD] %0
  241. mov_eax,[eax]
  242. push_eax #_common_recursion
  243. mov_eax, %0
  244. pop_ebx # _common_recursion
  245. add_eax,ebx
  246. push_eax #_common_recursion
  247. lea_eax,[esp+DWORD] %16
  248. mov_eax,[eax]
  249. pop_ebx # _common_recursion
  250. mov_[ebx],al
  251. lea_eax,[esp+DWORD] %0
  252. push_eax #_common_recursion
  253. lea_eax,[esp+DWORD] %4
  254. mov_eax,[eax]
  255. push_eax #_common_recursion
  256. mov_eax, %1
  257. pop_ebx # _common_recursion
  258. add_eax,ebx
  259. pop_ebx # _common_recursion
  260. mov_[ebx],eax
  261. jmp %FOR_ITER_0
  262. :FOR_END_0
  263. pop_ebx # _recursive_statement_locals
  264. ret
  265. # Defining function calloc
  266. :FUNCTION_calloc
  267. # Defining local ret
  268. lea_eax,[esp+DWORD] %8
  269. mov_eax,[eax]
  270. push_eax #_common_recursion
  271. lea_eax,[esp+DWORD] %8
  272. mov_eax,[eax]
  273. pop_ebx # _common_recursion
  274. imul_ebx
  275. push_eax #_process_expression1
  276. call %FUNCTION_malloc
  277. pop_ebx # _process_expression_locals
  278. push_eax #ret
  279. lea_eax,[esp+DWORD] %0
  280. mov_eax,[eax]
  281. push_eax #_process_expression1
  282. mov_eax, %0
  283. push_eax #_process_expression2
  284. lea_eax,[esp+DWORD] %20
  285. mov_eax,[eax]
  286. push_eax #_common_recursion
  287. lea_eax,[esp+DWORD] %20
  288. mov_eax,[eax]
  289. pop_ebx # _common_recursion
  290. imul_ebx
  291. push_eax #_process_expression2
  292. call %FUNCTION_memset
  293. pop_ebx # _process_expression_locals
  294. pop_ebx # _process_expression_locals
  295. pop_ebx # _process_expression_locals
  296. lea_eax,[esp+DWORD] %0
  297. mov_eax,[eax]
  298. pop_ebx # _return_result_locals
  299. ret
  300. # Defining function free
  301. :FUNCTION_free
  302. ret
  303. # Defining function match
  304. :FUNCTION_match
  305. # Defining local i
  306. mov_eax, %0
  307. push_eax #_common_recursion
  308. mov_eax, %1
  309. pop_ebx # _common_recursion
  310. sub_ebx,eax
  311. mov_eax,ebx
  312. push_eax #i
  313. :DO_0
  314. lea_eax,[esp+DWORD] %0
  315. push_eax #_common_recursion
  316. lea_eax,[esp+DWORD] %4
  317. mov_eax,[eax]
  318. push_eax #_common_recursion
  319. mov_eax, %1
  320. pop_ebx # _common_recursion
  321. add_eax,ebx
  322. pop_ebx # _common_recursion
  323. mov_[ebx],eax
  324. # IF_2
  325. lea_eax,[esp+DWORD] %12
  326. mov_eax,[eax]
  327. push_eax #_common_recursion
  328. lea_eax,[esp+DWORD] %4
  329. mov_eax,[eax]
  330. pop_ebx # _common_recursion
  331. add_eax,ebx
  332. movsx_eax,BYTE_PTR_[eax]
  333. push_eax #_common_recursion
  334. lea_eax,[esp+DWORD] %12
  335. mov_eax,[eax]
  336. push_eax #_common_recursion
  337. lea_eax,[esp+DWORD] %8
  338. mov_eax,[eax]
  339. pop_ebx # _common_recursion
  340. add_eax,ebx
  341. movsx_eax,BYTE_PTR_[eax]
  342. pop_ebx # _common_recursion
  343. cmp
  344. setne_al
  345. movzx_eax,al
  346. test_eax,eax
  347. je %ELSE_2
  348. mov_eax, %0
  349. pop_ebx # _return_result_locals
  350. ret
  351. jmp %_END_IF_2
  352. :ELSE_2
  353. :_END_IF_2
  354. mov_eax, %0
  355. push_eax #_common_recursion
  356. lea_eax,[esp+DWORD] %16
  357. mov_eax,[eax]
  358. push_eax #_common_recursion
  359. lea_eax,[esp+DWORD] %8
  360. mov_eax,[eax]
  361. pop_ebx # _common_recursion
  362. add_eax,ebx
  363. movsx_eax,BYTE_PTR_[eax]
  364. pop_ebx # _common_recursion
  365. cmp
  366. setne_al
  367. movzx_eax,al
  368. push_eax #_common_recursion
  369. mov_eax, %0
  370. push_eax #_common_recursion
  371. lea_eax,[esp+DWORD] %16
  372. mov_eax,[eax]
  373. push_eax #_common_recursion
  374. lea_eax,[esp+DWORD] %12
  375. mov_eax,[eax]
  376. pop_ebx # _common_recursion
  377. add_eax,ebx
  378. movsx_eax,BYTE_PTR_[eax]
  379. pop_ebx # _common_recursion
  380. cmp
  381. setne_al
  382. movzx_eax,al
  383. pop_ebx # _common_recursion
  384. and_eax,ebx
  385. test_eax,eax
  386. jne %DO_0
  387. :DO_END_0
  388. mov_eax, %1
  389. pop_ebx # _return_result_locals
  390. ret
  391. # Defining function consume_token
  392. :FUNCTION_consume_token
  393. # Defining local i
  394. mov_eax, %0
  395. push_eax #i
  396. # Defining local c
  397. lea_eax,[esp+DWORD] %12
  398. mov_eax,[eax]
  399. push_eax #_process_expression1
  400. call %FUNCTION_fgetc
  401. pop_ebx # _process_expression_locals
  402. push_eax #c
  403. :DO_1
  404. lea_eax,[esp+DWORD] %12
  405. mov_eax,[eax]
  406. push_eax #_common_recursion
  407. lea_eax,[esp+DWORD] %8
  408. mov_eax,[eax]
  409. pop_ebx # _common_recursion
  410. add_eax,ebx
  411. push_eax #_common_recursion
  412. lea_eax,[esp+DWORD] %4
  413. mov_eax,[eax]
  414. pop_ebx # _common_recursion
  415. mov_[ebx],al
  416. lea_eax,[esp+DWORD] %4
  417. push_eax #_common_recursion
  418. lea_eax,[esp+DWORD] %8
  419. mov_eax,[eax]
  420. push_eax #_common_recursion
  421. mov_eax, %1
  422. pop_ebx # _common_recursion
  423. add_eax,ebx
  424. pop_ebx # _common_recursion
  425. mov_[ebx],eax
  426. lea_eax,[esp+DWORD] %0
  427. push_eax #_common_recursion
  428. lea_eax,[esp+DWORD] %20
  429. mov_eax,[eax]
  430. push_eax #_process_expression1
  431. call %FUNCTION_fgetc
  432. pop_ebx # _process_expression_locals
  433. pop_ebx # _common_recursion
  434. mov_[ebx],eax
  435. mov_eax, %32
  436. push_eax #_common_recursion
  437. lea_eax,[esp+DWORD] %4
  438. mov_eax,[eax]
  439. pop_ebx # _common_recursion
  440. cmp
  441. setne_al
  442. movzx_eax,al
  443. push_eax #_common_recursion
  444. mov_eax, %9
  445. push_eax #_common_recursion
  446. lea_eax,[esp+DWORD] %8
  447. mov_eax,[eax]
  448. pop_ebx # _common_recursion
  449. cmp
  450. setne_al
  451. movzx_eax,al
  452. pop_ebx # _common_recursion
  453. and_eax,ebx
  454. push_eax #_common_recursion
  455. mov_eax, %10
  456. push_eax #_common_recursion
  457. lea_eax,[esp+DWORD] %8
  458. mov_eax,[eax]
  459. pop_ebx # _common_recursion
  460. cmp
  461. setne_al
  462. movzx_eax,al
  463. pop_ebx # _common_recursion
  464. and_eax,ebx
  465. push_eax #_common_recursion
  466. mov_eax, %62
  467. push_eax #_common_recursion
  468. lea_eax,[esp+DWORD] %8
  469. mov_eax,[eax]
  470. pop_ebx # _common_recursion
  471. cmp
  472. setne_al
  473. movzx_eax,al
  474. pop_ebx # _common_recursion
  475. and_eax,ebx
  476. test_eax,eax
  477. jne %DO_1
  478. :DO_END_1
  479. pop_ebx # _recursive_statement_locals
  480. pop_ebx # _recursive_statement_locals
  481. ret
  482. # Defining function storeLabel
  483. :FUNCTION_storeLabel
  484. # Defining local entry
  485. mov_eax, %1
  486. push_eax #_process_expression1
  487. mov_eax, %8
  488. push_eax #_process_expression2
  489. call %FUNCTION_calloc
  490. pop_ebx # _process_expression_locals
  491. pop_ebx # _process_expression_locals
  492. push_eax #entry
  493. lea_eax,[esp+DWORD] %0
  494. mov_eax,[eax]
  495. # looking up offset
  496. push_eax #_common_recursion
  497. mov_eax, &GLOBAL_jump_table
  498. mov_eax,[eax]
  499. pop_ebx # _common_recursion
  500. mov_[ebx],eax
  501. mov_eax, &GLOBAL_jump_table
  502. push_eax #_common_recursion
  503. lea_eax,[esp+DWORD] %4
  504. mov_eax,[eax]
  505. pop_ebx # _common_recursion
  506. mov_[ebx],eax
  507. lea_eax,[esp+DWORD] %0
  508. mov_eax,[eax]
  509. # looking up offset
  510. # -> offset calculation
  511. mov_ebx, %4
  512. add_eax,ebx
  513. push_eax #_common_recursion
  514. mov_eax, %4096
  515. push_eax #_common_recursion
  516. mov_eax, %1
  517. pop_ebx # _common_recursion
  518. add_eax,ebx
  519. push_eax #_process_expression1
  520. mov_eax, %1
  521. push_eax #_process_expression2
  522. call %FUNCTION_calloc
  523. pop_ebx # _process_expression_locals
  524. pop_ebx # _process_expression_locals
  525. pop_ebx # _common_recursion
  526. mov_[ebx],eax
  527. lea_eax,[esp+DWORD] %8
  528. mov_eax,[eax]
  529. push_eax #_process_expression1
  530. lea_eax,[esp+DWORD] %4
  531. mov_eax,[eax]
  532. # looking up offset
  533. # -> offset calculation
  534. mov_ebx, %4
  535. add_eax,ebx
  536. mov_eax,[eax]
  537. push_eax #_process_expression2
  538. call %FUNCTION_consume_token
  539. pop_ebx # _process_expression_locals
  540. pop_ebx # _process_expression_locals
  541. # IF_3
  542. mov_eax, %95
  543. push_eax #_common_recursion
  544. lea_eax,[esp+DWORD] %4
  545. mov_eax,[eax]
  546. # looking up offset
  547. # -> offset calculation
  548. mov_ebx, %4
  549. add_eax,ebx
  550. mov_eax,[eax]
  551. push_eax #_common_recursion
  552. mov_eax, %0
  553. pop_ebx # _common_recursion
  554. add_eax,ebx
  555. movsx_eax,BYTE_PTR_[eax]
  556. pop_ebx # _common_recursion
  557. cmp
  558. sete_al
  559. movzx_eax,al
  560. test_eax,eax
  561. je %ELSE_3
  562. mov_eax, &GLOBAL_jump_table
  563. push_eax #_common_recursion
  564. mov_eax, &GLOBAL_jump_table
  565. mov_eax,[eax]
  566. # looking up offset
  567. mov_eax,[eax]
  568. pop_ebx # _common_recursion
  569. mov_[ebx],eax
  570. jmp %_END_IF_3
  571. :ELSE_3
  572. :_END_IF_3
  573. pop_ebx # _recursive_statement_locals
  574. ret
  575. # Defining function line_Comment
  576. :FUNCTION_line_Comment
  577. # Defining local c
  578. lea_eax,[esp+DWORD] %4
  579. mov_eax,[eax]
  580. push_eax #_process_expression1
  581. call %FUNCTION_fgetc
  582. pop_ebx # _process_expression_locals
  583. push_eax #c
  584. :WHILE_1
  585. mov_eax, %10
  586. push_eax #_common_recursion
  587. lea_eax,[esp+DWORD] %4
  588. mov_eax,[eax]
  589. pop_ebx # _common_recursion
  590. cmp
  591. setne_al
  592. movzx_eax,al
  593. push_eax #_common_recursion
  594. mov_eax, %13
  595. push_eax #_common_recursion
  596. lea_eax,[esp+DWORD] %8
  597. mov_eax,[eax]
  598. pop_ebx # _common_recursion
  599. cmp
  600. setne_al
  601. movzx_eax,al
  602. pop_ebx # _common_recursion
  603. and_eax,ebx
  604. test_eax,eax
  605. je %END_WHILE_1
  606. # THEN_while_1
  607. lea_eax,[esp+DWORD] %0
  608. push_eax #_common_recursion
  609. lea_eax,[esp+DWORD] %12
  610. mov_eax,[eax]
  611. push_eax #_process_expression1
  612. call %FUNCTION_fgetc
  613. pop_ebx # _process_expression_locals
  614. pop_ebx # _common_recursion
  615. mov_[ebx],eax
  616. jmp %WHILE_1
  617. :END_WHILE_1
  618. pop_ebx # _recursive_statement_locals
  619. ret
  620. # Defining function purge_string
  621. :FUNCTION_purge_string
  622. # Defining local c
  623. lea_eax,[esp+DWORD] %4
  624. mov_eax,[eax]
  625. push_eax #_process_expression1
  626. call %FUNCTION_fgetc
  627. pop_ebx # _process_expression_locals
  628. push_eax #c
  629. :WHILE_2
  630. mov_eax, %0xFFFFFFFF
  631. push_eax #_common_recursion
  632. lea_eax,[esp+DWORD] %4
  633. mov_eax,[eax]
  634. pop_ebx # _common_recursion
  635. cmp
  636. setne_al
  637. movzx_eax,al
  638. push_eax #_common_recursion
  639. mov_eax, %34
  640. push_eax #_common_recursion
  641. lea_eax,[esp+DWORD] %8
  642. mov_eax,[eax]
  643. pop_ebx # _common_recursion
  644. cmp
  645. setne_al
  646. movzx_eax,al
  647. pop_ebx # _common_recursion
  648. and_eax,ebx
  649. test_eax,eax
  650. je %END_WHILE_2
  651. # THEN_while_2
  652. lea_eax,[esp+DWORD] %0
  653. push_eax #_common_recursion
  654. lea_eax,[esp+DWORD] %12
  655. mov_eax,[eax]
  656. push_eax #_process_expression1
  657. call %FUNCTION_fgetc
  658. pop_ebx # _process_expression_locals
  659. pop_ebx # _common_recursion
  660. mov_[ebx],eax
  661. jmp %WHILE_2
  662. :END_WHILE_2
  663. pop_ebx # _recursive_statement_locals
  664. ret
  665. # Defining function first_pass
  666. :FUNCTION_first_pass
  667. # IF_4
  668. mov_eax, %0
  669. push_eax #_common_recursion
  670. lea_eax,[esp+DWORD] %8
  671. mov_eax,[eax]
  672. pop_ebx # _common_recursion
  673. cmp
  674. sete_al
  675. movzx_eax,al
  676. test_eax,eax
  677. je %ELSE_4
  678. ret
  679. jmp %_END_IF_4
  680. :ELSE_4
  681. :_END_IF_4
  682. lea_eax,[esp+DWORD] %4
  683. mov_eax,[eax]
  684. # looking up offset
  685. mov_eax,[eax]
  686. push_eax #_process_expression1
  687. call %FUNCTION_first_pass
  688. pop_ebx # _process_expression_locals
  689. # Defining local source_file
  690. lea_eax,[esp+DWORD] %4
  691. mov_eax,[eax]
  692. # looking up offset
  693. # -> offset calculation
  694. mov_ebx, %4
  695. add_eax,ebx
  696. mov_eax,[eax]
  697. push_eax #_process_expression1
  698. mov_eax, &STRING_0
  699. push_eax #_process_expression2
  700. call %FUNCTION_fopen
  701. pop_ebx # _process_expression_locals
  702. pop_ebx # _process_expression_locals
  703. push_eax #source_file
  704. # IF_5
  705. mov_eax, %0
  706. push_eax #_common_recursion
  707. lea_eax,[esp+DWORD] %4
  708. mov_eax,[eax]
  709. pop_ebx # _common_recursion
  710. cmp
  711. sete_al
  712. movzx_eax,al
  713. test_eax,eax
  714. je %ELSE_5
  715. mov_eax, &STRING_1
  716. push_eax #_process_expression1
  717. mov_eax, %2
  718. push_eax #_process_expression2
  719. call %FUNCTION_file_print
  720. pop_ebx # _process_expression_locals
  721. pop_ebx # _process_expression_locals
  722. lea_eax,[esp+DWORD] %8
  723. mov_eax,[eax]
  724. # looking up offset
  725. # -> offset calculation
  726. mov_ebx, %4
  727. add_eax,ebx
  728. mov_eax,[eax]
  729. push_eax #_process_expression1
  730. mov_eax, %2
  731. push_eax #_process_expression2
  732. call %FUNCTION_file_print
  733. pop_ebx # _process_expression_locals
  734. pop_ebx # _process_expression_locals
  735. mov_eax, &STRING_2
  736. push_eax #_process_expression1
  737. mov_eax, %2
  738. push_eax #_process_expression2
  739. call %FUNCTION_file_print
  740. pop_ebx # _process_expression_locals
  741. pop_ebx # _process_expression_locals
  742. mov_eax, %1
  743. push_eax #_process_expression1
  744. call %FUNCTION_exit
  745. pop_ebx # _process_expression_locals
  746. jmp %_END_IF_5
  747. :ELSE_5
  748. :_END_IF_5
  749. # Defining local c
  750. push_eax #c
  751. # FOR_initialization_1
  752. lea_eax,[esp+DWORD] %0
  753. push_eax #_common_recursion
  754. lea_eax,[esp+DWORD] %8
  755. mov_eax,[eax]
  756. push_eax #_process_expression1
  757. call %FUNCTION_fgetc
  758. pop_ebx # _process_expression_locals
  759. pop_ebx # _common_recursion
  760. mov_[ebx],eax
  761. :FOR_1
  762. mov_eax, %0xFFFFFFFF
  763. push_eax #_common_recursion
  764. lea_eax,[esp+DWORD] %4
  765. mov_eax,[eax]
  766. pop_ebx # _common_recursion
  767. cmp
  768. setne_al
  769. movzx_eax,al
  770. test_eax,eax
  771. je %FOR_END_1
  772. jmp %FOR_THEN_1
  773. :FOR_ITER_1
  774. lea_eax,[esp+DWORD] %0
  775. push_eax #_common_recursion
  776. lea_eax,[esp+DWORD] %8
  777. mov_eax,[eax]
  778. push_eax #_process_expression1
  779. call %FUNCTION_fgetc
  780. pop_ebx # _process_expression_locals
  781. pop_ebx # _common_recursion
  782. mov_[ebx],eax
  783. jmp %FOR_1
  784. :FOR_THEN_1
  785. # IF_6
  786. mov_eax, %58
  787. push_eax #_common_recursion
  788. lea_eax,[esp+DWORD] %4
  789. mov_eax,[eax]
  790. pop_ebx # _common_recursion
  791. cmp
  792. sete_al
  793. movzx_eax,al
  794. test_eax,eax
  795. je %ELSE_6
  796. lea_eax,[esp+DWORD] %4
  797. mov_eax,[eax]
  798. push_eax #_process_expression1
  799. call %FUNCTION_storeLabel
  800. pop_ebx # _process_expression_locals
  801. jmp %_END_IF_6
  802. :ELSE_6
  803. # IF_7
  804. lea_eax,[esp+DWORD] %0
  805. mov_eax,[eax]
  806. push_eax #_common_recursion
  807. mov_eax, %35
  808. pop_ebx # _common_recursion
  809. cmp
  810. sete_al
  811. movzx_eax,al
  812. push_eax #_common_recursion
  813. lea_eax,[esp+DWORD] %4
  814. mov_eax,[eax]
  815. push_eax #_common_recursion
  816. mov_eax, %59
  817. pop_ebx # _common_recursion
  818. cmp
  819. sete_al
  820. movzx_eax,al
  821. pop_ebx # _common_recursion
  822. or_eax,ebx
  823. test_eax,eax
  824. je %ELSE_7
  825. lea_eax,[esp+DWORD] %4
  826. mov_eax,[eax]
  827. push_eax #_process_expression1
  828. call %FUNCTION_line_Comment
  829. pop_ebx # _process_expression_locals
  830. jmp %_END_IF_7
  831. :ELSE_7
  832. # IF_8
  833. mov_eax, %34
  834. push_eax #_common_recursion
  835. lea_eax,[esp+DWORD] %4
  836. mov_eax,[eax]
  837. pop_ebx # _common_recursion
  838. cmp
  839. sete_al
  840. movzx_eax,al
  841. test_eax,eax
  842. je %ELSE_8
  843. lea_eax,[esp+DWORD] %4
  844. mov_eax,[eax]
  845. push_eax #_process_expression1
  846. call %FUNCTION_purge_string
  847. pop_ebx # _process_expression_locals
  848. jmp %_END_IF_8
  849. :ELSE_8
  850. :_END_IF_8
  851. :_END_IF_7
  852. :_END_IF_6
  853. jmp %FOR_ITER_1
  854. :FOR_END_1
  855. lea_eax,[esp+DWORD] %4
  856. mov_eax,[eax]
  857. push_eax #_process_expression1
  858. call %FUNCTION_fclose
  859. pop_ebx # _process_expression_locals
  860. pop_ebx # _recursive_statement_locals
  861. pop_ebx # _recursive_statement_locals
  862. ret
  863. # Defining function output_debug
  864. :FUNCTION_output_debug
  865. # Defining local i
  866. push_eax #i
  867. # FOR_initialization_2
  868. lea_eax,[esp+DWORD] %0
  869. push_eax #_common_recursion
  870. lea_eax,[esp+DWORD] %16
  871. mov_eax,[eax]
  872. pop_ebx # _common_recursion
  873. mov_[ebx],eax
  874. :FOR_2
  875. mov_eax, %0
  876. push_eax #_common_recursion
  877. lea_eax,[esp+DWORD] %4
  878. mov_eax,[eax]
  879. pop_ebx # _common_recursion
  880. cmp
  881. setne_al
  882. movzx_eax,al
  883. test_eax,eax
  884. je %FOR_END_2
  885. jmp %FOR_THEN_2
  886. :FOR_ITER_2
  887. lea_eax,[esp+DWORD] %0
  888. push_eax #_common_recursion
  889. lea_eax,[esp+DWORD] %4
  890. mov_eax,[eax]
  891. # looking up offset
  892. mov_eax,[eax]
  893. pop_ebx # _common_recursion
  894. mov_[ebx],eax
  895. jmp %FOR_2
  896. :FOR_THEN_2
  897. # IF_9
  898. lea_eax,[esp+DWORD] %8
  899. mov_eax,[eax]
  900. test_eax,eax
  901. je %ELSE_9
  902. mov_eax, &STRING_3
  903. push_eax #_process_expression1
  904. mov_eax, &GLOBAL_output
  905. mov_eax,[eax]
  906. push_eax #_process_expression2
  907. call %FUNCTION_file_print
  908. pop_ebx # _process_expression_locals
  909. pop_ebx # _process_expression_locals
  910. lea_eax,[esp+DWORD] %0
  911. mov_eax,[eax]
  912. # looking up offset
  913. # -> offset calculation
  914. mov_ebx, %4
  915. add_eax,ebx
  916. mov_eax,[eax]
  917. push_eax #_process_expression1
  918. mov_eax, &GLOBAL_output
  919. mov_eax,[eax]
  920. push_eax #_process_expression2
  921. call %FUNCTION_file_print
  922. pop_ebx # _process_expression_locals
  923. pop_ebx # _process_expression_locals
  924. mov_eax, &STRING_4
  925. push_eax #_process_expression1
  926. mov_eax, &GLOBAL_output
  927. mov_eax,[eax]
  928. push_eax #_process_expression2
  929. call %FUNCTION_file_print
  930. pop_ebx # _process_expression_locals
  931. pop_ebx # _process_expression_locals
  932. lea_eax,[esp+DWORD] %0
  933. mov_eax,[eax]
  934. # looking up offset
  935. # -> offset calculation
  936. mov_ebx, %4
  937. add_eax,ebx
  938. mov_eax,[eax]
  939. push_eax #_process_expression1
  940. mov_eax, &GLOBAL_output
  941. mov_eax,[eax]
  942. push_eax #_process_expression2
  943. call %FUNCTION_file_print
  944. pop_ebx # _process_expression_locals
  945. pop_ebx # _process_expression_locals
  946. mov_eax, &STRING_5
  947. push_eax #_process_expression1
  948. mov_eax, &GLOBAL_output
  949. mov_eax,[eax]
  950. push_eax #_process_expression2
  951. call %FUNCTION_file_print
  952. pop_ebx # _process_expression_locals
  953. pop_ebx # _process_expression_locals
  954. jmp %_END_IF_9
  955. :ELSE_9
  956. mov_eax, &STRING_6
  957. push_eax #_process_expression1
  958. mov_eax, &GLOBAL_output
  959. mov_eax,[eax]
  960. push_eax #_process_expression2
  961. call %FUNCTION_file_print
  962. pop_ebx # _process_expression_locals
  963. pop_ebx # _process_expression_locals
  964. lea_eax,[esp+DWORD] %0
  965. mov_eax,[eax]
  966. # looking up offset
  967. # -> offset calculation
  968. mov_ebx, %4
  969. add_eax,ebx
  970. mov_eax,[eax]
  971. push_eax #_process_expression1
  972. mov_eax, &GLOBAL_output
  973. mov_eax,[eax]
  974. push_eax #_process_expression2
  975. call %FUNCTION_file_print
  976. pop_ebx # _process_expression_locals
  977. pop_ebx # _process_expression_locals
  978. mov_eax, &STRING_7
  979. push_eax #_process_expression1
  980. mov_eax, &GLOBAL_output
  981. mov_eax,[eax]
  982. push_eax #_process_expression2
  983. call %FUNCTION_file_print
  984. pop_ebx # _process_expression_locals
  985. pop_ebx # _process_expression_locals
  986. lea_eax,[esp+DWORD] %0
  987. mov_eax,[eax]
  988. # looking up offset
  989. # -> offset calculation
  990. mov_ebx, %4
  991. add_eax,ebx
  992. mov_eax,[eax]
  993. push_eax #_process_expression1
  994. mov_eax, &GLOBAL_output
  995. mov_eax,[eax]
  996. push_eax #_process_expression2
  997. call %FUNCTION_file_print
  998. pop_ebx # _process_expression_locals
  999. pop_ebx # _process_expression_locals
  1000. mov_eax, &STRING_8
  1001. push_eax #_process_expression1
  1002. mov_eax, &GLOBAL_output
  1003. mov_eax,[eax]
  1004. push_eax #_process_expression2
  1005. call %FUNCTION_file_print
  1006. pop_ebx # _process_expression_locals
  1007. pop_ebx # _process_expression_locals
  1008. :_END_IF_9
  1009. jmp %FOR_ITER_2
  1010. :FOR_END_2
  1011. pop_ebx # _recursive_statement_locals
  1012. ret
  1013. # Defining function reverse_list
  1014. :FUNCTION_reverse_list
  1015. # Defining local root
  1016. mov_eax, %0
  1017. push_eax #root
  1018. # Defining local next
  1019. push_eax #next
  1020. :WHILE_3
  1021. mov_eax, %0
  1022. push_eax #_common_recursion
  1023. lea_eax,[esp+DWORD] %16
  1024. mov_eax,[eax]
  1025. pop_ebx # _common_recursion
  1026. cmp
  1027. setne_al
  1028. movzx_eax,al
  1029. test_eax,eax
  1030. je %END_WHILE_3
  1031. # THEN_while_3
  1032. lea_eax,[esp+DWORD] %0
  1033. push_eax #_common_recursion
  1034. lea_eax,[esp+DWORD] %16
  1035. mov_eax,[eax]
  1036. # looking up offset
  1037. mov_eax,[eax]
  1038. pop_ebx # _common_recursion
  1039. mov_[ebx],eax
  1040. lea_eax,[esp+DWORD] %12
  1041. mov_eax,[eax]
  1042. # looking up offset
  1043. push_eax #_common_recursion
  1044. lea_eax,[esp+DWORD] %8
  1045. mov_eax,[eax]
  1046. pop_ebx # _common_recursion
  1047. mov_[ebx],eax
  1048. lea_eax,[esp+DWORD] %4
  1049. push_eax #_common_recursion
  1050. lea_eax,[esp+DWORD] %16
  1051. mov_eax,[eax]
  1052. pop_ebx # _common_recursion
  1053. mov_[ebx],eax
  1054. lea_eax,[esp+DWORD] %12
  1055. push_eax #_common_recursion
  1056. lea_eax,[esp+DWORD] %4
  1057. mov_eax,[eax]
  1058. pop_ebx # _common_recursion
  1059. mov_[ebx],eax
  1060. jmp %WHILE_3
  1061. :END_WHILE_3
  1062. lea_eax,[esp+DWORD] %4
  1063. mov_eax,[eax]
  1064. pop_ebx # _return_result_locals
  1065. pop_ebx # _return_result_locals
  1066. ret
  1067. # Defining function main
  1068. :FUNCTION_main
  1069. mov_eax, &GLOBAL_jump_table
  1070. push_eax #_common_recursion
  1071. mov_eax, %0
  1072. pop_ebx # _common_recursion
  1073. mov_[ebx],eax
  1074. # Defining local input
  1075. mov_eax, %0
  1076. push_eax #input
  1077. mov_eax, &GLOBAL_output
  1078. push_eax #_common_recursion
  1079. mov_eax, %1
  1080. pop_ebx # _common_recursion
  1081. mov_[ebx],eax
  1082. # Defining local output_file
  1083. mov_eax, &STRING_9
  1084. push_eax #output_file
  1085. # Defining local option_index
  1086. mov_eax, %1
  1087. push_eax #option_index
  1088. :WHILE_4
  1089. lea_eax,[esp+DWORD] %0
  1090. mov_eax,[eax]
  1091. push_eax #_common_recursion
  1092. lea_eax,[esp+DWORD] %20
  1093. mov_eax,[eax]
  1094. pop_ebx # _common_recursion
  1095. cmp
  1096. setle_al
  1097. movzx_eax,al
  1098. test_eax,eax
  1099. je %END_WHILE_4
  1100. # THEN_while_4
  1101. # IF_10
  1102. mov_eax, %0
  1103. push_eax #_common_recursion
  1104. lea_eax,[esp+DWORD] %24
  1105. push_eax #_common_recursion
  1106. lea_eax,[esp+DWORD] %8
  1107. mov_eax,[eax]
  1108. pop_ebx # _common_recursion
  1109. sal_eax, !2
  1110. add_eax,ebx
  1111. mov_eax,[eax]
  1112. pop_ebx # _common_recursion
  1113. cmp
  1114. sete_al
  1115. movzx_eax,al
  1116. test_eax,eax
  1117. je %ELSE_10
  1118. lea_eax,[esp+DWORD] %0
  1119. push_eax #_common_recursion
  1120. lea_eax,[esp+DWORD] %4
  1121. mov_eax,[eax]
  1122. push_eax #_common_recursion
  1123. mov_eax, %1
  1124. pop_ebx # _common_recursion
  1125. add_eax,ebx
  1126. pop_ebx # _common_recursion
  1127. mov_[ebx],eax
  1128. jmp %_END_IF_10
  1129. :ELSE_10
  1130. # IF_11
  1131. lea_eax,[esp+DWORD] %20
  1132. push_eax #_common_recursion
  1133. lea_eax,[esp+DWORD] %4
  1134. mov_eax,[eax]
  1135. pop_ebx # _common_recursion
  1136. sal_eax, !2
  1137. add_eax,ebx
  1138. mov_eax,[eax]
  1139. push_eax #_process_expression1
  1140. mov_eax, &STRING_10
  1141. push_eax #_process_expression2
  1142. call %FUNCTION_match
  1143. pop_ebx # _process_expression_locals
  1144. pop_ebx # _process_expression_locals
  1145. push_eax #_common_recursion
  1146. lea_eax,[esp+DWORD] %24
  1147. push_eax #_common_recursion
  1148. lea_eax,[esp+DWORD] %8
  1149. mov_eax,[eax]
  1150. pop_ebx # _common_recursion
  1151. sal_eax, !2
  1152. add_eax,ebx
  1153. mov_eax,[eax]
  1154. push_eax #_process_expression1
  1155. mov_eax, &STRING_11
  1156. push_eax #_process_expression2
  1157. call %FUNCTION_match
  1158. pop_ebx # _process_expression_locals
  1159. pop_ebx # _process_expression_locals
  1160. pop_ebx # _common_recursion
  1161. or_eax,ebx
  1162. test_eax,eax
  1163. je %ELSE_11
  1164. mov_eax, &STRING_12
  1165. push_eax #_process_expression1
  1166. mov_eax, %2
  1167. push_eax #_process_expression2
  1168. call %FUNCTION_file_print
  1169. pop_ebx # _process_expression_locals
  1170. pop_ebx # _process_expression_locals
  1171. lea_eax,[esp+DWORD] %20
  1172. push_eax #_common_recursion
  1173. mov_eax, %0
  1174. pop_ebx # _common_recursion
  1175. sal_eax, !2
  1176. add_eax,ebx
  1177. mov_eax,[eax]
  1178. push_eax #_process_expression1
  1179. mov_eax, %2
  1180. push_eax #_process_expression2
  1181. call %FUNCTION_file_print
  1182. pop_ebx # _process_expression_locals
  1183. pop_ebx # _process_expression_locals
  1184. mov_eax, &STRING_13
  1185. push_eax #_process_expression1
  1186. mov_eax, %2
  1187. push_eax #_process_expression2
  1188. call %FUNCTION_file_print
  1189. pop_ebx # _process_expression_locals
  1190. pop_ebx # _process_expression_locals
  1191. mov_eax, %0
  1192. push_eax #_process_expression1
  1193. call %FUNCTION_exit
  1194. pop_ebx # _process_expression_locals
  1195. jmp %_END_IF_11
  1196. :ELSE_11
  1197. # IF_12
  1198. lea_eax,[esp+DWORD] %20
  1199. push_eax #_common_recursion
  1200. lea_eax,[esp+DWORD] %4
  1201. mov_eax,[eax]
  1202. pop_ebx # _common_recursion
  1203. sal_eax, !2
  1204. add_eax,ebx
  1205. mov_eax,[eax]
  1206. push_eax #_process_expression1
  1207. mov_eax, &STRING_14
  1208. push_eax #_process_expression2
  1209. call %FUNCTION_match
  1210. pop_ebx # _process_expression_locals
  1211. pop_ebx # _process_expression_locals
  1212. push_eax #_common_recursion
  1213. lea_eax,[esp+DWORD] %24
  1214. push_eax #_common_recursion
  1215. lea_eax,[esp+DWORD] %8
  1216. mov_eax,[eax]
  1217. pop_ebx # _common_recursion
  1218. sal_eax, !2
  1219. add_eax,ebx
  1220. mov_eax,[eax]
  1221. push_eax #_process_expression1
  1222. mov_eax, &STRING_15
  1223. push_eax #_process_expression2
  1224. call %FUNCTION_match
  1225. pop_ebx # _process_expression_locals
  1226. pop_ebx # _process_expression_locals
  1227. pop_ebx # _common_recursion
  1228. or_eax,ebx
  1229. test_eax,eax
  1230. je %ELSE_12
  1231. # Defining local temp
  1232. mov_eax, %1
  1233. push_eax #_process_expression1
  1234. mov_eax, %8
  1235. push_eax #_process_expression2
  1236. call %FUNCTION_calloc
  1237. pop_ebx # _process_expression_locals
  1238. pop_ebx # _process_expression_locals
  1239. push_eax #temp
  1240. lea_eax,[esp+DWORD] %0
  1241. mov_eax,[eax]
  1242. # looking up offset
  1243. # -> offset calculation
  1244. mov_ebx, %4
  1245. add_eax,ebx
  1246. push_eax #_common_recursion
  1247. lea_eax,[esp+DWORD] %28
  1248. push_eax #_common_recursion
  1249. lea_eax,[esp+DWORD] %12
  1250. mov_eax,[eax]
  1251. push_eax #_common_recursion
  1252. mov_eax, %1
  1253. pop_ebx # _common_recursion
  1254. add_eax,ebx
  1255. pop_ebx # _common_recursion
  1256. sal_eax, !2
  1257. add_eax,ebx
  1258. mov_eax,[eax]
  1259. pop_ebx # _common_recursion
  1260. mov_[ebx],eax
  1261. lea_eax,[esp+DWORD] %0
  1262. mov_eax,[eax]
  1263. # looking up offset
  1264. push_eax #_common_recursion
  1265. lea_eax,[esp+DWORD] %16
  1266. mov_eax,[eax]
  1267. pop_ebx # _common_recursion
  1268. mov_[ebx],eax
  1269. lea_eax,[esp+DWORD] %12
  1270. push_eax #_common_recursion
  1271. lea_eax,[esp+DWORD] %4
  1272. mov_eax,[eax]
  1273. pop_ebx # _common_recursion
  1274. mov_[ebx],eax
  1275. lea_eax,[esp+DWORD] %4
  1276. push_eax #_common_recursion
  1277. lea_eax,[esp+DWORD] %8
  1278. mov_eax,[eax]
  1279. push_eax #_common_recursion
  1280. mov_eax, %2
  1281. pop_ebx # _common_recursion
  1282. add_eax,ebx
  1283. pop_ebx # _common_recursion
  1284. mov_[ebx],eax
  1285. pop_ebx # _recursive_statement_locals
  1286. jmp %_END_IF_12
  1287. :ELSE_12
  1288. # IF_13
  1289. lea_eax,[esp+DWORD] %20
  1290. push_eax #_common_recursion
  1291. lea_eax,[esp+DWORD] %4
  1292. mov_eax,[eax]
  1293. pop_ebx # _common_recursion
  1294. sal_eax, !2
  1295. add_eax,ebx
  1296. mov_eax,[eax]
  1297. push_eax #_process_expression1
  1298. mov_eax, &STRING_16
  1299. push_eax #_process_expression2
  1300. call %FUNCTION_match
  1301. pop_ebx # _process_expression_locals
  1302. pop_ebx # _process_expression_locals
  1303. push_eax #_common_recursion
  1304. lea_eax,[esp+DWORD] %24
  1305. push_eax #_common_recursion
  1306. lea_eax,[esp+DWORD] %8
  1307. mov_eax,[eax]
  1308. pop_ebx # _common_recursion
  1309. sal_eax, !2
  1310. add_eax,ebx
  1311. mov_eax,[eax]
  1312. push_eax #_process_expression1
  1313. mov_eax, &STRING_17
  1314. push_eax #_process_expression2
  1315. call %FUNCTION_match
  1316. pop_ebx # _process_expression_locals
  1317. pop_ebx # _process_expression_locals
  1318. pop_ebx # _common_recursion
  1319. or_eax,ebx
  1320. test_eax,eax
  1321. je %ELSE_13
  1322. lea_eax,[esp+DWORD] %4
  1323. push_eax #_common_recursion
  1324. lea_eax,[esp+DWORD] %24
  1325. push_eax #_common_recursion
  1326. lea_eax,[esp+DWORD] %8
  1327. mov_eax,[eax]
  1328. push_eax #_common_recursion
  1329. mov_eax, %1
  1330. pop_ebx # _common_recursion
  1331. add_eax,ebx
  1332. pop_ebx # _common_recursion
  1333. sal_eax, !2
  1334. add_eax,ebx
  1335. mov_eax,[eax]
  1336. pop_ebx # _common_recursion
  1337. mov_[ebx],eax
  1338. mov_eax, &GLOBAL_output
  1339. push_eax #_common_recursion
  1340. lea_eax,[esp+DWORD] %8
  1341. mov_eax,[eax]
  1342. push_eax #_process_expression1
  1343. mov_eax, &STRING_18
  1344. push_eax #_process_expression2
  1345. call %FUNCTION_fopen
  1346. pop_ebx # _process_expression_locals
  1347. pop_ebx # _process_expression_locals
  1348. pop_ebx # _common_recursion
  1349. mov_[ebx],eax
  1350. # IF_14
  1351. mov_eax, %0
  1352. push_eax #_common_recursion
  1353. mov_eax, &GLOBAL_output
  1354. mov_eax,[eax]
  1355. pop_ebx # _common_recursion
  1356. cmp
  1357. sete_al
  1358. movzx_eax,al
  1359. test_eax,eax
  1360. je %ELSE_14
  1361. mov_eax, &STRING_19
  1362. push_eax #_process_expression1
  1363. mov_eax, %2
  1364. push_eax #_process_expression2
  1365. call %FUNCTION_file_print
  1366. pop_ebx # _process_expression_locals
  1367. pop_ebx # _process_expression_locals
  1368. lea_eax,[esp+DWORD] %8
  1369. mov_eax,[eax]
  1370. # looking up offset
  1371. # -> offset calculation
  1372. mov_ebx, %4
  1373. add_eax,ebx
  1374. mov_eax,[eax]
  1375. push_eax #_process_expression1
  1376. mov_eax, %2
  1377. push_eax #_process_expression2
  1378. call %FUNCTION_file_print
  1379. pop_ebx # _process_expression_locals
  1380. pop_ebx # _process_expression_locals
  1381. mov_eax, &STRING_20
  1382. push_eax #_process_expression1
  1383. mov_eax, %2
  1384. push_eax #_process_expression2
  1385. call %FUNCTION_file_print
  1386. pop_ebx # _process_expression_locals
  1387. pop_ebx # _process_expression_locals
  1388. mov_eax, %1
  1389. push_eax #_process_expression1
  1390. call %FUNCTION_exit
  1391. pop_ebx # _process_expression_locals
  1392. jmp %_END_IF_14
  1393. :ELSE_14
  1394. :_END_IF_14
  1395. lea_eax,[esp+DWORD] %0
  1396. push_eax #_common_recursion
  1397. lea_eax,[esp+DWORD] %4
  1398. mov_eax,[eax]
  1399. push_eax #_common_recursion
  1400. mov_eax, %2
  1401. pop_ebx # _common_recursion
  1402. add_eax,ebx
  1403. pop_ebx # _common_recursion
  1404. mov_[ebx],eax
  1405. jmp %_END_IF_13
  1406. :ELSE_13
  1407. # IF_15
  1408. lea_eax,[esp+DWORD] %20
  1409. push_eax #_common_recursion
  1410. lea_eax,[esp+DWORD] %4
  1411. mov_eax,[eax]
  1412. pop_ebx # _common_recursion
  1413. sal_eax, !2
  1414. add_eax,ebx
  1415. mov_eax,[eax]
  1416. push_eax #_process_expression1
  1417. mov_eax, &STRING_21
  1418. push_eax #_process_expression2
  1419. call %FUNCTION_match
  1420. pop_ebx # _process_expression_locals
  1421. pop_ebx # _process_expression_locals
  1422. push_eax #_common_recursion
  1423. lea_eax,[esp+DWORD] %24
  1424. push_eax #_common_recursion
  1425. lea_eax,[esp+DWORD] %8
  1426. mov_eax,[eax]
  1427. pop_ebx # _common_recursion
  1428. sal_eax, !2
  1429. add_eax,ebx
  1430. mov_eax,[eax]
  1431. push_eax #_process_expression1
  1432. mov_eax, &STRING_22
  1433. push_eax #_process_expression2
  1434. call %FUNCTION_match
  1435. pop_ebx # _process_expression_locals
  1436. pop_ebx # _process_expression_locals
  1437. pop_ebx # _common_recursion
  1438. or_eax,ebx
  1439. test_eax,eax
  1440. je %ELSE_15
  1441. mov_eax, &STRING_23
  1442. push_eax #_process_expression1
  1443. mov_eax, %1
  1444. push_eax #_process_expression2
  1445. call %FUNCTION_file_print
  1446. pop_ebx # _process_expression_locals
  1447. pop_ebx # _process_expression_locals
  1448. mov_eax, %0
  1449. push_eax #_process_expression1
  1450. call %FUNCTION_exit
  1451. pop_ebx # _process_expression_locals
  1452. jmp %_END_IF_15
  1453. :ELSE_15
  1454. mov_eax, &STRING_24
  1455. push_eax #_process_expression1
  1456. mov_eax, %2
  1457. push_eax #_process_expression2
  1458. call %FUNCTION_file_print
  1459. pop_ebx # _process_expression_locals
  1460. pop_ebx # _process_expression_locals
  1461. mov_eax, %1
  1462. push_eax #_process_expression1
  1463. call %FUNCTION_exit
  1464. pop_ebx # _process_expression_locals
  1465. :_END_IF_15
  1466. :_END_IF_13
  1467. :_END_IF_12
  1468. :_END_IF_11
  1469. :_END_IF_10
  1470. jmp %WHILE_4
  1471. :END_WHILE_4
  1472. # IF_16
  1473. mov_eax, %0
  1474. push_eax #_common_recursion
  1475. lea_eax,[esp+DWORD] %12
  1476. mov_eax,[eax]
  1477. pop_ebx # _common_recursion
  1478. cmp
  1479. sete_al
  1480. movzx_eax,al
  1481. test_eax,eax
  1482. je %ELSE_16
  1483. mov_eax, %1
  1484. pop_ebx # _return_result_locals
  1485. pop_ebx # _return_result_locals
  1486. pop_ebx # _return_result_locals
  1487. ret
  1488. jmp %_END_IF_16
  1489. :ELSE_16
  1490. :_END_IF_16
  1491. lea_eax,[esp+DWORD] %8
  1492. mov_eax,[eax]
  1493. push_eax #_process_expression1
  1494. call %FUNCTION_first_pass
  1495. pop_ebx # _process_expression_locals
  1496. mov_eax, &GLOBAL_jump_table
  1497. push_eax #_common_recursion
  1498. mov_eax, &GLOBAL_jump_table
  1499. mov_eax,[eax]
  1500. push_eax #_process_expression1
  1501. call %FUNCTION_reverse_list
  1502. pop_ebx # _process_expression_locals
  1503. pop_ebx # _common_recursion
  1504. mov_[ebx],eax
  1505. mov_eax, &STRING_25
  1506. push_eax #_process_expression1
  1507. mov_eax, &GLOBAL_output
  1508. mov_eax,[eax]
  1509. push_eax #_process_expression2
  1510. call %FUNCTION_file_print
  1511. pop_ebx # _process_expression_locals
  1512. pop_ebx # _process_expression_locals
  1513. mov_eax, &GLOBAL_jump_table
  1514. mov_eax,[eax]
  1515. push_eax #_process_expression1
  1516. mov_eax, %1
  1517. push_eax #_process_expression2
  1518. call %FUNCTION_output_debug
  1519. pop_ebx # _process_expression_locals
  1520. pop_ebx # _process_expression_locals
  1521. mov_eax, &STRING_26
  1522. push_eax #_process_expression1
  1523. mov_eax, &GLOBAL_output
  1524. mov_eax,[eax]
  1525. push_eax #_process_expression2
  1526. call %FUNCTION_file_print
  1527. pop_ebx # _process_expression_locals
  1528. pop_ebx # _process_expression_locals
  1529. mov_eax, &GLOBAL_jump_table
  1530. mov_eax,[eax]
  1531. push_eax #_process_expression1
  1532. mov_eax, %0
  1533. push_eax #_process_expression2
  1534. call %FUNCTION_output_debug
  1535. pop_ebx # _process_expression_locals
  1536. pop_ebx # _process_expression_locals
  1537. mov_eax, &STRING_27
  1538. push_eax #_process_expression1
  1539. mov_eax, &GLOBAL_output
  1540. mov_eax,[eax]
  1541. push_eax #_process_expression2
  1542. call %FUNCTION_file_print
  1543. pop_ebx # _process_expression_locals
  1544. pop_ebx # _process_expression_locals
  1545. mov_eax, %0
  1546. pop_ebx # _return_result_locals
  1547. pop_ebx # _return_result_locals
  1548. pop_ebx # _return_result_locals
  1549. ret
  1550. # Program global variables
  1551. :GLOBAL_output
  1552. NULL
  1553. :GLOBAL_jump_table
  1554. NULL
  1555. # Program strings
  1556. :STRING_0
  1557. "r"
  1558. :STRING_1
  1559. "The file: "
  1560. :STRING_2
  1561. " can not be opened!
  1562. "
  1563. :STRING_3
  1564. ' 3A 45 4C 46 5F 73 74 72 5F 00'
  1565. :STRING_4
  1566. ' 0A 22 00'
  1567. :STRING_5
  1568. ' 22 0A 00'
  1569. :STRING_6
  1570. "%ELF_str_"
  1571. :STRING_7
  1572. ">ELF_str
  1573. &"
  1574. :STRING_8
  1575. "
  1576. %10000
  1577. !2
  1578. !0
  1579. @1
  1580. "
  1581. :STRING_9
  1582. ""
  1583. :STRING_10
  1584. "-h"
  1585. :STRING_11
  1586. "--help"
  1587. :STRING_12
  1588. "Usage: "
  1589. :STRING_13
  1590. " -f FILENAME1 {-f FILENAME2}
  1591. "
  1592. :STRING_14
  1593. "-f"
  1594. :STRING_15
  1595. "--file"
  1596. :STRING_16
  1597. "-o"
  1598. :STRING_17
  1599. "--output"
  1600. :STRING_18
  1601. "w"
  1602. :STRING_19
  1603. "The file: "
  1604. :STRING_20
  1605. " can not be opened!
  1606. "
  1607. :STRING_21
  1608. "-V"
  1609. :STRING_22
  1610. "--version"
  1611. :STRING_23
  1612. "blood-elf 0.1
  1613. (Basically Launches Odd Object Dump ExecutabLe Files
  1614. "
  1615. :STRING_24
  1616. "Unknown option
  1617. "
  1618. :STRING_25
  1619. ' 3A 45 4C 46 5F 73 74 72 0A 21 30 0A 00'
  1620. :STRING_26
  1621. ' 25 30 0A 3A 45 4C 46 5F 73 79 6D 0A 25 30 0A 25 30 0A 25 30 0A 21 30 0A 21 30 0A 40 31 0A 00'
  1622. :STRING_27
  1623. ' 0A 3A 45 4C 46 5F 65 6E 64 0A 00'
  1624. :ELF_end