123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- /*
- * 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; /* al */
- int loc3; /* bx */
- do {
- arg0 = (arg0 + 1);
- loc1 = es[bx];
- arg1 = (arg1 + 1);
- es[bx] = loc1;
- } while ((loc2 != 0));
- return (loc3);
- }
- 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 [126h]
- ESC FLD [bp+6]
- ESC FCOMPP
- ESC FSTSW [62Ch]
- INT 3Dh /* Unknown int */
- MOV ah, [62Dh]
- SAHF
- JAE L1
- ESC FLD [bp+6]
- ESC FCHS
- L2: POP bp
- RETF
- L1: ESC FLD [bp+6]
- JMP L2 ;Synthetic inst
- }
- 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 [bp+6]
- ESC FDIV [127h]
- ESC FSTP [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 [12Fh]
- ESC FMUL [bp-8]
- ESC FCOMP [bp-10h]
- ESC FSTSW [62Ch]
- INT 3Dh /* Unknown int */
- MOV ah, [62Dh]
- SAHF
- JB L2
- ESC FLD [bp-8]
- MOV sp, bp
- POP bp
- RETF
- L2: ESC FLD [bp+6]
- ESC FDIV [bp-8]
- ESC FSUB [bp-8]
- ESC FSTP [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 [bp-10h]
- INT 3Dh /* Unknown int */
- ESC FLD [bp+6]
- ESC FDIV [bp-8]
- ESC FADD [bp-8]
- ESC FDIV [127h]
- ESC FSTP [bp-8]
- INT 3Dh /* Unknown int */
- JMP L1 ;Synthetic inst
- }
- 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 */
- return (var06278);
- }
- int proc_10 ()
- /* Takes no parameters.
- * High-level language prologue code.
- * Untranslatable routine. Assembler provided.
- * Return value in register ax.
- * Contains instructions not normally used by compilers.
- */
- {
- PUSH bp
- MOV bp, sp
- SUB sp, 68h
- PUSH si
- PUSH di
- PUSH ds
- MOV ax, 159h
- PUSH ax
- PUSH ss
- LEA ax, [bp-64h]
- PUSH ax
- PUSH cs
- CALL near ptr proc_2
- ADD sp, 8
- PUSH ds
- MOV ax, 170h
- PUSH ax
- PUSH ds
- MOV ax, 167h
- PUSH ax
- CALL far ptr fopen
- ADD sp, 8
- MOV [bp-66h], dx
- MOV [bp-68h], ax
- OR dx, ax
- JNE L1
- PUSH ds
- MOV ax, 172h
- PUSH ax
- CALL far ptr printf
- POP cx
- POP cx
- MOV ax, 0FFFFh
- PUSH ax
- CALL far ptr exit
- POP cx
- L1: XOR di, 0
- L2: INC di
- MOV ax, di
- CMP ax, 3E8h
- JL L3
- PUSH word ptr [bp-66h]
- PUSH word ptr [bp-68h]
- CALL far ptr fclose
- POP cx
- POP cx
- MOV ax, di
- POP di
- POP si
- MOV sp, bp
- POP bp
- RETF
- L3: XOR si, 0
- L4: CMP byte ptr ss:[bp+si-64h], 0
- JNE L5
- L5: LES bx, dword ptr[bp-68h]
- INC word ptr es:[bx]
- JGE L6
- MOV al, ss:[bp+si-64h]
- LES bx, dword ptr[bp-68h]
- INC word ptr es:[bx+0Ch]
- LES bx, dword ptres:[bx+0Ch]
- DEC bx
- MOV es:[bx], al
- MOV ah, 0
- L7: INC si
- JMP L4 ;Synthetic inst
- L6: PUSH word ptr [bp-66h]
- PUSH word ptr [bp-68h]
- PUSH word ptr ss:[bp+si-64h]
- CALL far ptr _fputc
- ADD sp, 6
- JMP L7 ;Synthetic inst
- }
- 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 */
- 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);
- }
|