Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.69 KB | None | 0 0
  1. int main(int argc, char *argv[]);
  2. void basic_1_if(__size32 param1);
  3. void basic_2_if_else(__size32 param1);
  4. void basic_3_if_elseif(int param1);
  5. void basic_4_if_elseif_else(__size32 param1);
  6. void basic_5_head_controlled_loop(__size32 param1);
  7. void basic_6_tail_controlled_loop(__size32 param1);
  8. void basic_7_for_loop();
  9. void basic_8_forever_loop(__size32 param1);
  10. void basic_9_dead_block();
  11. void intermediate_1_short_circuit_and(int param1, int param2);
  12. void intermediate_2_short_circuit_or(int param1, int param2);
  13. void intermediate_10_loop_with_one_break(__size32 param1);
  14. void intermediate_11_loop_with_two_breaks(int param1);
  15. void intermediate_12_loop_with_break_and_block(__size32 param1);
  16. void intermediate_13_loop_with_one_continue(int param1);
  17. void intermediate_14_loop_with_two_continues(int param1);
  18. void intermediate_15_loop_with_continue_and_block(int param1);
  19. __size32 intermediate_16_loop_with_breaks_and_continues(__size32 param1);
  20. void intermediate_17_forever_loop_with_extra_statement();
  21. void intermediate_20_nested_loops(__size32 param1);
  22. void intermediate_30_switch_case(unsigned int param1);
  23. void advanced_1_loop_with_multiple_entries(int param1);
  24. void advanced_2_loop_with_multiple_exits(int param1);
  25. void advanced_10_irreducible(__size32 param1);
  26. void advanced_11_nested_loops_complex_condition(int param1);
  27. void advanced_12_nested_if_in_loop(__size32 param1);
  28. void advanced_20_jump_table_on_stack(unsigned int param1);
  29. void advanced_21_computed_jumps(unsigned int param1);
  30.  
  31.  
  32. /** address: 0x080483a0 */
  33. int main(int argc, char *argv[])
  34. {
  35. unsigned char al; // r8
  36. __size32 eax; // r24
  37. union { int; __size32 *; } ebp; // r29
  38. int ebx; // r27
  39. __size32 ecx; // r25
  40. unsigned int edi; // r31
  41. __size32 edx; // r26
  42. int esi; // r30
  43. union { int; __size32 *; } esp; // r28
  44. __size32 local5; // m[esp]
  45.  
  46. basic_1_if(argc);
  47. basic_2_if_else(argc);
  48. basic_3_if_elseif(argc);
  49. basic_4_if_elseif_else(argc);
  50. basic_5_head_controlled_loop(argc);
  51. basic_6_tail_controlled_loop(argc);
  52. basic_7_for_loop();
  53. basic_8_forever_loop(argc);
  54. basic_9_dead_block();
  55. al = (argc > 4) ? 1 : 0;
  56. intermediate_1_short_circuit_and((al), ~argc & 0x1);
  57. intermediate_2_short_circuit_or((al), ~argc & 0x1);
  58. intermediate_10_loop_with_one_break(argc);
  59. intermediate_11_loop_with_two_breaks(argc);
  60. intermediate_12_loop_with_break_and_block(argc);
  61. intermediate_13_loop_with_one_continue(argc);
  62. intermediate_14_loop_with_two_continues(argc);
  63. intermediate_15_loop_with_continue_and_block(argc);
  64. eax = intermediate_16_loop_with_breaks_and_continues(argc); /* Warning: also results in ecx, edx */
  65. intermediate_17_forever_loop_with_extra_statement(al, eax, ecx, edx, argc, esp - 8, ~argc & 0x1, (al), SUBFLAGS32(argc, 4, argc - 4), argc == 4, (unsigned int)argc < 4, argc < 4, argc < 0 && argc >= 4, argc, argv, local5, ebp, edi, esi, ebx, esp + 4, argv, ~argc & 0x1, argc, pc);
  66. }
  67.  
  68. /** address: 0x080485b0 */
  69. void basic_1_if(__size32 param1)
  70. {
  71. if (param1 == 42) {
  72. puts("if block");
  73. }
  74. return;
  75. }
  76.  
  77. /** address: 0x080485e0 */
  78. void basic_2_if_else(__size32 param1)
  79. {
  80. if (param1 == 42) {
  81. puts("if block");
  82. }
  83. else {
  84. puts("else block");
  85. }
  86. return;
  87. }
  88.  
  89. /** address: 0x08048620 */
  90. void basic_3_if_elseif(int param1)
  91. {
  92. if (param1 == 42) {
  93. puts("if block");
  94. }
  95. else {
  96. if (param1 == 43) {
  97. puts("else-if block");
  98. }
  99. }
  100. return;
  101. }
  102.  
  103. /** address: 0x08048680 */
  104. void basic_4_if_elseif_else(__size32 param1)
  105. {
  106. if (param1 == 42) {
  107. puts("if block");
  108. }
  109. else {
  110. if (param1 == 43) {
  111. puts("else-if block");
  112. }
  113. else {
  114. puts("else block");
  115. }
  116. }
  117. return;
  118. }
  119.  
  120. /** address: 0x08049110 */
  121. void basic_5_head_controlled_loop(__size32 param1)
  122. {
  123. __size32 ebx; // r27
  124.  
  125. ebx = param1;
  126. puts("before");
  127. while (ebx != 42) {
  128. ebx++;
  129. puts("body");
  130. }
  131. puts("after");
  132. return;
  133. }
  134.  
  135. /** address: 0x08049160 */
  136. void basic_6_tail_controlled_loop(__size32 param1)
  137. {
  138. __size32 ebx; // r27
  139. __size32 ebx_1; // r27{5}
  140.  
  141. ebx = param1;
  142. puts("before");
  143. do {
  144. ebx_1 = ebx;
  145. ebx = ebx_1 + 1;
  146. puts("body");
  147. } while (ebx_1 + 1 != 42);
  148. puts("after");
  149. return;
  150. }
  151.  
  152. /** address: 0x080486f0 */
  153. void basic_7_for_loop()
  154. {
  155. char ebx; // r27
  156. char ebx_1; // r27{2}
  157. char ebx_2; // r27{3}
  158. char local1; // ebx_1{2}
  159.  
  160. ebx = '0';
  161. local1 = ebx;
  162. do {
  163. ebx_1 = local1;
  164. ebx_2 = ebx_1 + 1;
  165. local1 = ebx_2;
  166. putchar(ebx_1);
  167. } while (ebx_1 + 1 != 58);
  168. return;
  169. }
  170.  
  171. /** address: 0x080491b0 */
  172. void basic_8_forever_loop(__size32 param1)
  173. {
  174. if (param1 == 42) {
  175. for(;;) {
  176. puts("loop body");
  177. }
  178. }
  179. return;
  180. }
  181.  
  182. /** address: 0x080491d2 */
  183. void basic_9_dead_block()
  184. {
  185. puts("entry");
  186. puts("exit");
  187. return;
  188. }
  189.  
  190. /** address: 0x08048720 */
  191. void intermediate_1_short_circuit_and(int param1, int param2)
  192. {
  193. int eax; // r24
  194.  
  195. eax = rand();
  196. if (param1 != 0 && eax == param2) {
  197. puts("both true");
  198. }
  199. return;
  200. }
  201.  
  202. /** address: 0x08048750 */
  203. void intermediate_2_short_circuit_or(int param1, int param2)
  204. {
  205. int eax; // r24
  206.  
  207. eax = rand();
  208. if (param1 != 0 || eax == param2) {
  209. puts("at least one is true");
  210. }
  211. return;
  212. }
  213.  
  214. /** address: 0x08048790 */
  215. void intermediate_10_loop_with_one_break(__size32 param1)
  216. {
  217. time_t eax; // r24
  218.  
  219. for(;;) {
  220. puts("head");
  221. eax = time(0);
  222. if (eax == param1) {
  223. break;
  224. }
  225. puts("tail");
  226. }
  227. return;
  228. }
  229.  
  230. /** address: 0x080487e0 */
  231. void intermediate_11_loop_with_two_breaks(int param1)
  232. {
  233. time_t eax; // r24
  234. int ebx; // r27
  235. int ebx_1; // r27{7}
  236.  
  237. ebx = param1;
  238. if (param1 > 0) {
  239. do {
  240. ebx_1 = ebx;
  241. puts("head");
  242. eax = time(0);
  243. if (eax == ebx_1) {
  244. break;
  245. }
  246. puts("tail");
  247. ebx = ebx_1 - 1;
  248. } while (ebx_1 != 1);
  249. }
  250. return;
  251. }
  252.  
  253. /** address: 0x08048830 */
  254. void intermediate_12_loop_with_break_and_block(__size32 param1)
  255. {
  256. int eax; // r24
  257.  
  258. for(;;) {
  259. puts("head");
  260. eax = time(0);
  261. if (eax == param1) {
  262. break;
  263. }
  264. puts("barrier");
  265. eax = rand();
  266. if (param1 == eax) {
  267. return;
  268. }
  269. puts("tail");
  270. }
  271. puts("will break");
  272. return;
  273. }
  274.  
  275. /** address: 0x080488a0 */
  276. void intermediate_13_loop_with_one_continue(int param1)
  277. {
  278. int eax; // r24
  279.  
  280. if (param1 > 123) {
  281. for(;;) {
  282. puts("head");
  283. eax = time(0);
  284. if (param1 == eax) {
  285. continue;
  286. }
  287. puts("tail");
  288. }
  289. }
  290. return;
  291. }
  292.  
  293. /** address: 0x080488f0 */
  294. void intermediate_14_loop_with_two_continues(int param1)
  295. {
  296. int eax; // r24
  297.  
  298. if (param1 > 123) {
  299. for(;;) {
  300. puts("head");
  301. eax = time(0);
  302. if (param1 == eax) {
  303. continue;
  304. }
  305. puts("barrier");
  306. eax = rand();
  307. if (param1 == eax) {
  308. continue;
  309. }
  310. puts("tail");
  311. }
  312. }
  313. return;
  314. }
  315.  
  316. /** address: 0x08048960 */
  317. void intermediate_15_loop_with_continue_and_block(int param1)
  318. {
  319. int eax; // r24
  320.  
  321. if (param1 > 123) {
  322. for(;;) {
  323. bb0x8048970:
  324. puts("head");
  325. eax = time(0);
  326. if (param1 != eax) {
  327. puts("barrier");
  328. eax = rand();
  329. if (param1 == eax) {
  330. goto bb0x8048970;
  331. }
  332. puts("tail");
  333. goto bb0x8048970;
  334. }
  335. puts("will continue");
  336. }
  337. }
  338. return;
  339. }
  340.  
  341. /** address: 0x080489e0 */
  342. __size32 intermediate_16_loop_with_breaks_and_continues(__size32 param1)
  343. {
  344. int eax; // r24
  345. int ecx; // r25
  346. int edx; // r26
  347.  
  348. for(;;) {
  349. puts("head");
  350. eax = time(0);
  351. if (eax + 1 == param1) {
  352. continue;
  353. }
  354. puts("after first continue");
  355. eax = time(0); /* Warning: also results in ecx, edx */
  356. if (param1 == eax + 2) {
  357. break;
  358. }
  359. puts("after first break");
  360. eax = time(0);
  361. if (param1 == eax + 3) {
  362. continue;
  363. }
  364. puts("after second continue");
  365. eax = time(0); /* Warning: also results in ecx, edx */
  366. if (param1 == eax + 4) {
  367. break;
  368. }
  369. puts("after second break; tail");
  370. }
  371. return 0; /* WARNING: Also returning: ecx := ecx, edx := edx */
  372. }
  373.  
  374. /** address: 0x08049211 */
  375. void intermediate_17_forever_loop_with_extra_statement()
  376. {
  377. bb0x8049214:
  378. goto bb0x8049214;
  379. }
  380.  
  381. /** address: 0x08048aa0 */
  382. void intermediate_20_nested_loops(__size32 param1)
  383. {
  384. int eax; // r24
  385.  
  386. puts("before");
  387. do {
  388. puts("outer loop");
  389. do {
  390. puts("inner loop");
  391. eax = time(0);
  392. } while (eax != param1);
  393. eax = rand();
  394. } while (param1 != eax);
  395. puts("after");
  396. return;
  397. }
  398.  
  399. /** address: 0x08048b10 */
  400. void intermediate_30_switch_case(unsigned int param1)
  401. {
  402. if (param1 > 9) {
  403. puts("some other value");
  404. }
  405. else {
  406. switch(param1) {
  407. case 7:
  408. puts("7 with fall through");
  409. case 8:
  410. puts("8");
  411. break;
  412. case 9:
  413. puts("9");
  414. break;
  415. case 0:
  416. puts("0");
  417. break;
  418. case 1:
  419. puts("1");
  420. break;
  421. case 3:
  422. case 2:
  423. puts("2 or 3");
  424. break;
  425. case 4:
  426. puts("4");
  427. break;
  428. case 5:
  429. puts("5");
  430. break;
  431. case 6:
  432. puts("6");
  433. break;
  434. }
  435. }
  436. puts("common exit");
  437. return;
  438. }
  439.  
  440. /** address: 0x08048c30 */
  441. void advanced_1_loop_with_multiple_entries(int param1)
  442. {
  443. int ebx; // r27
  444. int esp; // r28
  445. void *esp_1; // r28{3}
  446. void *esp_4; // r28{1}
  447. void *local1; // esp{8}
  448. void *local2; // esp{15}
  449.  
  450. esp_1 = (esp_4 - 12);
  451. local2 = esp_1;
  452. local1 = esp_1;
  453. ebx = param1;
  454. if (param1 == 42) {
  455. ebx = 41;
  456. for(;;) {
  457. esp = local2;
  458. *(__size32*)(esp - 16) = 0x80493ce;
  459. puts(*(esp - 16));
  460. local1 = esp;
  461. if (ebx > 0) {
  462. do {
  463. bb0x8048c41:
  464. esp = local1;
  465. ebx--;
  466. *(__size32*)(esp - 16) = 0x80493c7;
  467. puts(*(esp - 16));
  468. local2 = esp;
  469. } while (ebx > 0);
  470. }
  471. return;
  472. }
  473. }
  474. else {
  475. if (param1 > 0) {
  476. goto bb0x8048c41;
  477. }
  478. }
  479. return;
  480. }
  481.  
  482. /** address: 0x08048c80 */
  483. void advanced_2_loop_with_multiple_exits(int param1)
  484. {
  485. int eax; // r24
  486. int ebx; // r27
  487. int ebx_1; // r27{9}
  488.  
  489. ebx = param1;
  490. if (param1 > 0) {
  491. do {
  492. ebx_1 = ebx;
  493. puts("body 1");
  494. eax = time(0);
  495. if (eax == 1) {
  496. puts("took exit 1");
  497. return;
  498. }
  499. puts("body 2");
  500. eax = time(0);
  501. if (eax == 2) {
  502. puts("took exit 2");
  503. return;
  504. }
  505. ebx = ebx_1 - 1;
  506. } while (ebx_1 != 1);
  507. bb0x8048cf0:
  508. puts("normal exit");
  509. }
  510. else {
  511. goto bb0x8048cf0;
  512. }
  513. return;
  514. }
  515.  
  516. /** address: 0x08048d30 */
  517. void advanced_10_irreducible(__size32 param1)
  518. {
  519. int eax; // r24
  520.  
  521. puts("b1");
  522. eax = time(0);
  523. if (eax == param1) {
  524. bb0x8048d78:
  525. puts("b3");
  526. }
  527. else {
  528. puts("b2");
  529. eax = time(0);
  530. if (eax == param1 + 1) {
  531. puts("b4");
  532. }
  533. else {
  534. goto bb0x8048d78;
  535. }
  536. }
  537. puts("b5");
  538. return;
  539. }
  540.  
  541. /** address: 0x08048dc0 */
  542. void advanced_11_nested_loops_complex_condition(int param1)
  543. {
  544. int eax; // r24
  545. time_t eax_1; // r24{4}
  546. time_t eax_4; // r24{13}
  547. time_t eax_7; // r24{16}
  548.  
  549. puts("b0");
  550. eax_1 = time(0);
  551. if (eax_1 == param1) {
  552. do {
  553. puts("b2");
  554. bb0x8048e31:
  555. puts("b3");
  556. eax_4 = time(0);
  557. if (eax_4 != eax_1 + 2) {
  558. eax = time(0);
  559. if (eax == eax_1 + 3) {
  560. goto bb0x8048e31;
  561. }
  562. goto bb0x8048de5;
  563. }
  564. puts("b1");
  565. eax_7 = time(0);
  566. } while (eax_7 == eax_1 + 1);
  567. }
  568. bb0x8048de5:
  569. puts("b9");
  570. return;
  571. }
  572.  
  573. /** address: 0x08048e80 */
  574. void advanced_12_nested_if_in_loop(__size32 param1)
  575. {
  576. time_t eax; // r24
  577.  
  578. puts("b0");
  579. do {
  580. bb0x8048ea0:
  581. puts("b1");
  582. eax = time(0);
  583. if (eax != param1) {
  584. puts("b3");
  585. eax = time(0);
  586. if (eax == param1 + 2) {
  587. goto bb0x8048ea0;
  588. }
  589. goto bb0x8048ee0;
  590. }
  591. puts("b2");
  592. eax = time(0);
  593. } while (eax == param1 + 1);
  594. bb0x8048ee0:
  595. puts("b4");
  596. return;
  597. }
  598.  
  599. /** address: 0x08048f30 */
  600. void advanced_20_jump_table_on_stack(unsigned int param1)
  601. {
  602. int esp; // r28
  603.  
  604. if (param1 <= 5) {
  605. /* goto m[(a[m[esp - 44]] + (param1 * 4)) + 8] */
  606. }
  607. puts("is something else");
  608. return;
  609. }
  610.  
  611. /** address: 0x08049050 */
  612. void advanced_21_computed_jumps(unsigned int param1)
  613. {
  614. int eax; // r24
  615.  
  616. puts("start");
  617. if (param1 > 2) {
  618. puts("is something else");
  619. }
  620. else {
  621. if (param1 != 0) {
  622. eax = 24;
  623. if (param1 == 2) {
  624. eax = 56;
  625. }
  626. /* goto eax + 0x8049098 */
  627. }
  628. puts("is 0");
  629. }
  630. return;
  631. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement