123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- /*
- * Input file : ./tests/inputs/DHAMP.EXE
- * File type : EXE
- */
- #include "dcc.h"
- int proc_2 (long arg0, long arg1)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- */
- {
- char loc1; /* al */
- int loc2; /* bx */
- do {
- arg0 = (arg0 + 1);
- loc1 = es[bx];
- arg1 = (arg1 + 1);
- es[bx] = loc1;
- } while ((loc1 != 0));
- return (loc2);
- }
- int proc_3 (long arg0, long arg1)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- */
- {
- int loc1; /* ax */
- while ((es[bx] == es[bx])) {
- if (es[bx] == 0) {
- loc1 = 0;
- return (loc1);
- }
- else {
- arg0 = (arg0 + 1);
- arg1 = (arg1 + 1);
- }
- } /* end of while */
- loc1 = (es[bx] - es[bx]);
- }
- int proc_1 (int arg0, int arg1, int arg2, int arg3)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- */
- {
- int loc1; /* si */
- int loc2; /* di */
- loc1 = 0;
- loc2 = 0;
- while ((loc1 < 0x2328)) {
- proc_2 (arg1, arg0, 311);
- proc_2 (arg3, arg2, 328);
- loc2 = (loc2 + proc_3 (arg1, arg0, arg3, arg2));
- loc1 = (loc1 + 1);
- } /* end of while */
- return (loc2);
- }
- int proc_4 ()
- /* Takes no parameters.
- * High-level language prologue code.
- */
- {
- int loc1;
- int loc2;
- int loc3;
- int loc4;
- loc3 = 0;
- while ((loc3 < 0x3e8)) {
- loc1 = 0;
- loc4 = 0;
- loc2 = 1;
- while ((loc4 < 179)) {
- loc1 = (loc1 + loc2);
- loc2 = (loc2 + 2);
- loc4 = (loc4 + 1);
- } /* end of while */
- loc3 = (loc3 + 1);
- } /* end of while */
- return (loc1);
- }
- int proc_5 (int arg0)
- /* Takes 2 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- */
- {
- int loc1; /* si */
- int loc2; /* ax */
- loc1 = arg0;
- if (loc1 > 2) {
- loc2 = (proc_5 ((loc1 - 1)) + proc_5 ((loc1 + 0xfffe)));
- }
- else {
- loc2 = 1;
- }
- return (loc2);
- }
- long proc_6 (int arg0, int arg1)
- /* Takes 4 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- */
- {
- long loc1;
- int loc2; /* si */
- if ((arg0 | arg1) == 0) {
- loc2 = 0;
- while ((loc2 < 0x2328)) {
- loc1 = (loc1 + [23798]);
- [23798] = ([23798] + 2);
- loc2 = (loc2 + 1);
- } /* end of while */
- }
- else {
- loc2 = 0;
- while ((loc2 < 0x2328)) {
- [23798] = ([23798] - 2);
- loc1 = (loc1 - [23798]);
- loc2 = (loc2 + 1);
- } /* end of while */
- }
- return (loc1);
- }
- void proc_8 (int arg0)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * Untranslatable routine. Assembler provided.
- * C calling convention.
- * Contains instructions not normally used by compilers.
- * Contains coprocessor instructions.
- */
- {
- PUSH bp
- MOV bp, sp
- ESC FLD qword ptr [126h]
- ESC FLD qword ptr [bp+6]
- ESC FCOMPP
- ESC FSTSW qword ptr [62Ch]
- INT 3Dh /* Unknown int */
- MOV ah, [62Dh]
- SAHF
- JAE L1
- ESC FLD qword ptr [bp+6]
- ESC FCHS
- L2: POP bp
- RETF
- L1: ESC FLD qword ptr [bp+6]
- JMP L2 ;Synthetic inst
- }
- void proc_7 (int arg0, int arg1, int arg2, int arg3)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * Untranslatable routine. Assembler provided.
- * C calling convention.
- * Contains instructions not normally used by compilers.
- * Contains coprocessor instructions.
- */
- {
- PUSH bp
- MOV bp, sp
- SUB sp, 10h
- ESC FLD qword ptr [bp+6]
- ESC FDIV qword ptr [127h]
- ESC FSTP qword ptr [bp-8]
- INT 3Dh /* Unknown int */
- MOV ax, [bp+0Ch]
- MOV [bp-0Ah], ax
- MOV ax, [bp+0Ah]
- MOV [bp-0Ch], ax
- MOV ax, [bp+8]
- MOV [bp-0Eh], ax
- MOV ax, [bp+6]
- MOV [bp-10h], ax
- L1: ESC FLD qword ptr [12Fh]
- ESC FMUL qword ptr [bp-8]
- ESC FCOMP qword ptr [bp-10h]
- ESC FSTSW qword ptr [62Ch]
- INT 3Dh /* Unknown int */
- MOV ah, [62Dh]
- SAHF
- JB L2
- ESC FLD qword ptr [bp-8]
- MOV sp, bp
- POP bp
- RETF
- L2: ESC FLD qword ptr [bp+6]
- ESC FDIV qword ptr [bp-8]
- ESC FSUB qword ptr [bp-8]
- ESC FSTP qword ptr [bp-10h]
- INT 3Dh /* Unknown int */
- PUSH word ptr [bp-0Ah]
- PUSH word ptr [bp-0Ch]
- PUSH word ptr [bp-0Eh]
- PUSH word ptr [bp-10h]
- CALL far ptr proc_8
- ADD sp, 8
- ESC FSTP qword ptr [bp-10h]
- INT 3Dh /* Unknown int */
- ESC FLD qword ptr [bp+6]
- ESC FDIV qword ptr [bp-8]
- ESC FADD qword ptr [bp-8]
- ESC FDIV qword ptr [127h]
- ESC FSTP qword ptr [bp-8]
- INT 3Dh /* Unknown int */
- JMP L1 ;Synthetic inst
- }
- void proc_9 (int arg0)
- /* Takes 8 bytes of parameters.
- * High-level language prologue code.
- * C calling convention.
- * Contains instructions not normally used by compilers.
- * Contains coprocessor instructions.
- */
- {
- int loc1;
- int loc2;
- int loc3; /* ax */
- loc2 = 100;
- loc3 = loc2;
- loc2 = (loc2 - 1);
- while (((loc3 | loc3) != 0)) {
- loc3 = loc2;
- loc2 = (loc2 - 1);
- } /* end of while */
- }
- int proc_10 ()
- /* Takes no parameters.
- * High-level language prologue code.
- * Contains instructions not normally used by compilers.
- */
- {
- int loc1;
- int loc2;
- int loc3;
- int loc4;
- int loc5;
- int loc6; /* bx */
- int loc7; /* dx */
- int loc8; /* ax */
- loc6 = proc_2 (&loc1, 345, , );
- fopen ("zyxw.vut", 368);
- loc2 = loc7;
- loc3 = loc8;
- if ((loc7 | loc8) == 0) {
- printf ("Cannot open file");
- exit (0xffff);
- }
- l1:
- if (++loc5 >= 0x3e8) {
- fclose (loc3, loc2);
- return (loc5);
- }
- else {
- loc4 = 0;
- while ((ss[bp+si-0x64] != 0)) {
- if (++es[bx] < 0) {
- es[bx+0xc] = (es[bx+0xc] + 1);
- loc6 = (loc6 - 1);
- es[bx] = ss[bp+si-0x64];
- }
- else {
- _fputc (ss[bp+si-0x64], loc3, loc2);
- }
- loc4 = (loc4 + 1);
- } /* end of while */
- goto L1;
- }
- }
- void main ()
- /* Takes no parameters.
- * High-level language prologue code.
- * Contains instructions not normally used by compilers.
- * Contains coprocessor instructions.
- */
- {
- int loc1;
- int loc2;
- int loc3;
- int loc4;
- int loc5;
- int loc6;
- int loc7;
- int loc8;
- int loc9;
- int loc10;
- int loc11;
- int loc12; /* ax */
- int loc13; /* bx */
- loc11 = 0;
- printf ("Start...%c\n\n", 7);
- while ((loc11 < 6)) {
- loc12 = loc11;
- if (loc12 <= 5) {
- loc13 = (loc12 << 1);
- var06278 = proc_1 (&loc2, &loc1, , );
- printf ("\ncresult = %d\n", var06278);
- }
- loc11 = (loc11 + 1);
- } /* end of while */
- printf ("\n\n...End%c", 7);
- }
|