From d49fdce731afaa98aff7d6423aa8a4c02c73a796 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Fri, 29 Aug 2014 07:47:55 +0200 Subject: [PATCH] [Reduction] #274-323: xx.cpp Yup. 50 functions in a single module, totalling 12,633 bytes, used in all 15 game executables, and no references to any of that in the remaining game code. [Binary change] * Order of 3 relocations in all of THO3, TH04 and TH05, TH02's MAIN.EXE and MAINE.EXE, and TH01's OP.EXE and FUUIN.EXE * Order of 2 relocations in TH02's OP.EXE and TH01's REIIDEN.EXE * Inserts a new relocation into TH03's MAIN.EXE --- libs/BorlandC/xx.asm | 6110 ++++++++++++++++++++++++++++++++ libs/BorlandC/xx[bss].asm | 4 + libs/BorlandC/xx[data].asm | 2 + th01_fuuin.asm | 6627 +---------------------------------- th01_op.asm | 6697 +---------------------------------- th01_reiiden.asm | 6596 +---------------------------------- th02_main.asm | 6695 +---------------------------------- th02_maine.asm | 6644 +---------------------------------- th02_op.asm | 6651 +---------------------------------- th03_main.asm | 6651 +---------------------------------- th03_mainl.asm | 6698 +----------------------------------- th03_op.asm | 6694 +---------------------------------- th04_main.asm | 6696 +---------------------------------- th04_maine.asm | 6649 +---------------------------------- th04_op.asm | 6696 +---------------------------------- th05_main.asm | 6646 +---------------------------------- th05_maine.asm | 6649 +---------------------------------- th05_op.asm | 6600 +---------------------------------- 18 files changed, 6164 insertions(+), 99841 deletions(-) create mode 100644 libs/BorlandC/xx.asm create mode 100644 libs/BorlandC/xx[bss].asm create mode 100644 libs/BorlandC/xx[data].asm diff --git a/libs/BorlandC/xx.asm b/libs/BorlandC/xx.asm new file mode 100644 index 00000000..82252cf0 --- /dev/null +++ b/libs/BorlandC/xx.asm @@ -0,0 +1,6110 @@ + public ___JumpToCatch__ +___JumpToCatch__ proc far + push si + push di + mov sp, bx + mov bp, cx + push dx + push ax + retf +___JumpToCatch__ endp + + pop di + pop si + retf + + +xx_1003C proc far + +@@arg_0 = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, word ptr [bp+@@arg_0] + or ax, word ptr [bp+@@arg_0+2] + jnz short xx_10050 + mov dx, ds + mov ax, offset aNotype ; "" + jmp short xx_1005D + +xx_10050: + les bx, [bp+@@arg_0] + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + add ax, es:[bx+4] + +xx_1005D: + pop di + pop si + pop bp + retf +xx_1003C endp + + + +xx_10061 proc far + +@@var_A = word ptr -0Ah +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 6 +@@arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + cmp dx, word ptr [bp+@@arg_4+2] + jnz short xx_10079 + cmp ax, word ptr [bp+@@arg_4] + jz short xx_100F5 + +xx_10079: + les bx, [bp+@@arg_0] + mov ax, es:[bx+2] + les bx, [bp+@@arg_4] + cmp ax, es:[bx+2] + jnz short xx_100ED + les bx, [bp+@@arg_0] + mov ax, es:[bx] + les bx, [bp+@@arg_4] + cmp ax, es:[bx] + jnz short xx_100ED + les bx, [bp+@@arg_0] + mov ax, es:[bx+2] + les bx, [bp+@@arg_4] + or ax, es:[bx+2] + test al, 80h + jnz short xx_100ED + les bx, [bp+@@arg_0] + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + add ax, es:[bx+4] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+4] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + +xx_100CF: + les bx, [bp+@@var_4] + mov al, es:[bx] + cbw + mov dx, ax + inc word ptr [bp+@@var_4] + les bx, [bp+@@var_8] + mov al, es:[bx] + cbw + mov [bp+@@var_A], ax + inc word ptr [bp+@@var_8] + cmp dx, [bp+@@var_A] + jz short xx_100F1 + +xx_100ED: + xor ax, ax + jmp short xx_100F8 + +xx_100F1: + or dx, dx + jnz short xx_100CF + +xx_100F5: + mov ax, 1 + +xx_100F8: + pop di + pop si + mov sp, bp + pop bp + retf +xx_10061 endp + + + +xx_100FE proc near + +@@var_A = dword ptr -0Ah +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 4 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh +@@arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + les bx, [bp+@@arg_0] + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + add ax, es:[bx+0Ch] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + +xx_10119: + les bx, [bp+@@var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_A+2], dx + mov word ptr [bp+@@var_A], ax + mov ax, word ptr [bp+@@var_A] + or ax, word ptr [bp+@@var_A+2] + jz short xx_101AD + les bx, [bp+@@var_4] + test byte ptr es:[bx+6], 8 + jnz short xx_101A6 + cmp [bp+@@arg_C], 0 + jz short xx_10155 + les bx, [bp+@@var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short xx_10155 + mov ax, 1 + jmp short xx_10157 + +xx_10155: + xor ax, ax + +xx_10157: + mov [bp+@@var_6], ax + push word ptr [bp+@@var_A+2] + push word ptr [bp+@@var_A] + push [bp+@@arg_6] + push [bp+@@arg_4] + call xx_10061 + add sp, 8 + or ax, ax + jz short xx_1017A + cmp [bp+@@var_6], 0 + jz short xx_1017A + jmp xx_1023D + +xx_1017A: + les bx, [bp+@@var_A] + test byte ptr es:[bx+8], 4 + jz short xx_101A6 + push [bp+@@var_6] + push [bp+@@arg_A] + push [bp+@@arg_8] + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@var_A+2] + push word ptr [bp+@@var_A] + call xx_100FE + add sp, 0Eh + or ax, ax + jz short xx_101A6 + jmp xx_1023D + +xx_101A6: + add word ptr [bp+@@var_4], 8 + jmp xx_10119 + +xx_101AD: + les bx, [bp+@@arg_0] + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + add ax, es:[bx+0Ah] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + +xx_101C0: + les bx, [bp+@@var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_A+2], dx + mov word ptr [bp+@@var_A], ax + mov ax, word ptr [bp+@@var_A] + or ax, word ptr [bp+@@var_A+2] + jz short xx_10249 + cmp [bp+@@arg_C], 0 + jz short xx_101F2 + les bx, [bp+@@var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short xx_101F2 + mov ax, 1 + jmp short xx_101F4 + +xx_101F2: + xor ax, ax + +xx_101F4: + mov [bp+@@var_6], ax + push word ptr [bp+@@var_A+2] + push word ptr [bp+@@var_A] + push [bp+@@arg_6] + push [bp+@@arg_4] + call xx_10061 + add sp, 8 + or ax, ax + jz short xx_10214 + cmp [bp+@@var_6], 0 + jnz short xx_1023D + +xx_10214: + les bx, [bp+@@var_A] + test byte ptr es:[bx+8], 4 + jz short xx_10242 + push [bp+@@var_6] + push [bp+@@arg_A] + push [bp+@@arg_8] + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@var_A+2] + push word ptr [bp+@@var_A] + call xx_100FE + add sp, 0Eh + or ax, ax + jz short xx_10242 + +xx_1023D: + mov ax, 1 + jmp short xx_1024B + +xx_10242: + add word ptr [bp+@@var_4], 8 + jmp xx_101C0 + +xx_10249: + xor ax, ax + +xx_1024B: + pop di + pop si + mov sp, bp + pop bp + retn +xx_100FE endp + + + +xx_10251 proc near + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 4 +@@arg_4 = dword ptr 8 +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh +@@arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov cx, [bp+@@arg_8] + +xx_1025C: + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + cmp dx, word ptr [bp+@@arg_4+2] + jnz short xx_1026F + cmp ax, word ptr [bp+@@arg_4] + jnz short xx_1026F + jmp xx_10384 + +xx_1026F: + les bx, [bp+@@arg_0] + mov ax, es:[bx+2] + mov [bp+@@var_2], ax + les bx, [bp+@@arg_4] + mov ax, es:[bx+2] + mov [bp+@@var_4], ax + mov ax, [bp+@@var_2] + and ax, [bp+@@var_4] + test al, 10h + jz short xx_102FF + and [bp+@@var_2], 3300h + and [bp+@@var_4], 3300h + mov ax, [bp+@@var_2] + cmp ax, [bp+@@var_4] + jnz short xx_102A2 + jmp xx_10345 + +xx_102A2: + or cx, cx + jz short xx_102A9 + jmp xx_103BD + +xx_102A9: + mov ax, [bp+@@var_2] + and ax, 300h + mov dx, [bp+@@var_4] + and dx, 300h + cmp ax, dx + jz short xx_102DF + mov ax, [bp+@@var_4] + and ax, 300h + not ax + and ax, [bp+@@var_2] + test ah, 3 + jz short xx_102CD + jmp xx_103BD + +xx_102CD: + or [bp+@@var_2], 300h + or [bp+@@var_4], 300h + mov ax, [bp+@@var_2] + cmp ax, [bp+@@var_4] + jz short xx_10345 + +xx_102DF: + mov ax, [bp+@@var_2] + or ax, 3000h + mov dx, [bp+@@var_4] + or dx, 3000h + cmp ax, dx + jz short xx_102F3 + jmp xx_103BD + +xx_102F3: + test byte ptr [bp+@@var_2+1], 10h + jnz short xx_102FC + jmp xx_103BD + +xx_102FC: + jmp xx_10384 + +xx_102FF: + mov ax, [bp+@@var_2] + and ax, [bp+@@var_4] + test ah, 4 + jz short xx_1036D + les bx, [bp+@@arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+@@arg_4] + cmp dx, es:[bx+0Ch] + jnz short xx_10324 + cmp ax, es:[bx+0Ah] + jz short xx_10345 + +xx_10324: + or cx, cx + jz short xx_1032B + jmp xx_103BD + +xx_1032B: + les bx, [bp+@@arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+@@arg_4] + or ax, es:[bx+0Ah] + or dx, es:[bx+0Ch] + or ax, dx + jnz short xx_103BD + +xx_10345: + mov cx, 1 + les bx, [bp+@@arg_0] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@arg_0+2], dx + mov word ptr [bp+@@arg_0], ax + les bx, [bp+@@arg_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@arg_4+2], dx + mov word ptr [bp+@@arg_4], ax + jmp xx_1025C + +xx_1036D: + push word ptr [bp+@@arg_4+2] + push word ptr [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call xx_10061 + add sp, 8 + or ax, ax + jz short xx_10389 + +xx_10384: + mov ax, 1 + jmp short xx_103BF + +xx_10389: + test byte ptr [bp+@@var_2], 2 + jz short xx_103BD + test byte ptr [bp+@@var_4], 1 + jz short xx_103BD + les bx, [bp+@@arg_0] + test byte ptr es:[bx+8], 4 + jz short xx_103BD + mov ax, 1 + push ax + push [bp+@@arg_C] + push [bp+@@arg_A] + push word ptr [bp+@@arg_4+2] + push word ptr [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call xx_100FE + add sp, 0Eh + jmp short xx_103BF + +xx_103BD: + xor ax, ax + +xx_103BF: + pop di + pop si + mov sp, bp + pop bp + retn +xx_10251 endp + + + +; int __cdecl __far xx_103C5(size_t size) +xx_103C5 proc far + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@size = word ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push [bp+@@size] ; size + nopcall _malloc + pop cx + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + mov ax, [bp+@@var_4] + or ax, [bp+@@var_2] + jnz short xx_10415 + cmp [bp+@@size], 80h ; '€' + ja short xx_103F7 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short xx_103FC + +xx_103F7: + nopcall _abort + +xx_103FC: + les bx, ss:16h + or word ptr es:[bx+4], 1 + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + jmp short xx_1041B + +xx_10415: + mov dx, [bp+@@var_2] + mov ax, [bp+@@var_4] + +xx_1041B: + pop di + pop si + mov sp, bp + pop bp + retf +xx_103C5 endp + + + +xx_10421 proc far + +block = word ptr 6 +@@arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + cmp dx, [bp+@@arg_2] + jnz short xx_10449 + cmp ax, [bp+block] + jnz short xx_10449 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short xx_10456 + +xx_10449: + push [bp+@@arg_2] + push [bp+block] ; block + nopcall _free + pop cx + pop cx + +xx_10456: + pop di + pop si + pop bp + retf +xx_10421 endp + + + +xx_1045A proc near + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 4 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = dword ptr 0Ch +@@arg_C = byte ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_8+2] + push word ptr [bp+@@arg_8] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call xx_10251 + add sp, 0Eh + or ax, ax + jz short xx_10484 + jmp xx_10520 + +xx_10484: + les bx, [bp+@@arg_0] + mov ax, es:[bx+2] + mov [bp+@@var_2], ax + les bx, [bp+@@arg_8] + mov ax, es:[bx+2] + mov [bp+@@var_4], ax + test byte ptr [bp+@@var_4], 20h + jz short xx_10514 + push [bp+@@arg_6] + push [bp+@@arg_4] + mov ax, 1 + push ax + les bx, [bp+@@arg_8] + push word ptr es:[bx+8] + push word ptr es:[bx+6] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call xx_10251 + add sp, 0Eh + or ax, ax + jnz short xx_10520 + les bx, [bp+@@arg_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@arg_8+2], dx + mov word ptr [bp+@@arg_8], ax + les bx, [bp+@@arg_8] + mov ax, es:[bx+2] + mov [bp+@@var_4], ax + test byte ptr [bp+@@var_4], 10h + jz short xx_10557 + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_8+2] + push word ptr [bp+@@arg_8] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call xx_10251 + add sp, 0Eh + or ax, ax + jnz short xx_10520 + mov ax, [bp+@@var_2] + and ax, 3000h + mov dx, [bp+@@var_4] + and dx, 3000h + cmp ax, dx + jnz short xx_10557 + +xx_10514: + test byte ptr [bp+@@var_4], 10h + jz short xx_10557 + test [bp+@@arg_C], 1 + jz short xx_10525 + +xx_10520: + mov ax, 1 + jmp short xx_10559 + +xx_10525: + test byte ptr [bp+@@var_2], 10h + jz short xx_10557 + test byte ptr [bp+@@var_2+1], 20h + jz short xx_10537 + test byte ptr [bp+@@var_4+1], 20h + jz short xx_10557 + +xx_10537: + test byte ptr [bp+@@var_4], 40h + jz short xx_10557 + mov ax, [bp+@@var_2] + and ax, 300h + mov dx, [bp+@@var_4] + and dx, 300h + cmp ax, dx + jnz short xx_10553 + mov ax, 1 + jmp short xx_10555 + +xx_10553: + xor ax, ax + +xx_10555: + jmp short xx_10559 + +xx_10557: + xor ax, ax + +xx_10559: + pop di + pop si + mov sp, bp + pop bp + retn +xx_1045A endp + + + +xx_1055F proc near + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 4 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = dword ptr 0Ch +@@arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+@@var_2], ax + push ds + mov ds, [bp+@@var_2] + mov ax, [bp+@@arg_C] + and ax, 1 + mov [bp+@@var_4], ax + test byte ptr [bp+@@arg_C], 4 + jz short xx_1058A + or [bp+@@var_4], 2 + +xx_1058A: + test byte ptr [bp+@@arg_C], 2 + jz short xx_1059E + or [bp+@@var_4], 4 + test byte ptr [bp+@@arg_C+1], 1 + jnz short xx_1059E + or [bp+@@var_4], 20h + +xx_1059E: + test byte ptr [bp+@@arg_C], 20h + jz short xx_105A8 + or [bp+@@var_4], 8 + +xx_105A8: + test byte ptr [bp+@@arg_C], 80h + jz short xx_105B2 + or [bp+@@var_4], 10h + +xx_105B2: + test byte ptr [bp+@@arg_C+1], 10h + jnz short xx_105BB + jmp xx_10740 + +xx_105BB: + mov bx, [bp+@@var_4] + cmp bx, 17h + jbe short xx_105C6 + jmp xx_10846 + +xx_105C6: + add bx, bx + jmp cs:xx_1087D[bx] + +xx_105CD: + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + add sp, 6 + jmp xx_10846 + +xx_105DF: + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_0] + call [bp+@@arg_8] + add sp, 6 + jmp xx_10846 + +xx_105F1: + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + jmp short xx_10617 + +xx_10605: + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_8] + +xx_10617: + add sp, 0Ah + jmp xx_10846 + +xx_1061D: + xor ax, ax + push ax + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + jmp xx_10846 + +xx_1062C: + xor ax, ax + push ax + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + call [bp+@@arg_8] + jmp xx_10846 + +xx_1063B: + xor ax, ax + push ax + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + jmp short xx_10661 + +xx_1064F: + xor ax, ax + push ax + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_8] + +xx_10661: + jmp xx_10846 + +xx_10664: + mov dx, word ptr [bp+@@arg_0] + mov bx, [bp+@@arg_4] + xor ax, ax + push bx + pop bx + call word ptr [bp+@@arg_8] + jmp xx_10846 + +xx_10674: + mov dx, word ptr [bp+@@arg_0] + mov bx, [bp+@@arg_4] + xor ax, ax + +xx_1067C: + push bx + pop bx + call [bp+@@arg_8] + jmp xx_10846 + +xx_10684: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + xor ax, ax + +xx_10692: + call word ptr [bp+@@arg_8] + jmp short xx_106A8 + +xx_10697: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + xor ax, ax + +xx_106A5: + call [bp+@@arg_8] + +xx_106A8: + jmp xx_10846 + +xx_106AB: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + xor ax, ax + push ax + call word ptr [bp+@@arg_8] + jmp short xx_106C5 + +xx_106B9: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + xor ax, ax + push ax + +xx_106C2: + call [bp+@@arg_8] + +xx_106C5: + pop cx + pop cx + jmp xx_10846 + +xx_106CA: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + call word ptr [bp+@@arg_8] + add sp, 6 + pop ds + jmp xx_10846 + +xx_106E1: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + xor ax, ax + push ax + call [bp+@@arg_8] + add sp, 6 + pop ds + jmp xx_10846 + +xx_106F8: + mov si, word ptr [bp+@@arg_0] + xor ax, ax + push ax + push [bp+@@arg_4] + +xx_10701: + call word ptr [bp+@@arg_8] + jmp short xx_10712 + +xx_10706: + mov si, word ptr [bp+@@arg_0] + xor ax, ax + push ax + push [bp+@@arg_4] + +xx_1070F: + call [bp+@@arg_8] + +xx_10712: + jmp xx_10846 + +xx_10715: + push ds + lds si, [bp+@@arg_0] + xor ax, ax + push ax + push [bp+@@arg_6] + push [bp+@@arg_4] + call word ptr [bp+@@arg_8] + pop ds + jmp xx_10846 + +xx_10729: + push ds + lds si, [bp+@@arg_0] + xor ax, ax + push ax + push [bp+@@arg_6] + push [bp+@@arg_4] + call [bp+@@arg_8] + pop ds + jmp xx_10846 + +xx_1073D: + jmp xx_10846 + +xx_10740: + mov bx, [bp+@@var_4] + cmp bx, 17h + jbe short xx_1074B + jmp xx_10846 + +xx_1074B: + add bx, bx + jmp cs:xx_1084D[bx] + +xx_10752: + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + jmp xx_106C5 + +xx_1075E: + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + jmp xx_106C2 + +xx_10767: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_8] + jmp short xx_10787 + +xx_10778: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_8] + +xx_10787: + add sp, 8 + jmp xx_10846 + +xx_1078D: + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + jmp xx_10701 + +xx_10796: + push [bp+@@arg_4] + push word ptr [bp+@@arg_0] + jmp xx_1070F + +xx_1079F: + mov ax, word ptr [bp+@@arg_0] + mov bx, [bp+@@arg_4] + push bx + pop bx + call word ptr [bp+@@arg_8] + jmp xx_10846 + +xx_107AD: + mov ax, word ptr [bp+@@arg_0] + mov bx, [bp+@@arg_4] + jmp xx_1067C + +xx_107B6: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + jmp xx_10692 + +xx_107C5: + push [bp+@@arg_6] + push [bp+@@arg_4] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + jmp xx_106A5 + +xx_107D4: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + call word ptr [bp+@@arg_8] + pop cx + jmp short xx_10846 + +xx_107E0: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + call [bp+@@arg_8] + pop cx + jmp short xx_10846 + +xx_107EC: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + call word ptr [bp+@@arg_8] + pop cx + pop cx + pop ds + jmp short xx_10846 + +xx_107FE: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + call [bp+@@arg_8] + pop cx + pop cx + pop ds + jmp short xx_10846 + +xx_10810: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + call word ptr [bp+@@arg_8] + jmp short xx_10846 + +xx_1081B: + mov si, word ptr [bp+@@arg_0] + push [bp+@@arg_4] + call [bp+@@arg_8] + jmp short xx_10846 + +xx_10826: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + call word ptr [bp+@@arg_8] + pop ds + jmp short xx_10846 + +xx_10836: + push ds + lds si, [bp+@@arg_0] + push [bp+@@arg_6] + push [bp+@@arg_4] + call [bp+@@arg_8] + pop ds + jmp short $+2 + +xx_10846: + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +xx_1055F endp + +xx_1084D dw offset xx_10752 + dw offset xx_1075E + dw offset xx_10767 + dw offset xx_10778 + dw offset xx_1078D + dw offset xx_10796 + dw offset xx_107B6 + dw offset xx_107C5 + dw offset xx_1079F + dw offset xx_107AD + dw offset xx_107B6 + dw offset xx_107C5 + dw offset xx_10846 + dw offset xx_10846 + dw offset xx_10846 + dw offset xx_10846 + dw offset xx_107D4 + dw offset xx_107E0 + dw offset xx_107EC + dw offset xx_107FE + dw offset xx_10810 + dw offset xx_1081B + dw offset xx_10826 + dw offset xx_10836 +xx_1087D dw offset xx_105CD + dw offset xx_105DF + dw offset xx_105F1 + dw offset xx_10605 + dw offset xx_1061D + dw offset xx_1062C + dw offset xx_1063B + dw offset xx_1064F + dw offset xx_10664 + dw offset xx_10674 + dw offset xx_10684 + dw offset xx_10697 + dw offset xx_1073D + dw offset xx_1073D + dw offset xx_1073D + dw offset xx_1073D + dw offset xx_106AB + dw offset xx_106B9 + dw offset xx_106CA + dw offset xx_106E1 + dw offset xx_106F8 + dw offset xx_10706 + dw offset xx_10715 + dw offset xx_10729 + + +xx_108AD proc near + +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 4 +@@arg_4 = dword ptr 8 +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp [bp+@@arg_A], 0 + jz short xx_108C0 + mov ax, 2 + jmp short xx_108C2 + +xx_108C0: + xor ax, ax + +xx_108C2: + mov [bp+@@var_2], ax + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+@@var_4], ax + push ds + mov ds, [bp+@@var_4] + mov ax, [bp+@@arg_8] + and ax, 1 + mov [bp+@@var_6], ax + test byte ptr [bp+@@arg_8], 4 + jz short xx_108E8 + or [bp+@@var_6], 2 + +xx_108E8: + test byte ptr [bp+@@arg_8], 2 + jz short xx_108FC + or [bp+@@var_6], 4 + test byte ptr [bp+@@arg_8+1], 1 + jnz short xx_108FC + or [bp+@@var_6], 20h + +xx_108FC: + test byte ptr [bp+@@arg_8], 20h + jz short xx_10906 + or [bp+@@var_6], 8 + +xx_10906: + test byte ptr [bp+@@arg_8], 80h + jz short xx_10910 + or [bp+@@var_6], 10h + +xx_10910: + mov bx, [bp+@@var_6] + cmp bx, 17h + jbe short xx_1091B + jmp xx_10A2E + +xx_1091B: + add bx, bx + jmp cs:xx_10A35[bx] + +xx_10922: + push [bp+@@var_2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_4] + pop cx + pop cx + jmp xx_10A2E + +xx_10930: + push [bp+@@var_2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_4] + pop cx + pop cx + jmp xx_10A2E + +xx_1093E: + push [bp+@@var_2] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_4] + add sp, 6 + jmp xx_10A2E + +xx_10950: + push [bp+@@var_2] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_4] + add sp, 6 + jmp xx_10A2E + +xx_10962: + push [bp+@@var_2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_4] + jmp short xx_109C8 + +xx_1096D: + push [bp+@@var_2] + push word ptr [bp+@@arg_0] + jmp short xx_109C5 + +xx_10975: + push [bp+@@var_2] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call word ptr [bp+@@arg_4] + jmp short xx_1098F + +xx_10983: + push [bp+@@var_2] + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + call [bp+@@arg_4] + +xx_1098F: + jmp xx_10A2E + +xx_10992: + mov bx, word ptr [bp+@@arg_0] + mov ax, [bp+@@var_2] + push bx + pop bx + call word ptr [bp+@@arg_4] + jmp xx_10A2E + +xx_109A0: + mov bx, word ptr [bp+@@arg_0] + mov ax, [bp+@@var_2] + push bx + pop bx + call [bp+@@arg_4] + jmp xx_10A2E + +xx_109AE: + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + mov ax, [bp+@@var_2] + call word ptr [bp+@@arg_4] + jmp short xx_109C8 + +xx_109BC: + push word ptr [bp+@@arg_0+2] + push word ptr [bp+@@arg_0] + mov ax, [bp+@@var_2] + +xx_109C5: + call [bp+@@arg_4] + +xx_109C8: + jmp short xx_10A2E + +xx_109CA: + mov si, word ptr [bp+@@arg_0] + push [bp+@@var_2] + call word ptr [bp+@@arg_4] + pop cx + jmp short xx_10A2E + +xx_109D6: + mov si, word ptr [bp+@@arg_0] + push [bp+@@var_2] + call [bp+@@arg_4] + pop cx + jmp short xx_10A2E + +xx_109E2: + push ds + lds si, [bp+@@arg_0] + push [bp+@@var_2] + call word ptr [bp+@@arg_4] + pop cx + pop ds + jmp short xx_10A2E + +xx_109F0: + push ds + lds si, [bp+@@arg_0] + push [bp+@@var_2] + call [bp+@@arg_4] + pop cx + pop ds + jmp short xx_10A2E + +xx_109FE: + mov si, word ptr [bp+@@arg_0] + push [bp+@@var_2] + call word ptr [bp+@@arg_4] + jmp short xx_10A2E + +xx_10A09: + mov si, word ptr [bp+@@arg_0] + push [bp+@@var_2] + call [bp+@@arg_4] + jmp short xx_10A2E + +xx_10A14: + push ds + lds si, [bp+@@arg_0] + push [bp+@@var_2] + call word ptr [bp+@@arg_4] + pop ds + jmp short xx_10A2E + +xx_10A21: + push ds + lds si, [bp+@@arg_0] + push [bp+@@var_2] + call [bp+@@arg_4] + pop ds + jmp short $+2 + +xx_10A2E: + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +xx_108AD endp + +xx_10A35 dw offset xx_10922 + dw offset xx_10930 + dw offset xx_1093E + dw offset xx_10950 + dw offset xx_10962 + dw offset xx_1096D + dw offset xx_10975 + dw offset xx_10983 + dw offset xx_10992 + dw offset xx_109A0 + dw offset xx_109AE + dw offset xx_109BC + dw offset xx_10A2E + dw offset xx_10A2E + dw offset xx_10A2E + dw offset xx_10A2E + dw offset xx_109CA + dw offset xx_109D6 + dw offset xx_109E2 + dw offset xx_109F0 + dw offset xx_109FE + dw offset xx_10A09 + dw offset xx_10A14 + dw offset xx_10A21 + + +xx_10A65 proc near + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 4 +@@arg_2 = word ptr 6 +@@arg_4 = dword ptr 8 +@@arg_8 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+@@var_2], ax + push ds + mov ds, [bp+@@var_2] + mov ax, [bp+@@arg_8] + and ax, 1 + mov [bp+@@var_4], ax + test byte ptr [bp+@@arg_8], 4 + jz short xx_10A90 + or [bp+@@var_4], 2 + +xx_10A90: + test byte ptr [bp+@@arg_8], 2 + jz short xx_10A9A + or [bp+@@var_4], 4 + +xx_10A9A: + test byte ptr [bp+@@arg_8], 20h + jz short xx_10AA4 + or [bp+@@var_4], 8 + +xx_10AA4: + mov bx, [bp+@@var_4] + cmp bx, 0Bh + ja short xx_10B17 + add bx, bx + jmp cs:xx_10B1E[bx] + +xx_10AB3: + push [bp+@@arg_0] + call word ptr [bp+@@arg_4] + pop cx + jmp short xx_10B17 + +xx_10ABC: + push [bp+@@arg_0] + call [bp+@@arg_4] + pop cx + jmp short xx_10B17 + +xx_10AC5: + push [bp+@@arg_2] + push [bp+@@arg_0] + call word ptr [bp+@@arg_4] + jmp short xx_10AD9 + +xx_10AD0: + push [bp+@@arg_2] + push [bp+@@arg_0] + call [bp+@@arg_4] + +xx_10AD9: + pop cx + pop cx + jmp short xx_10B17 + +xx_10ADD: + push [bp+@@arg_0] + call word ptr [bp+@@arg_4] + jmp short xx_10AEB + +xx_10AE5: + push [bp+@@arg_0] + call [bp+@@arg_4] + +xx_10AEB: + jmp short xx_10B17 + +xx_10AED: + mov bx, [bp+@@arg_0] + push bx + pop bx + call word ptr [bp+@@arg_4] + jmp short xx_10B17 + +xx_10AF7: + mov bx, [bp+@@arg_0] + push bx + pop bx + call [bp+@@arg_4] + jmp short xx_10B17 + +xx_10B01: + push [bp+@@arg_2] + push [bp+@@arg_0] + call word ptr [bp+@@arg_4] + jmp short xx_10B15 + +xx_10B0C: + push [bp+@@arg_2] + push [bp+@@arg_0] + call [bp+@@arg_4] + +xx_10B15: + jmp short $+2 + +xx_10B17: + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +xx_10A65 endp + +xx_10B1E dw offset xx_10AB3 + dw offset xx_10ABC + dw offset xx_10AC5 + dw offset xx_10AD0 + dw offset xx_10ADD + dw offset xx_10AE5 + dw offset xx_10B01 + dw offset xx_10B0C + dw offset xx_10AED + dw offset xx_10AF7 + dw offset xx_10B01 + dw offset xx_10B0C +xx_10B36 db 4 dup(0) + dd xx_10DF4 +xx_10B3E db 14h dup(0) + dd xx_10E4D + db 10h dup(0) +xx_10B66 db 4 dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0 + dd xx_10B36 + db 2 dup(0), 4, 3 dup(0), 3, 0 + dd xx_10B3E+10h + db 2 dup(0), 4, 0 + + +; int __cdecl __far xx_10B84(int, int, size_t n, int, int, int, int, int, int, int, int, int, int, int, int, int) +xx_10B84 proc far + +@@var_48 = word ptr -48h +@@var_46 = word ptr -46h +@@var_44 = word ptr -44h +@@var_42 = word ptr -42h +@@var_40 = word ptr -40h +@@var_3E = word ptr -3Eh +@@var_3C = word ptr -3Ch +@@var_3A = word ptr -3Ah +@@var_38 = dword ptr -38h +@@var_34 = dword ptr -34h +@@src = word ptr -30h +@@var_2C = word ptr -2Ch +@@var_2A = word ptr -2Ah +@@var_28 = word ptr -28h +@@var_26 = dword ptr -26h +@@var_22 = dword ptr -22h +@@var_1E = word ptr -1Eh +@@var_12 = word ptr -12h +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +n = word ptr 0Ah +@@arg_6 = word ptr 0Ch +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h +@@arg_10 = word ptr 16h +@@arg_12 = word ptr 18h +@@arg_14 = word ptr 1Ah +@@arg_16 = word ptr 1Ch +@@arg_18 = word ptr 1Eh +@@arg_1A = word ptr 20h +@@arg_1C = word ptr 22h +@@arg_1E = word ptr 24h + + push bp + mov bp, sp + sub sp, 48h + push si + push di + mov ax, seg xx_10B66 + mov bx, offset xx_10B66 + nopcall ___InitExceptBlocks + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + mov word ptr [bp+@@var_22+2], dx + mov word ptr [bp+@@var_22], ax + les bx, ss:16h + mov word ptr es:[bx+6], ds + mov dx, ss:18h + mov ax, ss:16h + add ax, 28h ; '(' + les bx, ss:16h + mov es:[bx+1Eh], dx + mov es:[bx+1Ch], ax + les bx, [bp+@@var_22] + mov dx, word ptr [bp+@@var_22+2] + mov ax, word ptr [bp+@@var_22] + add ax, es:[bx+4] + mov word ptr [bp+@@var_34+2], dx + mov word ptr [bp+@@var_34], ax + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov word ptr [bp+@@var_38+2], dx + mov word ptr [bp+@@var_38], ax + jmp short xx_10C10 + +xx_10BED: + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+@@var_38] + jbe short xx_10C0D + les bx, [bp+@@var_34] + mov al, es:[bx] + les bx, [bp+@@var_38] + mov es:[bx], al + inc word ptr [bp+@@var_38] + +xx_10C0D: + inc word ptr [bp+@@var_34] + +xx_10C10: + les bx, [bp+@@var_34] + cmp byte ptr es:[bx], 0 + jnz short xx_10BED + les bx, [bp+@@var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+@@arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+@@arg_18] + mov ax, [bp+@@arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+@@var_22+2] + mov ax, word ptr [bp+@@var_22] + mov word ptr [bp+@@var_26+2], dx + mov word ptr [bp+@@var_26], ax + les bx, [bp+@@var_22] + mov ax, es:[bx] + mov [bp+@@var_28], ax + les bx, [bp+@@var_22] + mov ax, es:[bx+2] + mov [bp+@@var_2A], ax + test byte ptr [bp+@@var_2A], 2 + jz short xx_10C6D + les bx, [bp+@@var_22] + mov ax, es:[bx+8] + jmp short xx_10C6F + +xx_10C6D: + xor ax, ax + +xx_10C6F: + mov [bp+@@var_2C], ax + test byte ptr [bp+@@var_2A], 30h + jz short xx_10C89 + les bx, [bp+@@var_26] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_26+2], dx + mov word ptr [bp+@@var_26], ax + +xx_10C89: + mov ax, [bp+@@var_28] + add ax, 3Ah ; ':' + push ax ; size + call xx_103C5 + pop cx + mov [bp+@@src+2], dx + mov [bp+@@src], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr [bp+@@src] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, [bp+@@src+2] + mov ax, [bp+@@src] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr [bp+@@src] + mov dx, word ptr [bp+@@var_22+2] + mov ax, word ptr [bp+@@var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@arg_12] + mov es:[bx+0Ch], ax + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@var_28] + mov es:[bx+0Eh], ax + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@var_2A] + mov es:[bx+14h], ax + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@var_2C] + mov es:[bx+16h], ax + les bx, dword ptr [bp+@@src] + mov dx, word ptr [bp+@@var_26+2] + mov ax, word ptr [bp+@@var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, dword ptr [bp+@@src] + mov dx, [bp+@@arg_A] + mov ax, [bp+@@arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, dword ptr [bp+@@src] + mov word ptr es:[bx+24h], 0 + les bx, dword ptr [bp+@@src] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, dword ptr [bp+@@src] + mov word ptr es:[bx+18h], ds + les bx, dword ptr [bp+@@src] + mov word ptr es:[bx+1Ch], seg xx_10421 + mov word ptr es:[bx+1Ah], offset xx_10421 + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@arg_14] + mov es:[bx+2Ch], ax + les bx, dword ptr [bp+@@src] + mov dx, [bp+@@arg_18] + mov ax, [bp+@@arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, dword ptr [bp+@@src] + mov dx, [bp+@@arg_E] + mov ax, [bp+@@arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, dword ptr [bp+@@src] + mov ax, [bp+@@arg_10] + mov es:[bx+22h], ax + les bx, dword ptr [bp+@@src] + mov byte ptr es:[bx+39h], 0 + les bx, dword ptr [bp+@@src] + mov byte ptr es:[bx+38h], 1 + push [bp+@@var_28] + push [bp+@@arg_6] + push [bp+n] ; n + mov ax, [bp+@@src] + add ax, 3Ah ; ':' + push [bp+@@src+2] ; src + push ax ; dest + nopcall _memcpy + add sp, 0Ah + test byte ptr [bp+@@var_2C], 1 + jz short xx_10E13 + nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+@@var_3A], dx + mov [bp+@@var_3C], ax + mov [bp+@@var_12], 6 + push [bp+@@arg_10] + push [bp+@@arg_E] + push [bp+@@arg_C] + push [bp+@@arg_6] + push [bp+n] + mov ax, [bp+@@src] + add ax, 3Ah ; ':' + push [bp+@@src+2] + push ax + call xx_1055F + add sp, 0Eh + mov [bp+@@var_12], 0 + jmp short xx_10DFE + +xx_10DF4: + nopcall ___call_terminate + nopcall @_CatchCleanup$qv ; _CatchCleanup(void) + +xx_10DFE: + nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, [bp+@@var_3A] + mov cx, [bp+@@var_3C] + mov es, dx + xchg ax, bx + mov es:[bx+2], ax + mov es:[bx], cx + +xx_10E13: + cmp [bp+@@arg_1E], 0 + jnz short xx_10E57 + test byte ptr [bp+@@var_2C], 2 + jz short xx_10E57 + mov [bp+@@var_12], 12h + mov ax, 1 + push ax + les bx, [bp+@@var_22] + push word ptr es:[bx+22h] + les bx, [bp+@@var_22] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push [bp+@@arg_6] + push [bp+n] + call xx_108AD + add sp, 0Ch + mov [bp+@@var_12], 0 + jmp short xx_10E57 + +xx_10E4D: + nopcall ___call_terminate + nopcall @_CatchCleanup$qv ; _CatchCleanup(void) + +xx_10E57: + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+@@var_46], dx + mov [bp+@@var_48], ax + mov dx, [bp+@@arg_1C] + mov ax, [bp+@@arg_1A] + mov [bp+@@var_42], dx + mov [bp+@@var_44], ax + mov dx, [bp+@@src+2] + mov ax, [bp+@@src] + mov [bp+@@var_3E], dx + mov [bp+@@var_40], ax + push ss + lea ax, [bp+@@var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nopcall _RaiseException + add sp, 10h + push [bp+@@var_1E] + nopcall ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +xx_10B84 endp + + + +; int __cdecl __far _ThrowException(int, int, size_t n, int, int, int, int, int, int, int, int, int, int) + public @_ThrowException$qnvt1t1t1uiuiuinuc +@_ThrowException$qnvt1t1t1uiuiuinuc proc far + +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +n = word ptr 0Ah +@@arg_6 = word ptr 0Ch +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h +@@arg_10 = word ptr 16h +@@arg_12 = word ptr 18h +@@arg_14 = word ptr 1Ah +@@arg_16 = word ptr 1Ch +@@arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+@@var_6], bp + mov bx, [bp+@@var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + xor ax, ax + push ax ; int + push [bp+@@var_2] ; int + push [bp+@@var_4] ; int + push [bp+@@arg_18] ; int + push [bp+@@arg_16] ; int + push [bp+@@arg_14] ; int + push [bp+@@arg_12] ; int + push [bp+@@arg_10] ; int + push [bp+@@arg_E] ; int + push [bp+@@arg_C] ; int + push [bp+@@arg_A] ; int + push [bp+@@arg_8] ; int + push [bp+@@arg_6] ; int + push [bp+n] ; n + push [bp+@@arg_2] ; int + push [bp+@@arg_0] ; int + call xx_10B84 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ThrowException$qnvt1t1t1uiuiuinuc endp + + + +; _ReThrowException(unsigned int, unsigned char *) + public @_ReThrowException$quinuc +@_ReThrowException$quinuc proc far + +@@var_A = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+@@var_A], bp + mov bx, [bp+@@var_A] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+@@var_8+2], dx + mov [bp+@@var_8], ax + mov ax, [bp+@@var_8] + or ax, [bp+@@var_8+2] + jnz short xx_10F47 + nopcall ___call_terminate + +xx_10F47: + mov ax, 1 + push ax ; int + push [bp+@@var_2] ; int + push [bp+@@var_4] ; int + push [bp+@@arg_4] ; int + push [bp+@@arg_2] ; int + push [bp+@@arg_0] ; int + les bx, dword ptr [bp+@@var_8] + push word ptr es:[bx+0Ch] ; int + les bx, dword ptr [bp+@@var_8] + push word ptr es:[bx+22h] ; int + les bx, dword ptr [bp+@@var_8] + push word ptr es:[bx+20h] ; int + push word ptr es:[bx+1Eh] ; int + les bx, dword ptr [bp+@@var_8] + push word ptr es:[bx+0Ah] ; int + push word ptr es:[bx+8] ; int + les bx, dword ptr [bp+@@var_8] + cmp byte ptr es:[bx+38h], 0 + jz short xx_10F93 + mov dx, [bp+@@var_8+2] + mov ax, [bp+@@var_8] + add ax, 3Ah ; ':' + jmp short xx_10F9C + +xx_10F93: + les bx, dword ptr [bp+@@var_8] + mov ax, es:[bx+36h] + mov dx, ss + +xx_10F9C: + push dx ; int + push ax ; n + les bx, dword ptr [bp+@@var_8] + push word ptr es:[bx+6] ; int + push word ptr es:[bx+4] ; int + call xx_10B84 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ReThrowException$quinuc endp + + +xx_10FB6 proc far + push si + push di + pop di + pop si + retf +xx_10FB6 endp + + + +xx_10FBB proc far + +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+@@var_4], 0 + mov bx, [bp+@@arg_0] + test byte ptr ss:[bx+4], 6 + jz short xx_10FD5 + inc [bp+@@var_4] + +xx_10FD5: + mov ax, ss:14h + mov [bp+@@var_2], ax + call xx_10FB6 + jmp short xx_11023 + +xx_10FE2: + mov ax, [bp+@@var_2] + mov [bp+@@var_6], ax + xor ax, ax + push ax + push ax + push [bp+@@arg_4] + push [bp+@@arg_2] + push [bp+@@var_2] + push ss + push [bp+@@arg_0] + mov bx, [bp+@@var_6] + call dword ptr ss:[bx+2] + add sp, 0Eh + mov dx, ax + or dx, dx + jnz short xx_1100D + mov ax, dx + jmp short xx_11041 + +xx_1100D: + cmp [bp+@@var_4], 0 + jz short xx_1101A + mov ax, [bp+@@var_2] + mov ss:14h, ax + +xx_1101A: + mov bx, [bp+@@var_2] + mov ax, ss:[bx] + mov [bp+@@var_2], ax + +xx_11023: + cmp [bp+@@var_2], 0FFFFh + jz short xx_11031 + mov ax, [bp+@@var_2] + cmp ax, [bp+@@arg_6] + jnz short xx_10FE2 + +xx_11031: + cmp [bp+@@var_4], 0 + jz short xx_1103E + mov ax, [bp+@@var_2] + mov ss:14h, ax + +xx_1103E: + mov ax, 1 + +xx_11041: + pop di + pop si + mov sp, bp + pop bp + retf +xx_10FBB endp + + + + public __Global_unwind +__Global_unwind proc far + +@@var_4C = word ptr -4Ch +@@var_4A = word ptr -4Ah +@@var_48 = word ptr -48h +@@var_46 = word ptr -46h +@@var_3E = word ptr -3Eh +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4Ch + push si + push di + mov dx, [bp+@@arg_2] + or dx, dx + jnz short xx_11072 + mov [bp+@@var_4A], 0 + mov [bp+@@var_4C], 26h ; '&' + mov [bp+@@var_46], 0 + mov [bp+@@var_48], 2 + mov [bp+@@var_3E], 0 + lea dx, [bp+@@var_4C] + +xx_11072: + mov bx, dx + or word ptr ss:[bx+4], 2 + push [bp+@@arg_0] + xor ax, ax + push ax + push ax + push dx + call xx_10FBB + add sp, 8 + pop di + pop si + mov sp, bp + pop bp + retf +__Global_unwind endp + + +xx_1108E proc far + push si + push di + pop di + pop si + retf +xx_1108E endp + + + + public _RaiseException +_RaiseException proc far + +dest = word ptr -186h +@@var_184 = word ptr -184h +@@var_182 = word ptr -182h +@@var_180 = word ptr -180h +@@var_17E = word ptr -17Eh +@@var_17C = word ptr -17Ch +@@var_176 = word ptr -176h +@@var_174 = word ptr -174h +@@var_172 = word ptr -172h +@@var_170 = word ptr -170h +@@var_16E = word ptr -16Eh +@@var_16C = word ptr -16Ch +@@var_16A = word ptr -16Ah +@@var_168 = word ptr -168h +@@var_166 = word ptr -166h +@@var_164 = word ptr -164h +@@var_162 = word ptr -162h +@@var_160 = word ptr -160h +@@var_15E = word ptr -15Eh +@@var_15A = word ptr -15Ah +@@var_158 = word ptr -158h +@@var_156 = word ptr -156h +@@var_154 = word ptr -154h +@@var_152 = byte ptr -152h +@@var_C6 = word ptr -0C6h +@@var_C4 = word ptr -0C4h +@@var_C2 = word ptr -0C2h +@@var_C0 = word ptr -0C0h +@@var_BE = word ptr -0BEh +@@var_BC = word ptr -0BCh +@@var_BA = word ptr -0BAh +@@var_B8 = word ptr -0B8h +@@var_B6 = word ptr -0B6h +@@var_B4 = word ptr -0B4h +@@var_B2 = word ptr -0B2h +@@var_B0 = word ptr -0B0h +@@var_AE = word ptr -0AEh +@@var_AC = word ptr -0ACh +@@var_AA = word ptr -0AAh +@@var_A8 = word ptr -0A8h +@@var_A6 = word ptr -0A6h +@@var_A4 = word ptr -0A4h +@@var_A2 = word ptr -0A2h +@@var_A0 = word ptr -0A0h +@@var_9E = word ptr -9Eh +@@var_9C = word ptr -9Ch +@@var_9A = word ptr -9Ah +@@var_98 = word ptr -98h +@@var_96 = word ptr -96h +@@var_94 = word ptr -94h +@@var_92 = word ptr -92h +@@var_90 = word ptr -90h +@@var_8E = word ptr -8Eh +@@var_8C = word ptr -8Ch +@@var_8A = word ptr -8Ah +@@var_88 = word ptr -88h +@@var_86 = byte ptr -86h +@@var_56 = word ptr -56h +@@var_54 = word ptr -54h +@@var_52 = word ptr -52h +@@var_50 = word ptr -50h +@@var_4E = word ptr -4Eh +@@var_4C = word ptr -4Ch +@@var_4A = word ptr -4Ah +@@var_48 = word ptr -48h +@@var_46 = byte ptr -46h +n = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 18h +@@arg_2 = word ptr 1Ah +@@arg_4 = word ptr 1Ch +@@arg_6 = word ptr 1Eh +@@arg_8 = word ptr 20h +@@arg_A = word ptr 22h +@@arg_C = dword ptr 24h + + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, sp + sub sp, 186h + lea ax, [bp+@@var_86] + push ax + call xx_1108E + pop cx + pushf + pop ax + mov [bp+@@var_8], ax + cmp byte ptr ds:__8086, 3 + jnb short xx_110BC + jmp xx_11172 + +xx_110BC: + pushad + mov [bp+n], sp + mov ax, 20h ; ' ' + push ax + push ss + push [bp+n] ; n + push ss ; src + lea ax, [bp+dest] + push ax ; dest + nopcall _memcpy + add sp, 0Ah + popad + mov dx, [bp+@@var_184] + mov ax, [bp+dest] + mov [bp+@@var_B4], dx + mov [bp+@@var_B6], ax + mov dx, [bp+@@var_180] + mov ax, [bp+@@var_182] + mov [bp+@@var_B0], dx + mov [bp+@@var_B2], ax + mov dx, [bp+@@var_174] + mov ax, [bp+@@var_176] + mov [bp+@@var_AC], dx + mov [bp+@@var_AE], ax + mov dx, [bp+@@var_170] + mov ax, [bp+@@var_172] + mov [bp+@@var_A8], dx + mov [bp+@@var_AA], ax + mov dx, [bp+@@var_16C] + mov ax, [bp+@@var_16E] + mov [bp+@@var_A4], dx + mov [bp+@@var_A6], ax + mov dx, [bp+@@var_168] + mov ax, [bp+@@var_16A] + mov [bp+@@var_A0], dx + mov [bp+@@var_A2], ax + mov dx, [bp+@@var_17C] + mov ax, [bp+@@var_17E] + mov [bp+@@var_9C], dx + mov [bp+@@var_9E], ax + pushfd + pop eax + shr eax, 10h + mov [bp+@@var_90], ax + mov ax, [bp+@@var_8] + mov [bp+@@var_92], ax + mov [bp+@@var_C0], 0 + mov [bp+@@var_C2], fs + mov [bp+@@var_C4], 0 + mov [bp+@@var_C6], gs + jmp short xx_111BB + +xx_11172: + xor ax, ax + xor dx, dx + mov [bp+@@var_9C], ax + mov [bp+@@var_9E], dx + mov [bp+@@var_A0], ax + mov [bp+@@var_A2], dx + mov [bp+@@var_A4], ax + mov [bp+@@var_A6], dx + mov [bp+@@var_A8], ax + mov [bp+@@var_AA], dx + mov [bp+@@var_AC], ax + mov [bp+@@var_AE], dx + mov [bp+@@var_B0], ax + mov [bp+@@var_B2], dx + mov [bp+@@var_B4], ax + mov [bp+@@var_B6], dx + mov ax, [bp+@@var_8] + mov [bp+@@var_90], 0 + mov [bp+@@var_92], ax + +xx_111BB: + mov dx, [bp+@@var_9C] + mov ax, [bp+@@var_9E] + add ax, 18h + adc dx, 0 + mov [bp+@@var_8C], dx + mov [bp+@@var_8E], ax + cmp [bp+@@arg_2], 0EEFh + jnz short xx_111EC + cmp [bp+@@arg_0], 0FACEh + jnz short xx_111EC + les bx, [bp+@@arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short xx_111FA + +xx_111EC: + mov [bp+n], bp + mov bx, [bp+n] + mov dx, ss:[bx+16h] + mov ax, ss:[bx+14h] + +xx_111FA: + mov [bp+@@var_4], dx + mov [bp+@@var_6], ax + mov ax, [bp+@@var_6] + mov [bp+@@var_98], 0 + mov [bp+@@var_9A], ax + mov ax, [bp+@@var_4] + mov [bp+@@var_94], 0 + mov [bp+@@var_96], ax + mov ax, 14h + push ax + push ss + push bp ; n + push ss ; src + lea ax, [bp+@@var_166] + push ax ; dest + nopcall _memcpy + add sp, 0Ah + mov ax, [bp+@@var_164] + mov [bp+@@var_B8], 0 + mov [bp+@@var_BA], ax + mov ax, [bp+@@var_166] + mov [bp+@@var_BC], 0 + mov [bp+@@var_BE], ax + mov [bp+@@var_88], 0 + mov [bp+@@var_8A], ss + mov ax, [bp+@@var_154] + mov [bp+@@var_A2], ax + mov ax, [bp+@@var_15A] + mov [bp+@@var_AE], ax + mov ax, [bp+@@var_156] + mov [bp+@@var_A6], ax + mov ax, [bp+@@var_158] + mov [bp+@@var_AA], ax + mov ax, [bp+@@var_160] + mov [bp+@@var_B2], ax + mov ax, [bp+@@var_162] + mov [bp+@@var_B6], ax + mov ax, [bp+@@var_15E] + mov [bp+@@var_9E], ax + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + and dx, 0EFFFh + mov [bp+@@var_54], dx + mov [bp+@@var_56], ax + mov dx, [bp+@@arg_6] + mov ax, [bp+@@arg_4] + mov [bp+@@var_50], dx + mov [bp+@@var_52], ax + mov dx, [bp+@@var_4] + mov ax, [bp+@@var_6] + mov [bp+@@var_4A], dx + mov [bp+@@var_4C], ax + mov [bp+@@var_4E], 0 + mov ax, word ptr [bp+@@arg_C] + or ax, word ptr [bp+@@arg_C+2] + jnz short xx_112CB + mov [bp+@@arg_A], 0 + mov [bp+@@arg_8], 0 + +xx_112CB: + cmp [bp+@@arg_A], 0 + jb short xx_112E3 + ja short xx_112D9 + cmp [bp+@@arg_8], 0Fh + jbe short xx_112E3 + +xx_112D9: + mov [bp+@@arg_A], 0 + mov [bp+@@arg_8], 0Fh + +xx_112E3: + mov ax, [bp+@@arg_8] + mov [bp+@@var_48], ax + mov [bp+@@var_2], 0 + jmp short xx_11319 + +xx_112F0: + mov bx, [bp+@@var_2] + mov cl, 2 + shl bx, cl + lea ax, [bp+@@var_46] + add bx, ax + mov ax, [bp+@@var_2] + mov cl, 2 + shl ax, cl + les si, [bp+@@arg_C] + add si, ax + mov dx, es:[si+2] + mov ax, es:[si] + mov ss:[bx+2], dx + mov ss:[bx], ax + inc [bp+@@var_2] + +xx_11319: + mov ax, [bp+@@var_2] + xor dx, dx + cmp dx, [bp+@@arg_A] + jb short xx_112F0 + jnz short xx_1132A + cmp ax, [bp+@@arg_8] + jb short xx_112F0 + +xx_1132A: + mov ax, 0FFFFh + push ax + push ss + lea ax, [bp+@@var_152] + push ax + lea ax, [bp+@@var_56] + push ax + call xx_10FBB + add sp, 8 + or ax, ax + jnz short xx_11375 + test byte ptr [bp+@@arg_4], 1 + jz short xx_11395 + mov [bp+@@var_54], 0C000h + mov [bp+@@var_56], 25h ; '%' + mov dx, [bp+@@arg_6] + mov ax, [bp+@@arg_4] + mov [bp+@@var_50], dx + mov [bp+@@var_52], ax + mov [bp+@@var_4A], 0 + mov [bp+@@var_4C], 0 + mov [bp+@@var_4E], 0 + mov [bp+@@var_48], 0 + jmp short xx_1132A + +xx_11375: + or [bp+@@var_52], 2 + mov ax, 0FFFFh + push ax + push ss + lea ax, [bp+@@var_152] + push ax + lea ax, [bp+@@var_56] + push ax + call xx_10FBB + add sp, 8 + or ax, ax + jz short xx_11395 + jmp xx_11500 + +xx_11395: + cmp byte ptr ds:__8086, 3 + jnb short xx_1139F + jmp xx_1147F + +xx_1139F: + mov cx, [bp+@@var_8E] + sub cx, 30h ; '0' + mov es, [bp+@@var_8A] + mov bx, cx + mov ax, [bp+@@var_C6] + mov es:[bx], ax + mov ax, [bp+@@var_C2] + mov es:[bx+2], ax + mov ax, [bp+@@var_BE] + mov es:[bx+4], ax + mov ax, [bp+@@var_BA] + mov es:[bx+6], ax + mov dx, [bp+@@var_B4] + mov ax, [bp+@@var_B6] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + mov dx, [bp+@@var_B0] + mov ax, [bp+@@var_B2] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + mov dx, [bp+@@var_9C] + mov ax, [bp+@@var_9E] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + mov dx, [bp+@@var_8C] + mov ax, [bp+@@var_8E] + mov es:[bx+16h], dx + mov es:[bx+14h], ax + mov dx, [bp+@@var_AC] + mov ax, [bp+@@var_AE] + mov es:[bx+1Ah], dx + mov es:[bx+18h], ax + mov dx, [bp+@@var_A8] + mov ax, [bp+@@var_AA] + mov es:[bx+1Eh], dx + mov es:[bx+1Ch], ax + mov dx, [bp+@@var_A4] + mov ax, [bp+@@var_A6] + mov es:[bx+22h], dx + mov es:[bx+20h], ax + mov dx, [bp+@@var_A0] + mov ax, [bp+@@var_A2] + mov es:[bx+26h], dx + mov es:[bx+24h], ax + mov dx, [bp+@@var_90] + mov ax, [bp+@@var_92] + mov es:[bx+2Ah], dx + mov es:[bx+28h], ax + mov ax, [bp+@@var_9A] + mov es:[bx+2Ch], ax + mov ax, [bp+@@var_96] + mov es:[bx+2Eh], ax + mov ss, [bp+@@var_8A] + mov sp, bx + pop gs + pop fs + pop es + pop ds + popad + popfd + retf + jmp xx_11505 + +xx_1147F: + mov cx, [bp+@@var_8E] + sub cx, 1Ah + mov es, [bp+@@var_8A] + mov bx, cx + mov ax, [bp+@@var_BE] + mov es:[bx], ax + mov ax, [bp+@@var_BA] + mov es:[bx+2], ax + mov ax, [bp+@@var_B6] + mov es:[bx+4], ax + mov ax, [bp+@@var_B2] + mov es:[bx+6], ax + mov ax, [bp+@@var_9E] + mov es:[bx+8], ax + mov ax, [bp+@@var_8E] + mov es:[bx+0Ah], ax + mov ax, [bp+@@var_AE] + mov es:[bx+0Ch], ax + mov ax, [bp+@@var_AA] + mov es:[bx+0Eh], ax + mov ax, [bp+@@var_A6] + mov es:[bx+10h], ax + mov ax, [bp+@@var_A2] + mov es:[bx+12h], ax + mov ax, [bp+@@var_92] + mov es:[bx+14h], ax + mov ax, [bp+@@var_9A] + mov es:[bx+16h], ax + mov ax, [bp+@@var_96] + mov es:[bx+18h], ax + mov ss, [bp+@@var_8A] + mov sp, bx + pop es + pop ds + popa + popf + retf + jmp short xx_11505 + +xx_11500: + nopcall ___call_terminate + +xx_11505: + mov sp, bp + pop es + pop ds + pop di + pop si + pop bp + pop bx + pop bx + pop dx + pop cx + pop ax + retf +_RaiseException endp + +xx_11512 db 4 dup(0) + dd xx_11574 + db 10h dup(0) +xx_1152A db 4 dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0 + dd xx_11512 + db 2 dup(0), 4, 0 + + +xx_1153C proc near + +@@var_1E = word ptr -1Eh +@@var_12 = word ptr -12h +@@arg_0 = word ptr 4 +@@arg_2 = word ptr 6 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg xx_1152A + mov bx, offset xx_1152A + nopcall ___InitExceptBlocks + mov [bp+@@var_12], 6 + mov ax, 1 + push ax + push [bp+@@arg_8] + push [bp+@@arg_6] + push [bp+@@arg_4] + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_108AD + add sp, 0Ch + mov [bp+@@var_12], 0 + jmp short xx_1157E + +xx_11574: + nopcall ___call_terminate + nopcall @_CatchCleanup$qv ; _CatchCleanup(void) + +xx_1157E: + push [bp+@@var_1E] + nopcall ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +xx_1153C endp + + + +xx_1158C proc near + +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+@@arg_0] + cmp byte ptr es:[bx+38h], 0 + jz short xx_11607 + les bx, [bp+@@arg_0] + test byte ptr es:[bx+16h], 2 + jz short xx_115FF + nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@arg_0] + les bx, es:[bx+4] + mov word ptr [bp+@@var_4+2], es + mov word ptr [bp+@@var_4], bx + push word ptr es:[bx+22h] + les bx, [bp+@@var_4] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + mov ax, word ptr [bp+@@arg_0] + add ax, 3Ah ; ':' + push word ptr [bp+@@arg_0+2] + push ax + call xx_1153C + add sp, 0Ah + nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, word ptr [bp+@@var_8+2] + mov cx, word ptr [bp+@@var_8] + mov es, dx + xchg ax, bx + mov es:[bx+2], ax + mov es:[bx], cx + +xx_115FF: + les bx, [bp+@@arg_0] + mov byte ptr es:[bx+38h], 0 + +xx_11607: + les bx, [bp+@@arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short xx_1165E + les bx, [bp+@@arg_0] + mov dx, es:[bx+34h] + mov ax, es:[bx+32h] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + test byte ptr es:[bx+2], 2 + jz short xx_11656 + les bx, [bp+@@var_8] + test byte ptr es:[bx+8], 2 + jz short xx_11656 + les bx, [bp+@@var_8] + push word ptr es:[bx+22h] + les bx, [bp+@@var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push ss + les bx, [bp+@@arg_0] + push word ptr es:[bx+36h] + call xx_1153C + add sp, 0Ah + +xx_11656: + les bx, [bp+@@arg_0] + mov byte ptr es:[bx+39h], 0 + +xx_1165E: + pop di + pop si + mov sp, bp + pop bp + retn +xx_1158C endp + + + +; _CatchCleanup(void) + public @_CatchCleanup$qv +@_CatchCleanup$qv proc far + +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 6 +@@arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+@@var_4] + mov ax, es:[bx+24h] + mov [bp+@@var_6], ax + mov bx, [bp+@@var_6] + les ax, ss:[bx+@@arg_0] + mov bx, [bp+@@var_6] + add ax, ss:[bx+@@arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+@@var_6] + mov ss:[bx+@@arg_6], ax + push word ptr [bp+@@var_4+2] + push word ptr [bp+@@var_4] + call xx_1158C + pop cx + pop cx + push ds + les bx, [bp+@@var_4] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+@@var_4+2] + push word ptr [bp+@@var_4] + les bx, [bp+@@var_4] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + pop di + pop si + mov sp, bp + pop bp + retf +@_CatchCleanup$qv endp + + + +xx_116E1 proc near + +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 4 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 0Ch + push si + push di + +xx_116E9: + les bx, [bp+@@arg_0] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + mov ax, word ptr [bp+@@var_4] + or ax, word ptr [bp+@@var_4+2] + jnz short xx_11706 + xor ax, ax + jmp xx_117A7 + +xx_11706: + mov bx, [bp+@@arg_A] + mov dx, ss:[bx+2] + mov ax, ss:[bx] + les bx, [bp+@@arg_0] + add ax, es:[bx+4] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + cmp [bp+@@arg_4], 0 + jz short xx_11732 + les bx, [bp+@@var_8] + mov ax, es:[bx] + mov dx, word ptr [bp+@@var_8+2] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + +xx_11732: + push [bp+@@arg_8] + push [bp+@@arg_6] + push word ptr [bp+@@var_4+2] + push word ptr [bp+@@var_4] + call xx_10061 + add sp, 8 + or ax, ax + jnz short xx_1178B + les bx, [bp+@@var_4] + test byte ptr es:[bx+2], 2 + jz short xx_117A0 + les bx, [bp+@@var_4] + mov dx, word ptr [bp+@@var_4+2] + mov ax, word ptr [bp+@@var_4] + add ax, es:[bx+0Ah] + mov [bp+@@var_A], dx + mov [bp+@@var_C], ax + mov ax, [bp+@@var_C] + or ax, [bp+@@var_A] + jz short xx_117A0 + lea ax, [bp+@@var_8] + push ax + push [bp+@@arg_8] + push [bp+@@arg_6] + xor ax, ax + push ax + push [bp+@@var_A] + push [bp+@@var_C] + call xx_116E1 + add sp, 0Ch + or ax, ax + jz short xx_117A0 + +xx_1178B: + mov bx, [bp+@@arg_A] + mov dx, word ptr [bp+@@var_8+2] + mov ax, word ptr [bp+@@var_8] + mov ss:[bx+2], dx + mov ss:[bx], ax + mov ax, 1 + jmp short xx_117A7 + +xx_117A0: + add word ptr [bp+@@arg_0], 8 + jmp xx_116E9 + +xx_117A7: + pop di + pop si + mov sp, bp + pop bp + retn +xx_116E1 endp + + + +xx_117AD proc far + +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = dword ptr 0Ah +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, [bp+@@arg_0] + or ax, [bp+@@arg_2] + jz short xx_1181E + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ah] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + lea ax, [bp+@@arg_0] + push ax + push [bp+@@arg_A] + push [bp+@@arg_8] + xor ax, ax + push ax + push [bp+@@var_2] + push [bp+@@var_4] + call xx_116E1 + add sp, 0Ch + or ax, ax + jnz short xx_1181E + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ch] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + lea ax, [bp+@@arg_0] + push ax + push [bp+@@arg_A] + push [bp+@@arg_8] + mov ax, 1 + push ax + push [bp+@@var_2] + push [bp+@@var_4] + call xx_116E1 + add sp, 0Ch + or ax, ax + jz short xx_11826 + +xx_1181E: + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + jmp short xx_1182A + +xx_11826: + xor dx, dx + xor ax, ax + +xx_1182A: + pop di + pop si + mov sp, bp + pop bp + retf +xx_117AD endp + + + +; int __fastcall xx_11830(int, int, int, __int32, int, __int32, __int32, int) +xx_11830 proc near + +@@var_18 = word ptr -18h +@@var_16 = word ptr -16h +@@var_14 = word ptr -14h +@@var_12 = word ptr -12h +@@var_10 = word ptr -10h +n = word ptr -0Eh +@@var_A = word ptr -0Ah +@@var_8 = dword ptr -8 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 4 +@@arg_6 = dword ptr 0Ah +@@arg_A = word ptr 0Eh +@@arg_E = word ptr 12h + + push bp + mov bp, sp + sub sp, 18h + push si + push di + les bx, dword ptr [bp+@@arg_0] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + les bx, [bp+@@arg_6] + mov es:[bx+34h], dx + mov es:[bx+32h], ax + mov ax, [bp+@@var_4] + or ax, [bp+@@var_2] + jnz short xx_1185F + jmp xx_11AD0 + +xx_1185F: + les bx, dword ptr [bp+@@arg_0] + test byte ptr es:[bx+8], 80h + jz short xx_1186C + jmp xx_11AD0 + +xx_1186C: + les bx, dword ptr [bp+@@arg_0] + mov ax, es:[bx+8] + and ax, 1 + neg ax + sbb ax, ax + inc ax + mov [bp+@@var_14], ax + mov dx, word ptr [bp+@@arg_6+2] + mov ax, word ptr [bp+@@arg_6] + add ax, 3Ah ; ':' + mov [bp+n+2], dx + mov [bp+n], ax + les bx, [bp+@@arg_6] + mov byte ptr es:[bx+39h], 1 + les bx, dword ptr [bp+@@arg_A] + mov ax, es:[bx] + add ax, [bp+@@arg_E] + les bx, [bp+@@arg_6] + mov es:[bx+36h], ax + mov dx, [bp+@@var_2] + mov ax, [bp+@@var_4] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + mov ax, es:[bx] + mov [bp+@@var_A], ax + les bx, [bp+@@var_8] + mov cx, es:[bx+2] + mov dx, cx + test cl, 30h + jz short xx_118E0 + les bx, [bp+@@var_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + mov dx, es:[bx+2] + +xx_118E0: + test cl, 10h + jz short xx_11908 + les bx, [bp+@@arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short xx_11908 + push [bp+@@var_A] + xor ax, ax + push ax ; n + push ss ; c + les bx, [bp+@@arg_6] + push word ptr es:[bx+36h] ; s + nopcall _memset + add sp, 8 + jmp xx_11A33 + +xx_11908: + test dl, 1 + jnz short xx_11910 + jmp xx_119B4 + +xx_11910: + test cl, 30h + jnz short xx_11918 + jmp xx_119B4 + +xx_11918: + test cl, 20h + jz short xx_1191F + jmp short xx_11942 + +xx_1191F: + les bx, dword ptr [bp+n] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+n+2], dx + mov [bp+n], ax + les bx, [bp+@@arg_6] + test byte ptr es:[bx+15h], 10h + jz short xx_11949 + mov ax, [bp+n] + mov [bp+n+2], ds + mov [bp+n], ax + +xx_11942: + mov [bp+@@var_14], 1 + jmp short $+2 + +xx_11949: + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + les bx, [bp+@@arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + call xx_10061 + add sp, 8 + or ax, ax + jnz short xx_119AA + mov dx, [bp+n+2] + mov ax, [bp+n] + mov [bp+@@var_16], dx + mov [bp+@@var_18], ax + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + les bx, [bp+@@arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push [bp+n+2] + push [bp+n] + call xx_117AD + add sp, 0Ch + mov [bp+n+2], dx + mov [bp+n], ax + mov dx, [bp+n+2] + mov ax, [bp+n] + cmp dx, [bp+@@var_16] + jnz short xx_119A5 + cmp ax, [bp+@@var_18] + jz short xx_119AA + +xx_119A5: + mov [bp+@@var_14], 1 + +xx_119AA: + push [bp+@@var_A] + push ss + lea ax, [bp+n] + jmp xx_11A7E + +xx_119B4: + les bx, [bp+@@arg_6] + test byte ptr es:[bx+14h], 1 + jz short xx_11A3A + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + les bx, [bp+@@arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + call xx_10061 + add sp, 8 + or ax, ax + jnz short xx_11A03 + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + les bx, [bp+@@arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push [bp+n+2] + push [bp+n] + call xx_117AD + add sp, 0Ch + mov [bp+n+2], dx + mov [bp+n], ax + mov [bp+@@var_14], 1 + +xx_11A03: + les bx, [bp+@@var_8] + test byte ptr es:[bx+8], 1 + jz short xx_11A81 + les bx, dword ptr [bp+@@arg_0] + push word ptr es:[bx+0Eh] + les bx, dword ptr [bp+@@arg_0] + push word ptr es:[bx+0Ch] + push word ptr es:[bx+0Ah] + push [bp+n+2] + push [bp+n] + push ss + les bx, [bp+@@arg_6] + push word ptr es:[bx+36h] + call xx_1055F + add sp, 0Eh + +xx_11A33: + mov [bp+@@var_14], 1 + jmp short xx_11A9A + +xx_11A3A: + test cl, 20h + jz short xx_11A59 + push [bp+@@var_A] + push ss + lea ax, [bp+n] + push ax ; n + push ss ; src + les bx, [bp+@@arg_6] + push word ptr es:[bx+36h] ; dest + nopcall _memcpy + add sp, 0Ah + jmp short xx_11A33 + +xx_11A59: + test cl, 10h + jz short xx_11A81 + les bx, [bp+@@arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+@@var_A] + jz short xx_11A81 + les bx, dword ptr [bp+n] + mov ax, es:[bx] + mov [bp+@@var_10], ds + mov [bp+@@var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+@@var_12] + +xx_11A7E: + push ax + jmp short xx_11A8A + +xx_11A81: + push [bp+@@var_A] + push [bp+n+2] + push [bp+n] ; n + +xx_11A8A: + push ss ; src + les bx, [bp+@@arg_6] + push word ptr es:[bx+36h] ; dest + nopcall _memcpy + add sp, 0Ah + +xx_11A9A: + cmp [bp+@@var_14], 0 + jnz short xx_11AD0 + les bx, [bp+@@var_8] + test byte ptr es:[bx+8], 2 + jz short xx_11AC8 + les bx, [bp+@@var_8] + push word ptr es:[bx+22h] + les bx, [bp+@@var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push [bp+n+2] + push [bp+n] + call xx_1153C + add sp, 0Ah + +xx_11AC8: + les bx, [bp+@@arg_6] + mov byte ptr es:[bx+38h], 0 + +xx_11AD0: + pop di + pop si + mov sp, bp + pop bp + retn +xx_11830 endp + + + +xx_11AD6 proc near + +@@var_20 = word ptr -20h +@@var_1E = word ptr -1Eh +@@var_1C = word ptr -1Ch +@@var_1A = dword ptr -1Ah +@@var_16 = dword ptr -16h +@@var_12 = word ptr -12h +@@var_10 = word ptr -10h +@@var_E = word ptr -0Eh +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 4 +@@arg_2 = word ptr 6 +@@arg_4 = word ptr 8 +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh +@@arg_C = word ptr 10h +@@arg_E = word ptr 12h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+@@var_E], 0 + les bx, ss:16h + mov si, [bp+@@arg_0] + mov ax, ss:[si+@@arg_A] + mov es:[bx+6], ax + mov [bp+@@var_C], ax + les bx, ss:16h + mov si, [bp+@@arg_0] + mov ax, ss:[si+@@arg_C] + mov es:[bx+8], ax + mov bx, [bp+@@arg_0] + mov dx, ss:[bx+@@arg_4] + mov ax, ss:[bx+@@arg_2] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + mov ax, [bp+@@arg_0] + sub ax, es:[bx+4] + mov [bp+@@var_A], ax + mov bx, [bp+@@arg_0] + mov ax, ss:[bx+@@arg_8] + jmp xx_11C7B + +xx_11B2E: + mov ax, [bp+@@var_6] + mov [bp+@@var_12], ax + les bx, [bp+@@var_4] + add bx, [bp+@@var_12] + mov ax, es:[bx] + mov [bp+@@var_8], ax + add [bp+@@var_12], 2 + les bx, [bp+@@var_4] + add bx, [bp+@@var_12] + mov ax, es:[bx] + mov [bp+@@var_10], ax + add [bp+@@var_12], 2 + mov bx, [bp+@@arg_0] + mov ax, [bp+@@var_8] + mov ss:[bx+@@arg_8], ax + mov bx, [bp+@@var_10] + cmp bx, 5 + jbe short xx_11B69 + jmp xx_11C78 + +xx_11B69: + add bx, bx + jmp cs:xx_11C95[bx] + +xx_11B70: + les bx, [bp+@@var_4] + add bx, [bp+@@var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr xx_131A0+2, dx + mov word ptr xx_131A0, ax + mov bx, [bp+@@arg_0] + mov ss:[bx+@@arg_E], 1 + push ds + pop es + assume es:DGROUP + push ds + mov ds, [bp+@@var_C] + push bp + mov bp, [bp+@@var_A] + call es:xx_131A0 + pop bp + pop ds + mov bx, [bp+@@arg_0] + mov ss:[bx+@@arg_E], 0 + jmp xx_11C78 + +xx_11BAB: + add [bp+@@var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short xx_11BDA + +xx_11BBA: + les bx, [bp+@@var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+@@arg_0] + jnz short xx_11BD4 + les bx, [bp+@@var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+@@var_6] + jnz short xx_11BD4 + jmp short xx_11BF4 + +xx_11BD4: + mov dx, word ptr [bp+@@var_16+2] + mov ax, word ptr [bp+@@var_16] + +xx_11BDA: + mov word ptr [bp+@@var_1A+2], dx + mov word ptr [bp+@@var_1A], ax + les bx, [bp+@@var_1A] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_16+2], dx + mov word ptr [bp+@@var_16], ax + or ax, dx + jnz short xx_11BBA + +xx_11BF4: + les bx, [bp+@@var_16] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+@@var_1A] + mov es:[bx+2], dx + mov es:[bx], ax + push word ptr [bp+@@var_16+2] + push word ptr [bp+@@var_16] + call xx_1158C + pop cx + pop cx + push ds + les bx, [bp+@@var_16] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+@@var_16+2] + push word ptr [bp+@@var_16] + les bx, [bp+@@var_16] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + jmp short xx_11C78 + +xx_11C2D: + les bx, [bp+@@var_4] + add bx, [bp+@@var_12] + mov ax, es:[bx] + mov [bp+@@var_1C], ax + add [bp+@@var_12], 2 + les bx, [bp+@@var_4] + add bx, [bp+@@var_12] + mov ax, es:[bx] + mov [bp+@@var_1E], ds + mov [bp+@@var_20], ax + mov ax, word ptr [bp+@@var_4+2] + mov dx, [bp+@@var_20] + mov [bp+@@var_1E], ax + mov [bp+@@var_20], dx + push [bp+@@var_A] + push [bp+@@arg_0] + mov ax, [bp+@@var_1C] + add ax, [bp+@@var_E] + cwd + push dx + push ax + push [bp+@@var_1E] + push [bp+@@var_20] + call xx_126AC + add sp, 0Ch + mov [bp+@@var_E], ax + jmp short $+2 + +xx_11C78: + mov ax, [bp+@@var_8] + +xx_11C7B: + mov [bp+@@var_6], ax + cmp [bp+@@var_6], 0 + jz short xx_11C8F + mov ax, [bp+@@var_6] + cmp ax, [bp+@@arg_2] + jz short xx_11C8F + jmp xx_11B2E + +xx_11C8F: + pop di + pop si + mov sp, bp + pop bp + retn +xx_11AD6 endp + +xx_11C95 dw offset xx_11B70 + dw offset xx_11C78 + dw offset xx_11C78 + dw offset xx_11C78 + dw offset xx_11BAB + dw offset xx_11C2D + + + public __Local_unwind +__Local_unwind proc far + +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+@@var_2], ax + push [bp+@@arg_0] + push [bp+@@var_2] + call xx_11AD6 + pop cx + pop cx + pop di + pop si + mov sp, bp + pop bp + retf +__Local_unwind endp + + + + public __Return_unwind +__Return_unwind proc far + +@@var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+@@var_2], ax + xor ax, ax + push ax + push [bp+@@var_2] + call xx_11AD6 + pop cx + pop cx + mov bx, [bp+@@var_2] + mov ax, ss:[bx] + mov ss:14h, ax + pop di + pop si + mov sp, bp + pop bp + retf +__Return_unwind endp + + + +xx_11CEB proc near + +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 4 +@@arg_2 = word ptr 6 +@@arg_4 = dword ptr 8 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + add ax, 4 + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + jmp short xx_11D59 + +xx_11D04: + les bx, [bp+@@var_4] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov [bp+@@var_6], dx + mov [bp+@@var_8], ax + mov ax, [bp+@@var_8] + or ax, [bp+@@var_6] + jz short xx_11D4D + xor ax, ax + push ax + les bx, [bp+@@arg_4] + push word ptr es:[bx+0Ch] + push [bp+@@var_6] + push [bp+@@var_8] + les bx, [bp+@@arg_4] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+@@arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call xx_1045A + add sp, 10h + or ax, ax + jz short xx_11D55 + +xx_11D4D: + mov dx, word ptr [bp+@@var_4+2] + mov ax, word ptr [bp+@@var_4] + jmp short xx_11D69 + +xx_11D55: + add word ptr [bp+@@var_4], 10h + +xx_11D59: + les bx, [bp+@@var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short xx_11D04 + xor dx, dx + xor ax, ax + +xx_11D69: + pop di + pop si + mov sp, bp + pop bp + retn +xx_11CEB endp + + db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h + + + public __ExceptionHandler +__ExceptionHandler proc far + +@@var_38 = word ptr -38h +@@var_36 = word ptr -36h +@@var_34 = word ptr -34h +@@var_32 = word ptr -32h +@@var_30 = word ptr -30h +@@var_2E = word ptr -2Eh +@@var_2C = word ptr -2Ch +@@var_2A = word ptr -2Ah +@@var_28 = word ptr -28h +@@var_26 = dword ptr -26h +@@var_20 = dword ptr -20h +@@var_1C = word ptr -1Ch +@@var_1A = word ptr -1Ah +@@var_18 = word ptr -18h +@@var_16 = word ptr -16h +@@var_14 = word ptr -14h +@@var_12 = word ptr -12h +@@var_10 = dword ptr -10h +@@var_C = dword ptr -0Ch +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_6 = word ptr 0Ch +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_E = word ptr 14h +@@arg_10 = word ptr 16h +@@arg_12 = word ptr 18h +@@arg_14 = word ptr 1Ah + + push bp + mov bp, sp + sub sp, 38h + push si + push di + mov ax, [bp+@@arg_0] + mov [bp+@@var_2], ax + mov ax, [bp+@@arg_4] + mov [bp+@@var_4], ax + mov dx, [bp+@@arg_8] + mov ax, [bp+@@arg_6] + mov [bp+@@var_6], dx + mov [bp+@@var_8], ax + mov bx, [bp+@@var_2] + mov dx, ss:[bx+@@arg_14] + mov ax, ss:[bx+@@arg_12] + mov word ptr [bp+@@var_C+2], dx + mov word ptr [bp+@@var_C], ax + mov bx, [bp+@@var_4] + mov dx, ss:[bx+@@arg_2] + mov ax, ss:[bx+@@arg_0] + mov word ptr [bp+@@var_10+2], dx + mov word ptr [bp+@@var_10], ax + les bx, [bp+@@var_10] + mov ax, [bp+@@var_4] + sub ax, es:[bx+4] + mov [bp+@@var_16], ax + mov bx, [bp+@@var_4] + mov ax, ss:[bx+@@arg_4] + mov [bp+@@var_18], ax + les bx, ss:16h + mov si, [bp+@@var_4] + mov ax, ss:[si+@@arg_8] + mov es:[bx+6], ax + mov [bp+@@var_1A], ax + les bx, ss:16h + mov si, [bp+@@var_4] + mov ax, ss:[si+@@arg_A] + mov es:[bx+8], ax + mov [bp+@@var_1C], ax + mov bx, [bp+@@var_2] + test byte ptr ss:[bx+4], 6 + jnz short xx_11E03 + jmp xx_11EAB + +xx_11E03: + xor ax, ax + push ax + push [bp+@@var_4] + call xx_11AD6 + pop cx + pop cx + mov bx, [bp+@@var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short xx_11E1C + jmp xx_120DE + +xx_11E1C: + cmp word ptr ss:[bx], 0FACEh + jz short xx_11E26 + jmp xx_120DE + +xx_11E26: + les bx, [bp+@@var_10] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_20+2], dx + mov word ptr [bp+@@var_20], ax + mov ax, word ptr [bp+@@var_20] + or ax, word ptr [bp+@@var_20+2] + jnz short xx_11E41 + jmp xx_120DE + +xx_11E41: + jmp short xx_11E7F + +xx_11E43: + mov ax, 1 + push ax + les bx, [bp+@@var_C] + push word ptr es:[bx+0Ch] + les bx, [bp+@@var_20] + push word ptr es:[bx+2] + push word ptr es:[bx] + les bx, [bp+@@var_C] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+@@var_C] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call xx_1045A + add sp, 10h + or ax, ax + jz short xx_11E7B + jmp xx_120DE + +xx_11E7B: + add word ptr [bp+@@var_20], 4 + +xx_11E7F: + les bx, [bp+@@var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short xx_11E43 + mov ax, ss:14h + mov [bp-22h], ax + mov bx, [bp+@@var_4] + mov ax, ss:[bx] + mov ss:14h, ax + nopcall ___call_unexpected + mov ax, [bp-22h] + mov ss:14h, ax + jmp xx_120DE + +xx_11EAB: + mov bx, [bp+@@var_4] + mov ax, ss:[bx+@@arg_6] + jmp xx_120D2 + +xx_11EB5: + mov ax, [bp+@@var_12] + mov word ptr [bp+@@var_20], ax + les bx, [bp+@@var_10] + add bx, word ptr [bp+@@var_20] + mov ax, es:[bx] + mov [bp+@@var_14], ax + add word ptr [bp+@@var_20], 2 + les bx, [bp+@@var_10] + add bx, word ptr [bp+@@var_20] + mov ax, es:[bx] + mov word ptr [bp+@@var_20+2], ax + add word ptr [bp+@@var_20], 2 + mov bx, word ptr [bp+@@var_20+2] + cmp bx, 5 + jbe short xx_11EE6 + jmp xx_120CF + +xx_11EE6: + add bx, bx + jmp cs:xx_120E7[bx] + +xx_11EED: + mov bx, [bp+@@var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short xx_11EFB + jmp xx_120CF + +xx_11EFB: + cmp word ptr ss:[bx], 0FACEh + jz short xx_11F05 + jmp xx_120CF + +xx_11F05: + les bx, [bp+@@var_10] + add bx, word ptr [bp+@@var_20] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_26], dx + mov [bp+@@var_28], ax + add word ptr [bp+@@var_20], 4 + push word ptr [bp+@@var_C+2] + push word ptr [bp+@@var_C] + push word ptr [bp+@@var_26] + push [bp+@@var_28] + call xx_11CEB + add sp, 8 + mov [bp-22h], dx + mov word ptr [bp+@@var_26+2], ax + mov ax, word ptr [bp+@@var_26+2] + or ax, [bp-22h] + jnz short xx_11F3F + jmp xx_120CF + +xx_11F3F: + les bx, [bp+@@var_C] + mov ax, [bp+@@var_4] + mov es:[bx+24h], ax + les bx, [bp+@@var_C] + mov dx, [bp-22h] + mov ax, word ptr [bp+@@var_26+2] + mov es:[bx+28h], dx + mov es:[bx+26h], ax + les bx, [bp+@@var_C] + mov ax, word ptr [bp+@@var_20] + mov es:[bx+2Ah], ax + mov ax, [bp+@@var_12] + mov [bp+@@var_30], ax + mov ax, word ptr [bp+@@var_20] + mov [bp+@@var_2E], ax + les bx, [bp+@@var_26+2] + +xx_11F73: + mov dx, es:[bx+2] ; int + mov ax, es:[bx] + mov [bp+@@var_2A], dx + mov [bp+@@var_2C], ax + push [bp+@@var_2] + push [bp+@@var_4] + call __Global_unwind + pop cx + pop cx + push [bp+@@var_30] + push [bp+@@var_4] + call xx_11AD6 + pop cx + pop cx + mov bx, [bp+@@var_4] + mov ax, [bp+@@var_2E] ; int + mov ss:[bx+@@arg_6], ax + cmp word ptr [bp+@@var_20+2], 3 + jnz short xx_11FC5 + push [bp+@@var_16] + push word ptr [bp+@@var_26] ; __int32 + push [bp+@@var_28] ; int + push word ptr [bp+@@var_C+2] + push word ptr [bp+@@var_C] ; __int32 + push [bp+@@var_4] + push word ptr [bp-22h] ; __int32 + push word ptr [bp+@@var_26+2] ; int + call xx_11830 + add sp, 10h + +xx_11FC5: + mov dx, [bp+@@var_2A] + mov ax, [bp+@@var_2C] + mov si, [bp+@@var_1C] + mov ds, [bp+@@var_1A] + mov bx, [bp+@@var_18] + mov cx, [bp+@@var_16] + call ___JumpToCatch__ + jmp xx_120CF + +xx_11FDE: + mov bx, [bp+@@var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short xx_11FF3 + cmp word ptr ss:[bx], 0FACEh + jnz short xx_11FF3 + jmp xx_120CF + +xx_11FF3: + mov ax, [bp+@@var_2] + mov [bp+@@var_36], ax + mov dx, [bp+@@var_6] + mov ax, [bp+@@var_8] + mov [bp+@@var_32], dx + mov [bp+@@var_34], ax + mov bx, [bp+@@var_2] + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov bx, [bp+@@var_4] + mov ss:[bx+@@arg_10], dx + mov ss:[bx+@@arg_E], ax + lea ax, [bp+@@var_36] + mov bx, [bp+@@var_4] + mov ss:[bx+@@arg_12], ax + les bx, [bp+@@var_10] + add bx, word ptr [bp+@@var_20] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr xx_131A4+2, dx + mov word ptr xx_131A4, ax + mov ax, ds + mov es, ax + assume es:DGROUP + push si + mov si, [bp+@@var_1C] + push ds + mov ds, [bp+@@var_1A] + push bp + mov bp, [bp+@@var_16] + call es:xx_131A4 + pop bp + pop ds + pop si + mov [bp+@@var_38], ax + jmp short xx_1208A + +xx_12055: + mov bx, [bp+@@var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short xx_12069 + cmp word ptr ss:[bx], 0FACEh + jnz short xx_12069 + jmp short xx_120CF + +xx_12069: + mov bx, [bp+@@var_2] + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov bx, [bp+@@var_4] + mov ss:[bx+@@arg_10], dx + mov ss:[bx+@@arg_E], ax + les bx, [bp+@@var_10] + assume es:nothing + add bx, word ptr [bp+@@var_20] + mov ax, es:[bx] + mov [bp+@@var_38], ax + +xx_1208A: + cmp [bp+@@var_38], 0 + jge short xx_120A8 + mov bx, [bp+@@var_2] + test byte ptr ss:[bx+4], 1 + jz short xx_120A4 + mov bx, [bp+@@var_4] + mov ax, [bp+@@var_14] + mov ss:[bx+@@arg_6], ax + +xx_120A4: + xor ax, ax + jmp short xx_120E1 + +xx_120A8: + cmp [bp+@@var_38], 0 + jnz short xx_120B0 + jmp short xx_120CF + +xx_120B0: + mov bx, [bp+@@var_4] + mov ss:[bx+@@arg_12], 0 + add word ptr [bp+@@var_20], 4 + mov ax, [bp+@@var_14] + mov [bp+@@var_2E], ax + mov [bp+@@var_30], ax + les bx, [bp+@@var_10] + add bx, word ptr [bp+@@var_20] + jmp xx_11F73 + +xx_120CF: + mov ax, [bp+@@var_14] + +xx_120D2: + mov [bp+@@var_12], ax + cmp [bp+@@var_12], 0 + jz short xx_120DE + jmp xx_11EB5 + +xx_120DE: + mov ax, 1 + +xx_120E1: + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +xx_120E7 dw offset xx_120CF + dw offset xx_11FDE + dw offset xx_12055 + dw offset xx_11EED + dw offset xx_120CF + dw offset xx_120CF +xx_120F3 db 4 dup(0) + dd xx_12186 +xx_120FB db 14h dup(0) + dd xx_12196 + db 10h dup(0) +xx_12123 db 4 dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0 + dd xx_120FB+10h + db 2 dup(0), 4, 0, 6, 0, 3, 0 + dd xx_120F3 + db 6, 0, 4, 0 + + +xx_12141 proc far + +@@var_1E = word ptr -1Eh +@@var_12 = word ptr -12h +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = dword ptr 0Ah +@@arg_8 = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg xx_12123 + mov bx, offset xx_12123 + nopcall ___InitExceptBlocks + mov [bp+@@var_12], 6 + mov [bp+@@var_12], 12h + push [bp+@@arg_8] + les bx, [bp+@@arg_4] + push word ptr es:[bx+22h] + les bx, [bp+@@arg_4] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_108AD + add sp, 0Ch + mov [bp+@@var_12], 6 + jmp short xx_1218F + +xx_12186: + nopcall ___call_terminate + call @_CatchCleanup$qv ; _CatchCleanup(void) + +xx_1218F: + mov [bp+@@var_12], 0 + jmp short xx_1219F + +xx_12196: + nopcall ___call_terminate + call @_CatchCleanup$qv ; _CatchCleanup(void) + +xx_1219F: + push [bp+@@var_1E] + nopcall ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +xx_12141 endp + + + +xx_121AD proc far + +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = dword ptr 0Ah +@@arg_8 = word ptr 0Eh +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h +@@arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+@@arg_C] + jmp short xx_1221C + +xx_121BA: + les bx, [bp+@@arg_4] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + add ax, es:[bx+4] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + cmp [bp+@@arg_E], 0 + jz short xx_121E2 + les bx, [bp+@@var_4] + mov ax, es:[bx] + mov dx, word ptr [bp+@@var_4+2] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + +xx_121E2: + les bx, [bp+@@arg_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + test byte ptr es:[bx+8], 2 + jz short xx_1221C + push [bp+@@arg_10] + xor ax, ax + push ax + xor ax, ax + push ax + push cx + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + push word ptr [bp+@@var_4+2] + push word ptr [bp+@@var_4] + nopcall xx_1222E + add sp, 10h + xor cx, cx + +xx_1221C: + sub word ptr [bp+@@arg_4], 8 + mov ax, word ptr [bp+@@arg_4] + cmp ax, [bp+@@arg_8] + jnb short xx_121BA + pop di + pop si + mov sp, bp + pop bp + retf +xx_121AD endp + + + +xx_1222E proc far + +@@var_2A = word ptr -2Ah +@@var_28 = word ptr -28h +@@var_26 = word ptr -26h +@@var_24 = word ptr -24h +@@var_22 = dword ptr -22h +@@var_1E = word ptr -1Eh +@@var_1C = word ptr -1Ch +@@var_1A = word ptr -1Ah +@@var_18 = dword ptr -18h +@@var_14 = word ptr -14h +@@var_12 = word ptr -12h +@@var_10 = dword ptr -10h +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = dword ptr -8 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = dword ptr 0Ah +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 2Ah + push si + push di + cmp [bp+@@arg_C], 0 + jz short xx_12245 + les bx, [bp+@@arg_4] + mov ax, es:[bx+1Ah] + jmp short xx_1224C + +xx_12245: + les bx, [bp+@@arg_4] + mov ax, es:[bx+1Ch] + +xx_1224C: + mov [bp+@@var_1A], 0 + mov [bp+@@var_1C], ax + mov ax, [bp+@@arg_8] + or ax, [bp+@@arg_A] + jz short xx_1226E + mov dx, [bp+@@arg_A] + mov ax, [bp+@@arg_8] + cmp dx, [bp+@@var_1A] + jb short xx_12287 + jnz short xx_1226E + cmp ax, [bp+@@var_1C] + jb short xx_12287 + +xx_1226E: + push [bp+@@arg_C] + push word ptr [bp+@@arg_4+2] + push word ptr [bp+@@arg_4] + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_12141 + add sp, 0Ah + jmp xx_124F3 + +xx_12287: + mov dx, [bp+@@arg_A] + mov ax, [bp+@@arg_8] + mov [bp+@@var_1A], dx + mov [bp+@@var_1C], ax + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ch] + mov word ptr [bp+@@var_10+2], dx + mov word ptr [bp+@@var_10], ax + mov [bp+@@var_A], dx + mov [bp+@@var_C], ax + cmp [bp+@@arg_C], 0 + jz short xx_12320 + +xx_122B2: + les bx, [bp+@@var_10] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+@@var_1E], dx + mov word ptr [bp+@@var_22+2], ax + mov ax, word ptr [bp+@@var_22+2] + or ax, [bp+@@var_1E] + jz short xx_12320 + les bx, [bp+@@var_22+2] + test byte ptr es:[bx+8], 2 + jz short xx_1231A + les bx, [bp+@@var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+@@var_1A] + jb short xx_12313 + jnz short xx_122E9 + cmp bx, [bp+@@var_1C] + jb short xx_12313 + +xx_122E9: + push [bp+@@arg_E] + mov ax, 1 + push ax + push [bp+@@var_1C] + push [bp+@@var_A] + push [bp+@@var_C] + mov ax, word ptr [bp+@@var_10] + add ax, 8 + push word ptr [bp+@@var_10+2] + push ax + +xx_12303: + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_121AD + add sp, 12h + jmp xx_124F3 + +xx_12313: + sub [bp+@@var_1C], bx + sbb [bp+@@var_1A], 0 + +xx_1231A: + add word ptr [bp+@@var_10], 8 + jmp short xx_122B2 + +xx_12320: + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ah] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + +xx_12339: + les bx, [bp+@@var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+@@var_1E], dx + mov word ptr [bp+@@var_22+2], ax + mov ax, word ptr [bp+@@var_22+2] + or ax, [bp+@@var_1E] + jz short xx_123AF + les bx, [bp+@@var_22+2] + test byte ptr es:[bx+8], 2 + jz short xx_123A9 + les bx, [bp+@@var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+@@var_1A] + jb short xx_123A2 + jnz short xx_12370 + cmp bx, [bp+@@var_1C] + jb short xx_123A2 + +xx_12370: + push [bp+@@arg_E] + xor ax, ax + push ax + push [bp+@@var_1C] + push [bp+@@var_2] + push [bp+@@var_4] + mov ax, word ptr [bp+@@var_8] + add ax, 8 + push word ptr [bp+@@var_8+2] + push ax + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_121AD + add sp, 12h + cmp [bp+@@arg_C], 0 + jnz short xx_1239F + jmp xx_124F3 + +xx_1239F: + jmp xx_124D3 + +xx_123A2: + sub [bp+@@var_1C], bx + sbb [bp+@@var_1A], 0 + +xx_123A9: + add word ptr [bp+@@var_8], 8 + jmp short xx_12339 + +xx_123AF: + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+24h] + mov word ptr [bp+@@var_18+2], dx + mov word ptr [bp+@@var_18], ax + mov [bp+@@var_12], dx + mov [bp+@@var_14], ax + +xx_123C8: + les bx, [bp+@@var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_22+2], dx + mov word ptr [bp+@@var_22], ax + mov [bp+@@var_1E], 1 + les bx, [bp+@@var_22] + test byte ptr es:[bx+3], 4 + jz short xx_12402 + les bx, [bp+@@var_22] + mov ax, es:[bx+0Ah] + mov [bp+@@var_1E], ax + les bx, [bp+@@var_22] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_22+2], dx + mov word ptr [bp+@@var_22], ax + +xx_12402: + les bx, [bp+@@var_22] + mov ax, es:[bx+1Ah] + imul [bp+@@var_1E] + mov bx, ax + xor ax, ax + cmp ax, [bp+@@var_1A] + ja short xx_12426 + jb short xx_1241C + cmp bx, [bp+@@var_1C] + jnb short xx_12426 + +xx_1241C: + sub [bp+@@var_1C], bx + sbb [bp+@@var_1A], 0 + jmp xx_124EC + +xx_12426: + les bx, [bp+@@var_18] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + add ax, es:[bx+4] + mov [bp+@@var_24], dx + mov [bp+@@var_26], ax + les bx, [bp+@@var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+@@var_28], dx + mov [bp+@@var_2A], ax + cmp [bp+@@var_1E], 1 + jbe short xx_12472 + push [bp+@@arg_E] + push [bp+@@var_1A] + push [bp+@@var_1C] + les bx, [bp+@@var_18] + push word ptr es:[bx+2] + push word ptr es:[bx] + push [bp+@@var_24] + push [bp+@@var_26] + nopcall xx_124F9 + add sp, 0Eh + jmp short xx_12492 + +xx_12472: + push [bp+@@arg_E] + mov ax, 1 + push ax + push [bp+@@var_1A] + push [bp+@@var_1C] + push [bp+@@var_28] + push [bp+@@var_2A] + push [bp+@@var_24] + push [bp+@@var_26] + call xx_1222E + add sp, 10h + +xx_12492: + mov [bp+@@var_1A], 0 + mov [bp+@@var_1C], 0 + sub word ptr [bp+@@var_18], 6 + mov ax, word ptr [bp+@@var_18] + cmp ax, [bp+@@var_14] + jb short xx_124AB + jmp xx_12426 + +xx_124AB: + push [bp+@@arg_E] + xor ax, ax + push ax + xor ax, ax + push ax + push [bp+@@var_2] + push [bp+@@var_4] + push word ptr [bp+@@var_8+2] + push word ptr [bp+@@var_8] + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_121AD + add sp, 12h + cmp [bp+@@arg_C], 0 + jz short xx_124F3 + +xx_124D3: + push [bp+@@arg_E] + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+@@var_A] + push [bp+@@var_C] + push word ptr [bp+@@var_10+2] + push word ptr [bp+@@var_10] + jmp xx_12303 + +xx_124EC: + add word ptr [bp+@@var_18], 6 + jmp xx_123C8 + +xx_124F3: + pop di + pop si + mov sp, bp + pop bp + retf +xx_1222E endp + + + +xx_124F9 proc far + +@@var_E = word ptr -0Eh +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_6 = word ptr 0Ch +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov dx, [bp+@@arg_6] + mov ax, [bp+@@arg_4] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + mov ax, es:[bx+0Ah] + mov [bp+@@var_6], ax + les bx, [bp+@@var_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + mov ax, es:[bx+1Ah] + mov [bp+@@var_8], 0 + mov [bp+@@var_A], ax + mov ax, [bp+@@arg_8] + or ax, [bp+@@arg_A] + jnz short xx_12553 + mov bx, [bp+@@var_6] + xor cx, cx + mov dx, [bp+@@var_8] + mov ax, [bp+@@var_A] + call N_LXMUL@ + mov [bp+@@arg_A], dx + mov [bp+@@arg_8], ax + +xx_12553: + push [bp+@@var_8] + push [bp+@@var_A] + push [bp+@@arg_A] + push [bp+@@arg_8] + call N_LUDIV@ + mov [bp+@@var_C], dx + mov [bp+@@var_E], ax + mov cx, [bp+@@var_C] + mov bx, [bp+@@var_E] + mov dx, [bp+@@var_8] + mov ax, [bp+@@var_A] + call N_LXMUL@ + sub [bp+@@arg_8], ax + sbb [bp+@@arg_A], dx + les bx, [bp+@@var_4] + mov bx, es:[bx] + xor cx, cx + mov dx, [bp+@@var_C] + mov ax, [bp+@@var_E] + call N_LXMUL@ + mov dx, [bp+@@arg_2] + add ax, [bp+@@arg_0] + mov [bp+@@arg_2], dx + mov [bp+@@arg_0], ax + mov ax, [bp+@@arg_8] + or ax, [bp+@@arg_A] + jz short xx_125E3 + push [bp+@@arg_C] + mov ax, 1 + push ax + push [bp+@@arg_A] + push [bp+@@arg_8] + jmp short xx_125D0 + +xx_125B1: + les bx, [bp+@@var_4] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + sub ax, es:[bx] + mov [bp+@@arg_2], dx + mov [bp+@@arg_0], ax + push [bp+@@arg_C] + mov ax, 1 + push ax + push [bp+@@var_8] + push [bp+@@var_A] + +xx_125D0: + push word ptr [bp+@@var_4+2] + push word ptr [bp+@@var_4] + push [bp+@@arg_2] + push [bp+@@arg_0] + call xx_1222E + add sp, 10h + +xx_125E3: + mov ax, [bp+@@var_C] + mov dx, [bp+@@var_E] + sub [bp+@@var_E], 1 + sbb [bp+@@var_C], 0 + or dx, ax + jnz short xx_125B1 + pop di + pop si + mov sp, bp + pop bp + retf +xx_124F9 endp + + + +xx_125FB proc far + +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+@@arg_4] + mov bx, cx + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + mov ax, es:[bx+8] + and ax, 50h + cmp ax, 50h ; 'P' + jnz short xx_126A0 + les bx, [bp+@@var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short xx_126A0 + les bx, [bp+@@var_4] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + add ax, es:[bx+6] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_4] + test byte ptr es:[bx+9], 10h + jz short xx_1265A + les bx, [bp+@@var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_8+2], dx + jmp short xx_12663 + +xx_1265A: + les bx, [bp+@@var_8] + mov ax, es:[bx] + mov word ptr [bp+@@var_8+2], ds + +xx_12663: + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + sub ax, es:[bx-4] + mov [bp+@@arg_2], dx + mov [bp+@@arg_0], ax + les bx, [bp+@@var_8] + mov dx, word ptr [bp+@@var_8+2] + mov ax, word ptr [bp+@@var_8] + sub ax, es:[bx-2] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov bx, cx + mov ss:[bx+2], dx + mov ss:[bx], ax + +xx_126A0: + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +xx_125FB endp + + + +xx_126AC proc near + +@@var_20 = word ptr -20h +@@var_1C = dword ptr -1Ch +@@var_18 = word ptr -18h +@@var_16 = dword ptr -16h +@@var_12 = dword ptr -12h +@@var_E = word ptr -0Eh +@@var_C = dword ptr -0Ch +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 4 +@@arg_4 = word ptr 8 +@@arg_6 = word ptr 0Ah +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh +@@arg_16 = word ptr 1Ah +@@arg_18 = word ptr 1Ch + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+@@var_E], 0 + cmp word ptr [bp+@@arg_0], 0FFFFh + jnz short xx_126C2 + jmp xx_12AAF + +xx_126C2: + mov bx, [bp+@@arg_8] + mov dx, ss:[bx+@@arg_18] + mov ax, ss:[bx+@@arg_16] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + mov dx, es:[bx+2] + mov ax, es:[bx] + sub ax, [bp+@@var_4] + sbb dx, [bp+@@var_2] + mov [bp+@@var_6], dx + mov [bp+@@var_8], ax + mov dx, [bp+@@arg_6] + mov ax, [bp+@@arg_4] + sub [bp+@@var_8], ax + sbb [bp+@@var_6], dx + les bx, [bp+@@arg_0] + test byte ptr es:[bx+4], 20h + jz short xx_1271B + les bx, [bp+@@arg_0] + les bx, es:[bx] + les bx, es:[bx+6] + mov ax, es:[bx+1Ah] + mov [bp+@@var_6], 0 + mov [bp+@@var_8], ax + +xx_1271B: + les bx, [bp+@@arg_0] + test byte ptr es:[bx+5], 1 + jz short xx_12732 + les bx, [bp+@@arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp xx_12AB1 + +xx_12732: + cmp [bp+@@var_6], 0 + jg short xx_12764 + jnz short xx_12740 + cmp [bp+@@var_8], 0 + ja short xx_12764 + +xx_12740: + les bx, [bp+@@arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short xx_12752 + jmp xx_12AAF + +xx_12752: + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + mov word ptr [bp+@@var_C+2], dx + mov word ptr [bp+@@var_C], ax + inc [bp+@@var_E] + jmp xx_128C9 + +xx_12764: + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + mov word ptr [bp+@@var_C+2], dx + mov word ptr [bp+@@var_C], ax + +xx_12770: + les bx, [bp+@@var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short xx_12783 + sub word ptr [bp+@@var_C], 0Ah + jmp xx_128C9 + +xx_12783: + les bx, [bp+@@var_C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_16+2], dx + mov word ptr [bp+@@var_16], ax + mov word ptr [bp+@@var_12+2], dx + mov word ptr [bp+@@var_12], ax + mov [bp+@@var_18], 1 + les bx, [bp+@@var_12] + test byte ptr es:[bx+2], 10h + jnz short xx_127AB + jmp xx_12875 + +xx_127AB: + les bx, [bp+@@var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_16+2], dx + mov word ptr [bp+@@var_16], ax + mov word ptr [bp+@@var_12+2], dx + mov word ptr [bp+@@var_12], ax + les bx, [bp+@@var_12] + test byte ptr es:[bx+2], 2 + jnz short xx_127CF + jmp xx_12875 + +xx_127CF: + les bx, [bp+@@var_12] + test byte ptr es:[bx+8], 20h + jnz short xx_127DC + jmp xx_12875 + +xx_127DC: + les bx, [bp+@@var_C] + test byte ptr es:[bx+4], 8 + jnz short xx_127E9 + jmp xx_12875 + +xx_127E9: + les bx, [bp+@@var_C] + test byte ptr es:[bx+4], 4 + jz short xx_12802 + les bx, [bp+@@var_C] + mov ax, es:[bx+6] + add ax, [bp+@@arg_A] + mov word ptr [bp+@@var_1C+2], ss + jmp short xx_12810 + +xx_12802: + les bx, [bp+@@var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_1C+2], dx + +xx_12810: + mov word ptr [bp+@@var_1C], ax + mov dx, word ptr [bp+@@var_1C+2] + mov ax, word ptr [bp+@@var_1C] + mov [bp+@@var_20+2], dx + mov [bp+@@var_20], ax + les bx, [bp+@@var_C] + test byte ptr es:[bx+4], 80h + jz short xx_12838 + les bx, dword ptr [bp+@@var_20] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_1C+2], dx + jmp short xx_12841 + +xx_12838: + les bx, dword ptr [bp+@@var_20] + mov ax, es:[bx] + mov word ptr [bp+@@var_1C+2], ds + +xx_12841: + mov word ptr [bp+@@var_1C], ax + les bx, [bp+@@var_C] + test byte ptr es:[bx+4], 40h + jz short xx_12852 + add word ptr [bp+@@var_1C], 4 + +xx_12852: + lea ax, [bp+@@var_12] + push ax + push word ptr [bp+@@var_1C+2] + push word ptr [bp+@@var_1C] + call xx_125FB + add sp, 6 + mov word ptr [bp+@@var_1C+2], dx + mov word ptr [bp+@@var_1C], ax + mov dx, word ptr [bp+@@var_12+2] + mov ax, word ptr [bp+@@var_12] + mov word ptr [bp+@@var_16+2], dx + mov word ptr [bp+@@var_16], ax + +xx_12875: + les bx, [bp+@@var_12] + test byte ptr es:[bx+3], 4 + jz short xx_1289A + les bx, [bp+@@var_16] + mov ax, es:[bx+0Ah] + mov [bp+@@var_18], ax + les bx, [bp+@@var_16] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_16+2], dx + mov word ptr [bp+@@var_16], ax + +xx_1289A: + les bx, [bp+@@var_16] + mov ax, es:[bx+1Ah] + imul [bp+@@var_18] + mov [bp+@@var_18], ax + mov ax, [bp+@@var_18] + xor dx, dx + cmp dx, [bp+@@var_6] + jb short xx_128B8 + jnz short xx_128C9 + cmp ax, [bp+@@var_8] + jnb short xx_128C9 + +xx_128B8: + mov ax, [bp+@@var_18] + sub [bp+@@var_8], ax + sbb [bp+@@var_6], 0 + add word ptr [bp+@@var_C], 0Ah + jmp xx_12770 + +xx_128C9: + les bx, [bp+@@var_C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_12+2], dx + mov word ptr [bp+@@var_12], ax + les bx, [bp+@@var_C] + mov ax, es:[bx+4] + mov word ptr [bp+@@var_16+2], ax + test byte ptr [bp+@@var_16+2], 4 + jz short xx_128F8 + les bx, [bp+@@var_C] + mov ax, es:[bx+6] + add ax, [bp+@@arg_A] + mov word ptr [bp+@@var_16], ss + jmp short xx_12906 + +xx_128F8: + les bx, [bp+@@var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_16], dx + +xx_12906: + mov [bp+@@var_18], ax + test byte ptr [bp+@@var_16+2], 11h + jnz short xx_12912 + jmp xx_1299C + +xx_12912: + les bx, [bp+@@var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_12+2], dx + mov word ptr [bp+@@var_12], ax + mov dx, word ptr [bp+@@var_16] + mov ax, [bp+@@var_18] + mov word ptr [bp+@@var_1C+2], dx + mov word ptr [bp+@@var_1C], ax + test byte ptr [bp+@@var_16+2], 80h + jz short xx_12944 + les bx, [bp+@@var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_16], dx + jmp short xx_1294D + +xx_12944: + les bx, [bp+@@var_1C] + mov ax, es:[bx] + mov word ptr [bp+@@var_16], ds + +xx_1294D: + mov [bp+@@var_18], ax + mov dx, word ptr [bp+@@var_16] + mov ax, [bp+@@var_18] + mov [bp+@@var_20+2], dx + mov [bp+@@var_20], ax + mov ax, word ptr [bp+@@var_16+2] + and ax, 48h + cmp ax, 40h ; '@' + jnz short xx_1296B + add [bp+@@var_18], 4 + +xx_1296B: + les bx, [bp+@@var_12] + test byte ptr es:[bx+2], 2 + jz short xx_1299C + les bx, [bp+@@var_12] + test byte ptr es:[bx+8], 20h + jz short xx_1299C + test byte ptr [bp+@@var_16+2], 8 + jz short xx_1299C + lea ax, [bp+@@var_12] + push ax + push word ptr [bp+@@var_16] + push [bp+@@var_18] + call xx_125FB + add sp, 6 + mov word ptr [bp+@@var_16], dx + mov [bp+@@var_18], ax + +xx_1299C: + cmp [bp+@@var_E], 0 + jnz short xx_129EA + les bx, [bp+@@var_12] + test byte ptr es:[bx+3], 4 + jz short xx_129CA + push [bp+@@arg_A] + push [bp+@@var_6] + push [bp+@@var_8] + push word ptr [bp+@@var_12+2] + push word ptr [bp+@@var_12] + push word ptr [bp+@@var_16] + push [bp+@@var_18] + call xx_124F9 + add sp, 0Eh + jmp short xx_129EA + +xx_129CA: + push [bp+@@arg_A] + mov ax, 1 + push ax + push [bp+@@var_6] + push [bp+@@var_8] + push word ptr [bp+@@var_12+2] + push word ptr [bp+@@var_12] + push word ptr [bp+@@var_16] + push [bp+@@var_18] + call xx_1222E + add sp, 10h + +xx_129EA: + mov ax, word ptr [bp+@@var_16+2] + and ax, 3 + cmp ax, 3 + jz short xx_129F8 + jmp xx_12A96 + +xx_129F8: + mov ax, word ptr [bp+@@var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short xx_12A07 + sub [bp+@@var_20], 4 + +xx_12A07: + les bx, [bp+@@var_12] + test byte ptr es:[bx+3], 4 + jz short xx_12A56 + les bx, [bp+@@var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+@@var_12+2], dx + mov word ptr [bp+@@var_12], ax + les bx, [bp+@@var_12] + mov ax, es:[bx+16h] + or ax, es:[bx+18h] + jz short xx_12A43 + les bx, [bp+@@var_12] + push word ptr es:[bx+14h] + les bx, [bp+@@var_12] + push word ptr es:[bx+18h] + push word ptr es:[bx+16h] + jmp short xx_12A75 + +xx_12A43: + test byte ptr [bp+@@var_16+2], 80h + jz short xx_12A96 + push [bp+@@var_20+2] + push [bp+@@var_20] ; void * + nopcall @$bdla$qnv ; operator delete[](void *) + jmp short xx_12A94 + +xx_12A56: + les bx, [bp+@@var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short xx_12A83 + les bx, [bp+@@var_12] + push word ptr es:[bx+12h] + les bx, [bp+@@var_12] + push word ptr es:[bx+10h] + push word ptr es:[bx+0Eh] + +xx_12A75: + push [bp+@@var_20+2] + push [bp+@@var_20] + call xx_10A65 + add sp, 0Ah + jmp short xx_12A96 + +xx_12A83: + test byte ptr [bp+@@var_16+2], 80h + jz short xx_12A96 + push [bp+@@var_20+2] + push [bp+@@var_20] ; void * + nopcall @$bdele$qnv ; operator delete(void *) + +xx_12A94: + pop cx + pop cx + +xx_12A96: + mov [bp+@@var_6], 0 + mov [bp+@@var_8], 0 + mov ax, word ptr [bp+@@var_C] + sub word ptr [bp+@@var_C], 0Ah + cmp ax, word ptr [bp+@@arg_0] + jbe short xx_12AAF + jmp xx_128C9 + +xx_12AAF: + xor ax, ax + +xx_12AB1: + pop di + pop si + mov sp, bp + pop bp + retn +xx_126AC endp + + + + public __CurrExcContext +__CurrExcContext proc far + +@@s1 = word ptr -6 +@@s2 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, [bp+@@arg_0] + mov [bp+@@var_2], ax + cmp [bp+@@var_2], 0FFFFh + jz short xx_12AFA + mov bx, [bp+@@var_2] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + add ax, 0FFF8h + mov [bp+@@s2], dx + mov [bp+@@s1], ax + mov ax, 8 + push ax + push ds + mov ax, offset aBccxh1 ; "**BCCxh1" + push ax ; n + push [bp+@@s2] ; s2 + push [bp+@@s1] ; s1 + nopcall _memcmp + add sp, 0Ah + or ax, ax + jz short xx_12AFF + +xx_12AFA: + mov ax, 0FFFFh + jmp short xx_12B06 + +xx_12AFF: + mov bx, [bp+@@var_2] + mov ax, ss:[bx+@@arg_6] + +xx_12B06: + pop di + pop si + mov sp, bp + pop bp + retf +__CurrExcContext endp + + +; __ThrowFileName(void) + public @__ThrowFileName$qv +@__ThrowFileName$qv proc far + push si + push di + les bx, ss:16h + mov dx, es:[bx+18h] + mov ax, es:[bx+16h] + pop di + pop si + retf +@__ThrowFileName$qv endp + + +; __ThrowLineNumber(void) + public @__ThrowLineNumber$qv +@__ThrowLineNumber$qv proc far + push si + push di + les bx, ss:16h + mov ax, es:[bx+1Ah] + pop di + pop si + retf +@__ThrowLineNumber$qv endp + + +; __ThrowExceptionName(void) + public @__ThrowExceptionName$qv +@__ThrowExceptionName$qv proc far + push si + push di + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + pop di + pop si + retf +@__ThrowExceptionName$qv endp + + + +; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) + public @typeinfo@0$bctr$qmx8typeinfo +@typeinfo@0$bctr$qmx8typeinfo proc far + +n = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = dword ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, word ptr [bp+@@arg_0] + or ax, word ptr [bp+@@arg_0+2] + jnz short xx_12B62 + mov ax, 8 + push ax + nopcall @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+@@arg_0+2], dx + mov word ptr [bp+@@arg_0], ax + or ax, dx + jz short xx_12BA0 + +xx_12B62: + les bx, [bp+@@arg_0] + mov word ptr es:[bx+2], seg xx_1313E + mov word ptr es:[bx], offset xx_1313E + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+@@var_2], 0 + mov [bp+n], 0 + lea ax, [bp+n] + push ss ; int + push ax ; n + push cs ; int + mov ax, offset xx_13120 + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +xx_12BA0: + mov dx, word ptr [bp+@@arg_0+2] + mov ax, word ptr [bp+@@arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +@typeinfo@0$bctr$qmx8typeinfo endp + + + +; typeinfo::operator=(typeinfo const &) + public @typeinfo@0$basg$qmx8typeinfo +@typeinfo@0$basg$qmx8typeinfo proc far + +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + pop di + pop si + pop bp + retf +@typeinfo@0$basg$qmx8typeinfo endp + + + +; int __cdecl __far typeinfo___typeinfo(void *, int, int) + public @typeinfo@0$bdtr$qv +@typeinfo@0$bdtr$qv proc far + +@@arg_0 = word ptr 6 +@@arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, [bp+@@arg_4] + mov ax, [bp+@@arg_0] + or ax, [bp+8] + jz short xx_12BEB + les bx, dword ptr [bp+@@arg_0] + mov word ptr es:[bx+2], seg xx_1313E + mov word ptr es:[bx], offset xx_1313E + test dl, 1 + jz short xx_12BEB + push word ptr [bp+8] + push [bp+@@arg_0] ; void * + nopcall @$bdele$qnv ; operator delete(void *) + pop cx + pop cx + +xx_12BEB: + pop di + pop si + pop bp + retf +@typeinfo@0$bdtr$qv endp + + + +; typeinfo::operator==(typeinfo const &)const + public @typeinfo@0$beql$xqmx8typeinfo +@typeinfo@0$beql$xqmx8typeinfo proc far + +@@arg_0 = dword ptr 6 +@@arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + les bx, [bp+@@arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + les bx, [bp+@@arg_0] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call xx_10061 + add sp, 8 + pop di + pop si + pop bp + retf +@typeinfo@0$beql$xqmx8typeinfo endp + + + +; typeinfo::operator!=(typeinfo const &)const + public @typeinfo@0$bneq$xqmx8typeinfo +@typeinfo@0$bneq$xqmx8typeinfo proc far + +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+@@arg_6] + push [bp+@@arg_4] + push [bp+@@arg_2] + push [bp+@@arg_0] + call @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) + add sp, 8 + neg ax + sbb ax, ax + inc ax + pop di + pop si + pop bp + retf +@typeinfo@0$bneq$xqmx8typeinfo endp + + + +; typeinfo::before(typeinfo const &)const + public @typeinfo@0before$xqmx8typeinfo +@typeinfo@0before$xqmx8typeinfo proc far + +@@var_8 = dword ptr -8 +@@var_4 = dword ptr -4 +@@arg_0 = dword ptr 6 +@@arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+@@arg_0] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short xx_12C4F + xor ax, ax + jmp short xx_12CA8 + +xx_12C4F: + les bx, [bp+@@arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short xx_12C61 + mov ax, 1 + jmp short xx_12CA8 + +xx_12C61: + les bx, [bp+@@arg_4] + mov dx, es:[bx+6] + mov word ptr [bp+@@var_4+2], dx + mov ax, es:[bx+4] + mov word ptr [bp+@@var_4], ax + les bx, [bp+@@var_4] + add ax, es:[bx+4] + push dx + push ax + les bx, [bp+@@arg_0] + mov dx, es:[bx+6] + mov word ptr [bp+@@var_8+2], dx + mov ax, es:[bx+4] + mov word ptr [bp+@@var_8], ax + les bx, [bp+@@var_8] + add ax, es:[bx+4] + push dx ; s2 + push ax ; s1 + nopcall _strcmp + add sp, 8 + or ax, ax + jge short xx_12CA6 + mov ax, 1 + jmp short xx_12CA8 + +xx_12CA6: + xor ax, ax + +xx_12CA8: + pop di + pop si + mov sp, bp + pop bp + retf +@typeinfo@0before$xqmx8typeinfo endp + + + +; typeinfo::name(void)const + public @typeinfo@0name$xqv +@typeinfo@0name$xqv proc far + +@@arg_0 = dword ptr 6 + + push bp + mov bp, sp + push si + push di + les bx, [bp+@@arg_0] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call xx_1003C + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) + public @__GetTypeInfo$qnvt1t1t1 +@__GetTypeInfo$qnvt1t1t1 proc far + +@@var_8 = dword ptr -8 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+@@arg_E] + mov ax, [bp+@@arg_C] + mov word ptr [bp+@@var_8+2], dx + mov word ptr [bp+@@var_8], ax + mov ax, [bp+@@arg_0] + or ax, [bp+@@arg_2] + jnz short xx_12D0A + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds ; int + mov ax, offset xx_131A8 + push ax ; n + push cs ; int + mov ax, offset xx_1310A + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +xx_12D0A: + les bx, dword ptr [bp+@@arg_4] + mov dx, [bp+@@arg_4+2] + mov ax, [bp+@@arg_4] + sub ax, es:[bx-2] + mov [bp+@@arg_4+2], dx + mov [bp+@@arg_4], ax + les bx, dword ptr [bp+@@arg_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + les bx, [bp+@@var_8] + mov dx, [bp+@@var_2] + mov ax, [bp+@@var_4] + mov es:[bx+6], dx + mov es:[bx+4], ax + mov dx, word ptr [bp+@@var_8+2] + mov ax, word ptr [bp+@@var_8] + pop di + pop si + mov sp, bp + pop bp + retf +@__GetTypeInfo$qnvt1t1t1 endp + + + +xx_12D4B proc near + +@@var_20 = word ptr -20h +@@var_1E = word ptr -1Eh +@@var_1C = dword ptr -1Ch +@@var_18 = word ptr -18h +@@var_16 = word ptr -16h +@@var_14 = dword ptr -14h +@@var_10 = word ptr -10h +@@var_E = word ptr -0Eh +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = dword ptr -4 +@@arg_0 = word ptr 4 +@@arg_2 = word ptr 6 +@@arg_4 = dword ptr 8 +@@arg_8 = word ptr 0Ch +@@arg_A = word ptr 0Eh +@@arg_C = word ptr 10h +@@arg_E = word ptr 12h +@@arg_10 = word ptr 14h +@@arg_12 = word ptr 16h +@@arg_14 = word ptr 18h +@@arg_16 = word ptr 1Ah +@@arg_18 = word ptr 1Ch +@@arg_1A = word ptr 1Eh +@@arg_1C = word ptr 20h +@@arg_1E = word ptr 22h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+@@var_8], 0 + mov [bp+@@var_A], 0 + mov [bp+@@var_C], 0 + mov [bp+@@var_E], 0 + mov ax, [bp+@@arg_14] + or ax, [bp+@@arg_16] + jz short xx_12D86 + push word ptr [bp+@@arg_4+2] + push word ptr [bp+@@arg_4] + push [bp+@@arg_16] + push [bp+@@arg_14] + call xx_10061 + add sp, 8 + or ax, ax + jnz short xx_12D90 + +xx_12D86: + les bx, [bp+@@arg_4] + test byte ptr es:[bx+8], 4 + jnz short xx_12D97 + +xx_12D90: + xor dx, dx + xor ax, ax + jmp xx_12F8B + +xx_12D97: + mov [bp+@@var_6], 0 + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ch] + +xx_12DA9: + mov word ptr [bp+@@var_4+2], dx + mov word ptr [bp+@@var_4], ax + +xx_12DAF: + les bx, [bp+@@var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+@@var_1C+2], dx + mov word ptr [bp+@@var_1C], ax + mov ax, word ptr [bp+@@var_1C] + or ax, word ptr [bp+@@var_1C+2] + jnz short xx_12DCA + jmp xx_12F53 + +xx_12DCA: + les bx, [bp+@@var_4] + test byte ptr es:[bx+6], 8 + jz short xx_12DD7 + jmp xx_12F4C + +xx_12DD7: + cmp [bp+@@arg_1A], 0 + jz short xx_12DF1 + les bx, [bp+@@var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short xx_12DF1 + mov ax, 1 + jmp short xx_12DF3 + +xx_12DF1: + xor ax, ax + +xx_12DF3: + mov [bp+@@var_10], ax + les bx, [bp+@@var_4] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + add ax, es:[bx+4] + mov word ptr [bp+@@var_14+2], dx + mov word ptr [bp+@@var_14], ax + mov dx, [bp+@@arg_1E] + mov ax, [bp+@@arg_1C] + mov [bp+@@var_16], dx + mov [bp+@@var_18], ax + les bx, [bp+@@var_4] + test byte ptr es:[bx+6], 4 + jz short xx_12E3A + les bx, [bp+@@var_14] + mov ax, es:[bx] + mov dx, word ptr [bp+@@var_14+2] + mov word ptr [bp+@@var_14+2], dx + mov word ptr [bp+@@var_14], ax + mov dx, word ptr [bp+@@var_1C+2] + mov ax, word ptr [bp+@@var_1C] + mov [bp+@@var_16], dx + mov [bp+@@var_18], ax + +xx_12E3A: + push word ptr [bp+@@var_1C+2] + push word ptr [bp+@@var_1C] + push [bp+@@arg_E] + push [bp+@@arg_C] + call xx_10061 + add sp, 8 + or ax, ax + jnz short xx_12EBC + les bx, [bp+@@var_1C] + test byte ptr es:[bx+8], 4 + jnz short xx_12E5E + jmp xx_12F4C + +xx_12E5E: + push [bp+@@var_16] + push [bp+@@var_18] + push [bp+@@var_10] + push [bp+@@arg_18] + push [bp+@@arg_16] + push [bp+@@arg_14] + push [bp+@@arg_12] + push [bp+@@arg_10] + push [bp+@@arg_E] + push [bp+@@arg_C] + push [bp+@@arg_A] + push [bp+@@arg_8] + push word ptr [bp+@@var_1C+2] + push word ptr [bp+@@var_1C] + push word ptr [bp+@@var_14+2] + push word ptr [bp+@@var_14] + call xx_12D4B + add sp, 20h + mov [bp+@@var_1E], dx + mov [bp+@@var_20], ax + mov ax, [bp+@@var_20] + or ax, [bp+@@var_1E] + jnz short xx_12EA5 + jmp xx_12F4C + +xx_12EA5: + mov dx, [bp+@@var_1E] + mov ax, [bp+@@var_20] + mov word ptr [bp+@@var_14+2], dx + mov word ptr [bp+@@var_14], ax + mov bx, [bp+@@arg_18] + mov ax, ss:[bx] + mov [bp+@@var_10], ax + jmp short xx_12F19 + +xx_12EBC: + mov ax, [bp+@@arg_8] + or ax, [bp+@@arg_A] + jz short xx_12EDD + mov dx, [bp+@@arg_A] + mov ax, [bp+@@arg_8] + cmp dx, word ptr [bp+@@var_14+2] + jnz short xx_12F4C + cmp ax, word ptr [bp+@@var_14] + jnz short xx_12F4C + mov dx, word ptr [bp+@@var_14+2] + mov ax, word ptr [bp+@@var_14] + jmp xx_12F8B + +xx_12EDD: + mov ax, [bp+@@arg_10] + or ax, [bp+@@arg_12] + jz short xx_12F19 + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push [bp+@@arg_18] + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+@@arg_16] + push [bp+@@arg_14] + push [bp+@@arg_12] + push [bp+@@arg_10] + push word ptr [bp+@@var_1C+2] + push word ptr [bp+@@var_1C] + push word ptr [bp+@@var_14+2] + push word ptr [bp+@@var_14] + call xx_12D4B + add sp, 20h + or ax, dx + jz short xx_12F4C + +xx_12F19: + cmp [bp+@@var_E], 0 + jz short xx_12F37 + mov dx, word ptr [bp+@@var_14+2] + mov ax, word ptr [bp+@@var_14] + cmp dx, [bp+@@var_A] + jnz short xx_12F37 + cmp ax, [bp+@@var_C] + jnz short xx_12F37 + mov ax, [bp+@@var_10] + or [bp+@@var_8], ax + jmp short xx_12F4C + +xx_12F37: + inc [bp+@@var_E] + mov dx, word ptr [bp+@@var_14+2] + mov ax, word ptr [bp+@@var_14] + mov [bp+@@var_A], dx + mov [bp+@@var_C], ax + mov ax, [bp+@@var_10] + mov [bp+@@var_8], ax + +xx_12F4C: + add word ptr [bp+@@var_4], 8 + jmp xx_12DAF + +xx_12F53: + cmp [bp+@@var_6], 0 + jnz short xx_12F6C + inc [bp+@@var_6] + les bx, [bp+@@arg_4] + mov dx, word ptr [bp+@@arg_4+2] + mov ax, word ptr [bp+@@arg_4] + add ax, es:[bx+0Ah] + jmp xx_12DA9 + +xx_12F6C: + mov bx, [bp+@@arg_18] + mov ax, [bp+@@var_8] + mov ss:[bx], ax + cmp [bp+@@var_E], 1 + jz short xx_12F85 + mov [bp+@@var_A], 0 + mov [bp+@@var_C], 0 + +xx_12F85: + mov dx, [bp+@@var_A] + mov ax, [bp+@@var_C] + +xx_12F8B: + pop di + pop si + mov sp, bp + pop bp + retn +xx_12D4B endp + + + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) + public @__DynamicCast$qnvt1t1t1i +@__DynamicCast$qnvt1t1t1i proc far + +@@var_16 = word ptr -16h +@@var_14 = word ptr -14h +@@var_12 = word ptr -12h +@@var_10 = word ptr -10h +@@var_E = word ptr -0Eh +@@var_C = word ptr -0Ch +@@var_A = word ptr -0Ah +@@var_8 = word ptr -8 +@@var_6 = word ptr -6 +@@var_4 = word ptr -4 +@@var_2 = word ptr -2 +@@arg_0 = word ptr 6 +@@arg_2 = word ptr 8 +@@arg_4 = word ptr 0Ah +@@arg_8 = word ptr 0Eh +@@arg_A = word ptr 10h +@@arg_C = word ptr 12h +@@arg_E = word ptr 14h +@@arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+@@arg_A] + mov ax, [bp+@@arg_8] + mov [bp+@@var_2], dx + mov [bp+@@var_4], ax + mov dx, [bp+@@arg_E] + mov ax, [bp+@@arg_C] + mov [bp+@@var_6], dx + mov [bp+@@var_8], ax + mov ax, [bp+@@arg_0] + or ax, [bp+@@arg_2] + jnz short @@xx_12FBC + jmp @@xx_130C0 + +@@xx_12FBC: + les bx, dword ptr [bp+@@arg_4] + mov dx, [bp+@@arg_2] + mov ax, [bp+@@arg_0] + sub ax, es:[bx-4] + mov [bp+@@var_E], dx + mov [bp+@@var_10], ax + les bx, dword ptr [bp+@@arg_4] + mov dx, [bp+@@arg_4+2] + mov ax, [bp+@@arg_4] + sub ax, es:[bx-2] + mov [bp+@@arg_4+2], dx + mov [bp+@@arg_4], ax + les bx, dword ptr [bp+@@arg_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov [bp+@@var_A], dx + mov [bp+@@var_C], ax + mov ax, [bp+@@arg_C] + or ax, [bp+@@arg_E] + jz short @@xx_13012 + push [bp+@@var_A] + push [bp+@@var_C] + push [bp+@@var_6] + push [bp+@@var_8] + call xx_10061 + add sp, 8 + or ax, ax + jz short @@xx_1301B + +@@xx_13012: + mov dx, [bp+@@var_E] + mov ax, [bp+@@var_10] + jmp @@xx_130F0 + +@@xx_1301B: + push [bp+@@var_A] + push [bp+@@var_C] + push [bp+@@var_2] + push [bp+@@var_4] + call xx_10061 + add sp, 8 + or ax, ax + jnz short @@xx_13074 + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+@@var_16] + push ax + push [bp+@@var_2] + push [bp+@@var_4] + push [bp+@@arg_2] + push [bp+@@arg_0] + push [bp+@@var_6] + push [bp+@@var_8] + xor ax, ax + push ax + push ax + push [bp+@@var_A] + push [bp+@@var_C] + push [bp+@@var_E] + push [bp+@@var_10] + call xx_12D4B + add sp, 20h + mov [bp+@@var_12], dx + mov [bp+@@var_14], ax + mov ax, [bp+@@var_14] + or ax, [bp+@@var_12] + jnz short @@xx_130B8 + +@@xx_13074: + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+@@var_16] + push ax + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+@@var_6] + push [bp+@@var_8] + xor ax, ax + push ax + push ax + push [bp+@@var_A] + push [bp+@@var_C] + push [bp+@@var_E] + push [bp+@@var_10] + call xx_12D4B + add sp, 20h + mov [bp+@@var_12], dx + mov [bp+@@var_14], ax + mov ax, [bp+@@var_14] + or ax, [bp+@@var_12] + jz short @@xx_130C0 + cmp [bp+@@var_16], 0 + jz short @@xx_130C0 + +@@xx_130B8: + mov dx, [bp+@@var_12] + mov ax, [bp+@@var_14] + jmp short @@xx_130F0 + +@@xx_130C0: + cmp [bp+@@arg_10], 0 + jz short @@xx_130EC + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds ; int + mov ax, offset xx_131A9 + push ax ; n + push cs ; int + mov ax, offset xx_130F6 + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +@@xx_130EC: + xor dx, dx + xor ax, ax + +@@xx_130F0: + pop di + pop si + mov sp, bp + pop bp + retf +@__DynamicCast$qnvt1t1t1i endp + +xx_130F6 dw 1 + dw 1 + dw 0Ah + db 0FFh + db 0FFh + dw 0 + db 'Bad_cast',0 + db 0 +xx_1310A dw 1 + dw 1 + dw 0Ah + dw 0FFFFh + dw 0 + db 'Bad_typeid',0 + db 0 +xx_13120 db 4, 0, 10h, 20h, 0Ah, 0 + dd xx_13142 + db 'typeinfo *',0 + db 0 + dd xx_13142 + dd 0 +xx_1313E dd @typeinfo@0$bdtr$qv + ; typeinfo::~typeinfo(void) +xx_13142 db 8, 0, 3, 0, 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0) + db 1, 0, 1, 0 + dd @typeinfo@0$bdtr$qv ; typeinfo::~typeinfo(void) + dw 5 + dw 38h + db 'typeinfo',0 + dd 0 + dd 0 + dd 0 + db 0 diff --git a/libs/BorlandC/xx[bss].asm b/libs/BorlandC/xx[bss].asm new file mode 100644 index 00000000..8bfc1f97 --- /dev/null +++ b/libs/BorlandC/xx[bss].asm @@ -0,0 +1,4 @@ +xx_131A0 dd ? +xx_131A4 dd ? +xx_131A8 db ? ; +xx_131A9 db ? ; diff --git a/libs/BorlandC/xx[data].asm b/libs/BorlandC/xx[data].asm new file mode 100644 index 00000000..616f6fb5 --- /dev/null +++ b/libs/BorlandC/xx[data].asm @@ -0,0 +1,2 @@ +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 diff --git a/th01_fuuin.asm b/th01_fuuin.asm index dce30f4c..bc408173 100644 --- a/th01_fuuin.asm +++ b/th01_fuuin.asm @@ -9606,6625 +9606,7 @@ __xfclose endp include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5DD0 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_5DE4 - mov dx, ds - mov ax, 11FEh - jmp short loc_5DF1 -; --------------------------------------------------------------------------- - -loc_5DE4: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_5DF1: - pop di - pop si - pop bp - retf -sub_5DD0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5DF5 proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5E0D - cmp ax, word ptr [bp+arg_4] - jz short loc_5E89 - -loc_5E0D: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_5E81 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_5E81 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_5E81 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_5E63: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_5E85 - -loc_5E81: - xor ax, ax - jmp short loc_5E8C -; --------------------------------------------------------------------------- - -loc_5E85: - or dx, dx - jnz short loc_5E63 - -loc_5E89: - mov ax, 1 - -loc_5E8C: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5DF5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5E92 proc near - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5EAD: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5F41 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5F3A - cmp [bp+arg_C], 0 - jz short loc_5EE9 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5EE9 - mov ax, 1 - jmp short loc_5EEB -; --------------------------------------------------------------------------- - -loc_5EE9: - xor ax, ax - -loc_5EEB: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jz short loc_5F0E - cmp [bp+var_6], 0 - jz short loc_5F0E - jmp loc_5FD1 -; --------------------------------------------------------------------------- - -loc_5F0E: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5F3A - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5E92 - add sp, 0Eh - or ax, ax - jz short loc_5F3A - jmp loc_5FD1 -; --------------------------------------------------------------------------- - -loc_5F3A: - add word ptr [bp+var_4], 8 - jmp loc_5EAD -; --------------------------------------------------------------------------- - -loc_5F41: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5F54: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5FDD - cmp [bp+arg_C], 0 - jz short loc_5F86 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5F86 - mov ax, 1 - jmp short loc_5F88 -; --------------------------------------------------------------------------- - -loc_5F86: - xor ax, ax - -loc_5F88: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jz short loc_5FA8 - cmp [bp+var_6], 0 - jnz short loc_5FD1 - -loc_5FA8: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5FD6 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5E92 - add sp, 0Eh - or ax, ax - jz short loc_5FD6 - -loc_5FD1: - mov ax, 1 - jmp short loc_5FDF -; --------------------------------------------------------------------------- - -loc_5FD6: - add word ptr [bp+var_4], 8 - jmp loc_5F54 -; --------------------------------------------------------------------------- - -loc_5FDD: - xor ax, ax - -loc_5FDF: - pop di - pop si - mov sp, bp - pop bp - retn -sub_5E92 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5FE5 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_5FF0: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6003 - cmp ax, word ptr [bp+arg_4] - jnz short loc_6003 - jmp loc_6118 -; --------------------------------------------------------------------------- - -loc_6003: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_6093 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6036 - jmp loc_60D9 -; --------------------------------------------------------------------------- - -loc_6036: - or cx, cx - jz short loc_603D - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_603D: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6073 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6061 - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_6061: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_60D9 - -loc_6073: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6087 - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_6087: - test byte ptr [bp+var_2+1], 10h - jnz short loc_6090 - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_6090: - jmp loc_6118 -; --------------------------------------------------------------------------- - -loc_6093: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_6101 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_60B8 - cmp ax, es:[bx+0Ah] - jz short loc_60D9 - -loc_60B8: - or cx, cx - jz short loc_60BF - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_60BF: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6151 - -loc_60D9: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_5FF0 -; --------------------------------------------------------------------------- - -loc_6101: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jz short loc_611D - -loc_6118: - mov ax, 1 - jmp short loc_6153 -; --------------------------------------------------------------------------- - -loc_611D: - test byte ptr [bp+var_2], 2 - jz short loc_6151 - test byte ptr [bp+var_4], 1 - jz short loc_6151 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6151 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5E92 - add sp, 0Eh - jmp short loc_6153 -; --------------------------------------------------------------------------- - -loc_6151: - xor ax, ax - -loc_6153: - pop di - pop si - mov sp, bp - pop bp - retn -sub_5FE5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6159 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_61A9 - cmp [bp+arg_0], 80h ; '€' - ja short loc_618B - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_6190 - -loc_618B: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_6190: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_61AF -; --------------------------------------------------------------------------- - -loc_61A9: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_61AF: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6159 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_61B5 proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+arg_2] - jnz short loc_61DD - cmp ax, [bp+arg_0] - jnz short loc_61DD - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_61EA -; --------------------------------------------------------------------------- - -loc_61DD: - push [bp+arg_2] - push [bp+arg_0] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_61EA: - pop di - pop si - pop bp - retf -sub_61B5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_61EE proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5FE5 - add sp, 0Eh - or ax, ax - jz short loc_6218 - jmp loc_62B4 -; --------------------------------------------------------------------------- - -loc_6218: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_62A8 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5FE5 - add sp, 0Eh - or ax, ax - jnz short loc_62B4 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_62EB - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5FE5 - add sp, 0Eh - or ax, ax - jnz short loc_62B4 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_62EB - -loc_62A8: - test byte ptr [bp+var_4], 10h - jz short loc_62EB - test [bp+arg_C], 1 - jz short loc_62B9 - -loc_62B4: - mov ax, 1 - jmp short loc_62ED -; --------------------------------------------------------------------------- - -loc_62B9: - test byte ptr [bp+var_2], 10h - jz short loc_62EB - test byte ptr [bp+var_2+1], 20h - jz short loc_62CB - test byte ptr [bp+var_4+1], 20h - jz short loc_62EB - -loc_62CB: - test byte ptr [bp+var_4], 40h - jz short loc_62EB - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_62E7 - mov ax, 1 - jmp short loc_62E9 -; --------------------------------------------------------------------------- - -loc_62E7: - xor ax, ax - -loc_62E9: - jmp short loc_62ED -; --------------------------------------------------------------------------- - -loc_62EB: - xor ax, ax - -loc_62ED: - pop di - pop si - mov sp, bp - pop bp - retn -sub_61EE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_62F3 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_631E - or [bp+var_4], 2 - -loc_631E: - test byte ptr [bp+arg_C], 2 - jz short loc_6332 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6332 - or [bp+var_4], 20h - -loc_6332: - test byte ptr [bp+arg_C], 20h - jz short loc_633C - or [bp+var_4], 8 - -loc_633C: - test byte ptr [bp+arg_C], 80h - jz short loc_6346 - or [bp+var_4], 10h - -loc_6346: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_634F - jmp loc_64D4 -; --------------------------------------------------------------------------- - -loc_634F: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_635A - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_635A: - add bx, bx - jmp cs:off_6611[bx] - -loc_6361: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6373: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6385: - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_63AB -; --------------------------------------------------------------------------- - -loc_6399: - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_63AB: - add sp, 0Ah - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_63B1: - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_63C0: - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_63CF: - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_63F5 -; --------------------------------------------------------------------------- - -loc_63E3: - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_63F5: - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_63F8: - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6408: - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_6410: - push bx - pop bx - call [bp+arg_8] - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6418: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6426: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_643C -; --------------------------------------------------------------------------- - -loc_642B: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6439: - call [bp+arg_8] - -loc_643C: - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_643F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6459 -; --------------------------------------------------------------------------- - -loc_644D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_6456: - call [bp+arg_8] - -loc_6459: - pop cx - pop cx - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_645E: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6475: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_648C: - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6495: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_64A6 -; --------------------------------------------------------------------------- - -loc_649A: - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_64A3: - call [bp+arg_8] - -loc_64A6: - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_64A9: - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_64BD: - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_64D1: - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_64D4: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_64DF - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_64DF: - add bx, bx - jmp cs:off_65E1[bx] - -loc_64E6: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6459 -; --------------------------------------------------------------------------- - -loc_64F2: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6456 -; --------------------------------------------------------------------------- - -loc_64FB: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_651B -; --------------------------------------------------------------------------- - -loc_650C: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_651B: - add sp, 8 - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6521: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6495 -; --------------------------------------------------------------------------- - -loc_652A: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_64A3 -; --------------------------------------------------------------------------- - -loc_6533: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_65DA -; --------------------------------------------------------------------------- - -loc_6541: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_6410 -; --------------------------------------------------------------------------- - -loc_654A: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6426 -; --------------------------------------------------------------------------- - -loc_6559: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6439 -; --------------------------------------------------------------------------- - -loc_6568: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_6574: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_6580: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_6592: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_65A4: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_65AF: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_65BA: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_65DA -; --------------------------------------------------------------------------- - -loc_65CA: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_65DA: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_62F3 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_65E1 dw offset loc_64E6 - dw offset loc_64F2 - dw offset loc_64FB - dw offset loc_650C - dw offset loc_6521 - dw offset loc_652A - dw offset loc_654A - dw offset loc_6559 - dw offset loc_6533 - dw offset loc_6541 - dw offset loc_654A - dw offset loc_6559 - dw offset loc_65DA - dw offset loc_65DA - dw offset loc_65DA - dw offset loc_65DA - dw offset loc_6568 - dw offset loc_6574 - dw offset loc_6580 - dw offset loc_6592 - dw offset loc_65A4 - dw offset loc_65AF - dw offset loc_65BA - dw offset loc_65CA -off_6611 dw offset loc_6361 - dw offset loc_6373 - dw offset loc_6385 - dw offset loc_6399 - dw offset loc_63B1 - dw offset loc_63C0 - dw offset loc_63CF - dw offset loc_63E3 - dw offset loc_63F8 - dw offset loc_6408 - dw offset loc_6418 - dw offset loc_642B - dw offset loc_64D1 - dw offset loc_64D1 - dw offset loc_64D1 - dw offset loc_64D1 - dw offset loc_643F - dw offset loc_644D - dw offset loc_645E - dw offset loc_6475 - dw offset loc_648C - dw offset loc_649A - dw offset loc_64A9 - dw offset loc_64BD - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6641 proc near - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_6654 - mov ax, 2 - jmp short loc_6656 -; --------------------------------------------------------------------------- - -loc_6654: - xor ax, ax - -loc_6656: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_667C - or [bp+var_6], 2 - -loc_667C: - test byte ptr [bp+arg_8], 2 - jz short loc_6690 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_6690 - or [bp+var_6], 20h - -loc_6690: - test byte ptr [bp+arg_8], 20h - jz short loc_669A - or [bp+var_6], 8 - -loc_669A: - test byte ptr [bp+arg_8], 80h - jz short loc_66A4 - or [bp+var_6], 10h - -loc_66A4: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_66AF - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_66AF: - add bx, bx - jmp cs:off_67C9[bx] - -loc_66B6: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - pop cx - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_66C4: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_66D2: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - add sp, 6 - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_66E4: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_66F6: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_675C -; --------------------------------------------------------------------------- - -loc_6701: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_6759 -; --------------------------------------------------------------------------- - -loc_6709: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6723 -; --------------------------------------------------------------------------- - -loc_6717: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_6723: - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_6726: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call word ptr [bp+arg_4] - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_6734: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_67C2 -; --------------------------------------------------------------------------- - -loc_6742: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_675C -; --------------------------------------------------------------------------- - -loc_6750: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_6759: - call [bp+arg_4] - -loc_675C: - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_675E: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_676A: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_6776: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - pop ds - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_6784: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_6792: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_679D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_67A8: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop ds - jmp short loc_67C2 -; --------------------------------------------------------------------------- - -loc_67B5: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_67C2: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6641 endp - -; --------------------------------------------------------------------------- -off_67C9 dw offset loc_66B6 - dw offset loc_66C4 - dw offset loc_66D2 - dw offset loc_66E4 - dw offset loc_66F6 - dw offset loc_6701 - dw offset loc_6709 - dw offset loc_6717 - dw offset loc_6726 - dw offset loc_6734 - dw offset loc_6742 - dw offset loc_6750 - dw offset loc_67C2 - dw offset loc_67C2 - dw offset loc_67C2 - dw offset loc_67C2 - dw offset loc_675E - dw offset loc_676A - dw offset loc_6776 - dw offset loc_6784 - dw offset loc_6792 - dw offset loc_679D - dw offset loc_67A8 - dw offset loc_67B5 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_67F9 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6824 - or [bp+var_4], 2 - -loc_6824: - test byte ptr [bp+arg_8], 2 - jz short loc_682E - or [bp+var_4], 4 - -loc_682E: - test byte ptr [bp+arg_8], 20h - jz short loc_6838 - or [bp+var_4], 8 - -loc_6838: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_68AB - add bx, bx - jmp cs:off_68B2[bx] - -loc_6847: - push [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_6850: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_6859: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_686D -; --------------------------------------------------------------------------- - -loc_6864: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_686D: - pop cx - pop cx - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_6871: - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_687F -; --------------------------------------------------------------------------- - -loc_6879: - push [bp+arg_0] - call [bp+arg_4] - -loc_687F: - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_6881: - mov bx, [bp+arg_0] - push bx - pop bx - call word ptr [bp+arg_4] - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_688B: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_6895: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_68A9 -; --------------------------------------------------------------------------- - -loc_68A0: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_68A9: - jmp short $+2 - -loc_68AB: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_67F9 endp - -; --------------------------------------------------------------------------- -off_68B2 dw offset loc_6847 - dw offset loc_6850 - dw offset loc_6859 - dw offset loc_6864 - dw offset loc_6871 - dw offset loc_6879 - dw offset loc_6895 - dw offset loc_68A0 - dw offset loc_6881 - dw offset loc_688B - dw offset loc_6895 - dw offset loc_68A0 - db 4 dup(0), 88h, 6Bh - dw seg seg000 - db 14h dup(0), 0E1h, 6Bh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0CAh, 68h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0E2h, 68h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6918(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6918 proc far - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -_src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 68FAh - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_69A4 -; --------------------------------------------------------------------------- - -loc_6981: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_69A1 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_69A1: - inc word ptr [bp+var_34] - -loc_69A4: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_6981 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_6A01 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_6A03 -; --------------------------------------------------------------------------- - -loc_6A01: - xor ax, ax - -loc_6A03: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6A1D - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6A1D: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_6159 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 61B5h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_6BA7 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_62F3 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_6B92 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6B92: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6BA7: - cmp [bp+arg_1E], 0 - jnz short loc_6BEB - test byte ptr [bp+var_2C], 2 - jz short loc_6BEB - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - call sub_6641 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6BEB -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6BEB: - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6918 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -_src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6918 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6CDB - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6CDB: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6D27 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6D30 -; --------------------------------------------------------------------------- - -loc_6D27: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6D30: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6918 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6D4A proc far - push si - push di - pop di - pop si - retf -sub_6D4A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D4F proc far - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_6D69 - inc [bp+var_4] - -loc_6D69: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6D4A - jmp short loc_6DB7 -; --------------------------------------------------------------------------- - -loc_6D76: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_6DA1 - mov ax, dx - jmp short loc_6DD5 -; --------------------------------------------------------------------------- - -loc_6DA1: - cmp [bp+var_4], 0 - jz short loc_6DAE - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6DAE: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_6DB7: - cmp [bp+var_2], 0FFFFh - jz short loc_6DC5 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_6D76 - -loc_6DC5: - cmp [bp+var_4], 0 - jz short loc_6DD2 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6DD2: - mov ax, 1 - -loc_6DD5: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6D4F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_6E06 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_6E06: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6D4F - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6E22 proc far - push si - push di - pop di - pop si - retf -sub_6E22 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -_src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 7299 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_6E22 - pop cx - pushf - pop ax - mov word ptr [bp+_src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_6E50 - jmp loc_6F06 -; --------------------------------------------------------------------------- - -loc_6E50: - pushad - mov word ptr [bp+_src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+_src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+_src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6F4F -; --------------------------------------------------------------------------- - -loc_6F06: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+_src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6F4F: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_6F80 - cmp [bp+arg_0], 0FACEh - jnz short loc_6F80 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_6F8E -; --------------------------------------------------------------------------- - -loc_6F80: - mov word ptr [bp+_src], bp - mov bx, word ptr [bp+_src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_6F8E: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_705F - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_705F: - cmp [bp+arg_A], 0 - jb short loc_7077 - ja short loc_706D - cmp [bp+arg_8], 0Fh - jbe short loc_7077 - -loc_706D: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7077: - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_70AD -; --------------------------------------------------------------------------- - -loc_7084: - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_70AD: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_7084 - jnz short loc_70BE - cmp ax, [bp+arg_8] - jb short loc_7084 - -loc_70BE: - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6D4F - add sp, 8 - or ax, ax - jnz short loc_7109 - test byte ptr [bp+arg_4], 1 - jz short loc_7129 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_70BE -; --------------------------------------------------------------------------- - -loc_7109: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6D4F - add sp, 8 - or ax, ax - jz short loc_7129 - jmp loc_7294 -; --------------------------------------------------------------------------- - -loc_7129: - cmp byte ptr __8086, 3 - jnb short loc_7133 - jmp loc_7213 -; --------------------------------------------------------------------------- - -loc_7133: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7299 -; --------------------------------------------------------------------------- - -loc_7213: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7299 -; --------------------------------------------------------------------------- - -loc_7294: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_7299: - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 8, 73h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0A6h, 72h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_72D0 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 72BEh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_6641 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7312 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7312: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_72D0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7320 proc near - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_739B - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_7393 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_72D0 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7393: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_739B: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_73F2 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_73EA - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_73EA - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_72D0 - add sp, 0Ah - -loc_73EA: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_73F2: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7320 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_7320 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7475 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_747D: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_749A - xor ax, ax - jmp loc_753B -; --------------------------------------------------------------------------- - -loc_749A: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_74C6 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_74C6: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_751F - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_7534 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_7534 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_7475 - add sp, 0Ch - or ax, ax - jz short loc_7534 - -loc_751F: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_753B -; --------------------------------------------------------------------------- - -loc_7534: - add word ptr [bp+arg_0], 8 - jmp loc_747D -; --------------------------------------------------------------------------- - -loc_753B: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7475 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7541 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_75B2 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7475 - add sp, 0Ch - or ax, ax - jnz short loc_75B2 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7475 - add sp, 0Ch - or ax, ax - jz short loc_75BA - -loc_75B2: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_75BE -; --------------------------------------------------------------------------- - -loc_75BA: - xor dx, dx - xor ax, ax - -loc_75BE: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7541 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_75C4 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -_src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_75F3 - jmp loc_7864 -; --------------------------------------------------------------------------- - -loc_75F3: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7600 - jmp loc_7864 -; --------------------------------------------------------------------------- - -loc_7600: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_7674 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_7674: - test cl, 10h - jz short loc_769C - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_769C - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_77C7 -; --------------------------------------------------------------------------- - -loc_769C: - test dl, 1 - jnz short loc_76A4 - jmp loc_7748 -; --------------------------------------------------------------------------- - -loc_76A4: - test cl, 30h - jnz short loc_76AC - jmp loc_7748 -; --------------------------------------------------------------------------- - -loc_76AC: - test cl, 20h - jz short loc_76B3 - jmp short loc_76D6 -; --------------------------------------------------------------------------- - -loc_76B3: - les bx, [bp+_src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_76DD - mov ax, word ptr [bp+_src] - mov word ptr [bp+_src+2], ds - mov word ptr [bp+_src], ax - -loc_76D6: - mov [bp+var_14], 1 - jmp short $+2 - -loc_76DD: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_773E - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push cs - call near ptr sub_7541 - add sp, 0Ch - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - cmp dx, [bp+var_16] - jnz short loc_7739 - cmp ax, [bp+var_18] - jz short loc_773E - -loc_7739: - mov [bp+var_14], 1 - -loc_773E: - push [bp+n] - push ss - lea ax, [bp+_src] - jmp loc_7812 -; --------------------------------------------------------------------------- - -loc_7748: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_77CE - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_7797 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push cs - call near ptr sub_7541 - add sp, 0Ch - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - mov [bp+var_14], 1 - -loc_7797: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_7815 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_62F3 - add sp, 0Eh - -loc_77C7: - mov [bp+var_14], 1 - jmp short loc_782E -; --------------------------------------------------------------------------- - -loc_77CE: - test cl, 20h - jz short loc_77ED - push [bp+n] ; n - push ss - lea ax, [bp+_src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_77C7 -; --------------------------------------------------------------------------- - -loc_77ED: - test cl, 10h - jz short loc_7815 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_7815 - les bx, [bp+_src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_7812: - push ax - jmp short loc_781E -; --------------------------------------------------------------------------- - -loc_7815: - push [bp+n] ; n - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - -loc_781E: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_782E: - cmp [bp+var_14], 0 - jnz short loc_7864 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_785C - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - call sub_72D0 - add sp, 0Ah - -loc_785C: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_7864: - pop di - pop si - mov sp, bp - pop bp - retn -sub_75C4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_786A proc near - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7A0F -; --------------------------------------------------------------------------- - -loc_78C2: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_78FD - jmp loc_7A0C -; --------------------------------------------------------------------------- - -loc_78FD: - add bx, bx - jmp cs:off_7A29[bx] - -loc_7904: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_14750+2, dx - mov word ptr dword_14750, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_14750 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7A0C -; --------------------------------------------------------------------------- - -loc_793F: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_796E -; --------------------------------------------------------------------------- - -loc_794E: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_7968 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_7968 - jmp short loc_7988 -; --------------------------------------------------------------------------- - -loc_7968: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_796E: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_794E - -loc_7988: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_7320 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7A0C -; --------------------------------------------------------------------------- - -loc_79C1: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_8440 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7A0C: - mov ax, [bp+var_8] - -loc_7A0F: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_7A23 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_7A23 - jmp loc_78C2 -; --------------------------------------------------------------------------- - -loc_7A23: - pop di - pop si - mov sp, bp - pop bp - retn -sub_786A endp - -; --------------------------------------------------------------------------- -off_7A29 dw offset loc_7904 - dw offset loc_7A0C - dw offset loc_7A0C - dw offset loc_7A0C - dw offset loc_793F - dw offset loc_79C1 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_786A - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_786A - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7A7F proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7AED -; --------------------------------------------------------------------------- - -loc_7A98: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_7AE1 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_61EE - add sp, 10h - or ax, ax - jz short loc_7AE9 - -loc_7AE1: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7AFD -; --------------------------------------------------------------------------- - -loc_7AE9: - add word ptr [bp+var_4], 10h - -loc_7AED: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7A98 - xor dx, dx - xor ax, ax - -loc_7AFD: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7A7F endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_7B97 - jmp loc_7C3F -; --------------------------------------------------------------------------- - -loc_7B97: - xor ax, ax - push ax - push [bp+var_4] - call sub_786A - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7BB0 - jmp loc_7E72 -; --------------------------------------------------------------------------- - -loc_7BB0: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7BBA - jmp loc_7E72 -; --------------------------------------------------------------------------- - -loc_7BBA: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_7BD5 - jmp loc_7E72 -; --------------------------------------------------------------------------- - -loc_7BD5: - jmp short loc_7C13 -; --------------------------------------------------------------------------- - -loc_7BD7: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_61EE - add sp, 10h - or ax, ax - jz short loc_7C0F - jmp loc_7E72 -; --------------------------------------------------------------------------- - -loc_7C0F: - add word ptr [bp+var_20], 4 - -loc_7C13: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7BD7 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_7E72 -; --------------------------------------------------------------------------- - -loc_7C3F: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_7E66 -; --------------------------------------------------------------------------- - -loc_7C49: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_7C7A - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7C7A: - add bx, bx - jmp cs:off_7E7B[bx] - -loc_7C81: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7C8F - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7C8F: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7C99 - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7C99: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_7A7F - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_7CD3 - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7CD3: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7D07: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_786A - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_7D59 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_75C4 - add sp, 10h - -loc_7D59: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7D72: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7D87 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7D87 - jmp loc_7E63 -; --------------------------------------------------------------------------- - -loc_7D87: - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_14754+2, dx - mov word ptr dword_14754, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_14754 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7E1E -; --------------------------------------------------------------------------- - -loc_7DE9: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7DFD - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7DFD - jmp short loc_7E63 -; --------------------------------------------------------------------------- - -loc_7DFD: - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7E1E: - cmp [bp+var_38], 0 - jge short loc_7E3C - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_7E38 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_7E38: - xor ax, ax - jmp short loc_7E75 -; --------------------------------------------------------------------------- - -loc_7E3C: - cmp [bp+var_38], 0 - jnz short loc_7E44 - jmp short loc_7E63 -; --------------------------------------------------------------------------- - -loc_7E44: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7D07 -; --------------------------------------------------------------------------- - -loc_7E63: - mov ax, [bp+var_14] - -loc_7E66: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_7E72 - jmp loc_7C49 -; --------------------------------------------------------------------------- - -loc_7E72: - mov ax, 1 - -loc_7E75: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_7E7B dw offset loc_7E63 - dw offset loc_7D72 - dw offset loc_7DE9 - dw offset loc_7C81 - dw offset loc_7E63 - dw offset loc_7E63 - db 4 dup(0), 1Ah, 7Fh - dw seg seg000 - db 14h dup(0), 2Ah, 7Fh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Fh, 7Eh - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 87h, 7Eh - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7ED5 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7EB7h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_6641 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_7F23 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7F23: - mov [bp+var_12], 0 - jmp short loc_7F33 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7F33: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7ED5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F41 proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_7FB0 -; --------------------------------------------------------------------------- - -loc_7F4E: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_7F76 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7F76: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7FB0 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_7FC2 - add sp, 10h - xor cx, cx - -loc_7FB0: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7F4E - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F41 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7FC2 proc far - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_7FD9 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_7FE0 -; --------------------------------------------------------------------------- - -loc_7FD9: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_7FE0: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8002 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_801B - jnz short loc_8002 - cmp ax, [bp+var_1C] - jb short loc_801B - -loc_8002: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7ED5 - add sp, 0Ah - jmp loc_8287 -; --------------------------------------------------------------------------- - -loc_801B: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_80B4 - -loc_8046: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_80B4 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_80AE - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_80A7 - jnz short loc_807D - cmp bx, [bp+var_1C] - jb short loc_80A7 - -loc_807D: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8097: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F41 - add sp, 12h - jmp loc_8287 -; --------------------------------------------------------------------------- - -loc_80A7: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_80AE: - add word ptr [bp+var_10], 8 - jmp short loc_8046 -; --------------------------------------------------------------------------- - -loc_80B4: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_80CD: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8143 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_813D - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8136 - jnz short loc_8104 - cmp bx, [bp+var_1C] - jb short loc_8136 - -loc_8104: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F41 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8133 - jmp loc_8287 -; --------------------------------------------------------------------------- - -loc_8133: - jmp loc_8267 -; --------------------------------------------------------------------------- - -loc_8136: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_813D: - add word ptr [bp+var_8], 8 - jmp short loc_80CD -; --------------------------------------------------------------------------- - -loc_8143: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_815C: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8196 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8196: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_81BA - jb short loc_81B0 - cmp bx, [bp+var_1C] - jnb short loc_81BA - -loc_81B0: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_8280 -; --------------------------------------------------------------------------- - -loc_81BA: - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_8206 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_828D - add sp, 0Eh - jmp short loc_8226 -; --------------------------------------------------------------------------- - -loc_8206: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_7FC2 - add sp, 10h - -loc_8226: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_823F - jmp loc_81BA -; --------------------------------------------------------------------------- - -loc_823F: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F41 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8287 - -loc_8267: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8097 -; --------------------------------------------------------------------------- - -loc_8280: - add word ptr [bp+var_18], 6 - jmp loc_815C -; --------------------------------------------------------------------------- - -loc_8287: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7FC2 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_828D proc far - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_82E7 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_82E7: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8377 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_8364 -; --------------------------------------------------------------------------- - -loc_8345: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_8364: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7FC2 - add sp, 10h - -loc_8377: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8345 - pop di - pop si - mov sp, bp - pop bp - retf -sub_828D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_838F proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_8434 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_8434 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_83EE - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_83F7 -; --------------------------------------------------------------------------- - -loc_83EE: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_83F7: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_8434: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_838F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8440 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_8456 - jmp loc_8843 -; --------------------------------------------------------------------------- - -loc_8456: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_84AF - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_84AF: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_84C6 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_8845 -; --------------------------------------------------------------------------- - -loc_84C6: - cmp [bp+var_6], 0 - jg short loc_84F8 - jnz short loc_84D4 - cmp [bp+var_8], 0 - ja short loc_84F8 - -loc_84D4: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_84E6 - jmp loc_8843 -; --------------------------------------------------------------------------- - -loc_84E6: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_865D -; --------------------------------------------------------------------------- - -loc_84F8: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_8504: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8517 - sub word ptr [bp+var_C], 0Ah - jmp loc_865D -; --------------------------------------------------------------------------- - -loc_8517: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_853F - jmp loc_8609 -; --------------------------------------------------------------------------- - -loc_853F: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_8563 - jmp loc_8609 -; --------------------------------------------------------------------------- - -loc_8563: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_8570 - jmp loc_8609 -; --------------------------------------------------------------------------- - -loc_8570: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_857D - jmp loc_8609 -; --------------------------------------------------------------------------- - -loc_857D: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8596 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_85A4 -; --------------------------------------------------------------------------- - -loc_8596: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_85A4: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_85CC - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_85D5 -; --------------------------------------------------------------------------- - -loc_85CC: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_85D5: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_85E6 - add word ptr [bp+var_1C], 4 - -loc_85E6: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_838F - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8609: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_862E - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_862E: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_864C - jnz short loc_865D - cmp ax, [bp+var_8] - jnb short loc_865D - -loc_864C: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_8504 -; --------------------------------------------------------------------------- - -loc_865D: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_868C - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_869A -; --------------------------------------------------------------------------- - -loc_868C: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_869A: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_86A6 - jmp loc_8730 -; --------------------------------------------------------------------------- - -loc_86A6: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_86D8 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_86E1 -; --------------------------------------------------------------------------- - -loc_86D8: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_86E1: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_86FF - add [bp+var_18], 4 - -loc_86FF: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8730 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8730 - test byte ptr [bp+var_16+2], 8 - jz short loc_8730 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_838F - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8730: - cmp [bp+var_E], 0 - jnz short loc_877E - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_875E - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_828D - add sp, 0Eh - jmp short loc_877E -; --------------------------------------------------------------------------- - -loc_875E: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7FC2 - add sp, 10h - -loc_877E: - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_878C - jmp loc_882A -; --------------------------------------------------------------------------- - -loc_878C: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_879B - sub word ptr [bp+driver], 4 - -loc_879B: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_87EA - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_87D7 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8809 -; --------------------------------------------------------------------------- - -loc_87D7: - test byte ptr [bp+var_16+2], 80h - jz short loc_882A - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8828 -; --------------------------------------------------------------------------- - -loc_87EA: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8817 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8809: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_67F9 - add sp, 0Ah - jmp short loc_882A -; --------------------------------------------------------------------------- - -loc_8817: - test byte ptr [bp+var_16+2], 80h - jz short loc_882A - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8828: - pop cx - pop cx - -loc_882A: - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_8843 - jmp loc_865D -; --------------------------------------------------------------------------- - -loc_8843: - xor ax, ax - -loc_8845: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8440 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_888E - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 1207h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_8893 - -loc_888E: - mov ax, 0FFFFh - jmp short loc_889A -; --------------------------------------------------------------------------- - -loc_8893: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_889A: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -_src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_88F6 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_8934 - -loc_88F6: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8ED2h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+_src], 0 - lea ax, [bp+_src] - push ss - push ax ; src - push cs ; int - mov ax, 8EB4h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8934: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_897F - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8ED2h - test dl, 1 - jz short loc_897F - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_897F: - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5DF5 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_89E3 - xor ax, ax - jmp short loc_8A3C -; --------------------------------------------------------------------------- - -loc_89E3: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_89F5 - mov ax, 1 - jmp short loc_8A3C -; --------------------------------------------------------------------------- - -loc_89F5: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8A3A - mov ax, 1 - jmp short loc_8A3C -; --------------------------------------------------------------------------- - -loc_8A3A: - xor ax, ax - -loc_8A3C: - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5DD0 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8A9E - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 1CB8h - push ax ; src - push cs ; int - mov ax, 8E9Eh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8A9E: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8ADF proc near - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8B1A - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_8B24 - -loc_8B1A: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8B2B - -loc_8B24: - xor dx, dx - xor ax, ax - jmp loc_8D1F -; --------------------------------------------------------------------------- - -loc_8B2B: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8B3D: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8B43: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_8B5E - jmp loc_8CE7 -; --------------------------------------------------------------------------- - -loc_8B5E: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_8B6B - jmp loc_8CE0 -; --------------------------------------------------------------------------- - -loc_8B6B: - cmp [bp+arg_1A], 0 - jz short loc_8B85 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_8B85 - mov ax, 1 - jmp short loc_8B87 -; --------------------------------------------------------------------------- - -loc_8B85: - xor ax, ax - -loc_8B87: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_8BCE - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_8BCE: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_8C50 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_8BF2 - jmp loc_8CE0 -; --------------------------------------------------------------------------- - -loc_8BF2: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8ADF - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8C39 - jmp loc_8CE0 -; --------------------------------------------------------------------------- - -loc_8C39: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_8CAD -; --------------------------------------------------------------------------- - -loc_8C50: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8C71 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_8CE0 - cmp ax, word ptr [bp+var_14] - jnz short loc_8CE0 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8D1F -; --------------------------------------------------------------------------- - -loc_8C71: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_8CAD - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8ADF - add sp, 20h - or ax, dx - jz short loc_8CE0 - -loc_8CAD: - cmp [bp+var_E], 0 - jz short loc_8CCB - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_8CCB - cmp ax, [bp+var_C] - jnz short loc_8CCB - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_8CE0 -; --------------------------------------------------------------------------- - -loc_8CCB: - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_8CE0: - add word ptr [bp+var_4], 8 - jmp loc_8B43 -; --------------------------------------------------------------------------- - -loc_8CE7: - cmp [bp+var_6], 0 - jnz short loc_8D00 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8B3D -; --------------------------------------------------------------------------- - -loc_8D00: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8D19 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8D19: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8D1F: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8ADF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8D50 - jmp loc_8E54 -; --------------------------------------------------------------------------- - -loc_8D50: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_8DA6 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jz short loc_8DAF - -loc_8DA6: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_8E84 -; --------------------------------------------------------------------------- - -loc_8DAF: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_5DF5 - add sp, 8 - or ax, ax - jnz short loc_8E08 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8ADF - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_8E4C - -loc_8E08: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8ADF - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_8E54 - cmp [bp+var_16], 0 - jz short loc_8E54 - -loc_8E4C: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_8E84 -; --------------------------------------------------------------------------- - -loc_8E54: - cmp [bp+arg_10], 0 - jz short loc_8E80 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 1CB9h - push ax ; src - push cs ; int - mov ax, 8E8Ah - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8E80: - xor dx, dx - xor ax, ax - -loc_8E84: - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1 - db 0 - db 1 - db 0 - db 0Ah - db 0 - db 0FFh - db 0FFh - db 0 - db 0 -aBad_cast db 'Bad_cast',0 - db 0 - db 1 - db 0 - db 1 - db 0 - db 0Ah - db 0 - db 0FFh - db 0FFh - db 0 - db 0 -aBad_typeid db 'Bad_typeid',0 - db 0 - db 4 - db 0 - db 10h - db 20h - db 0Ah - db 0 - db 0D6h ; Ö - db 8Eh ; Ž - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0 - dd byte_8ED6 - db 4 dup(0), 4Fh, 89h - dw seg seg000 -byte_8ED6 db 8 - ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 4Fh, 89h - dw seg seg000 - db 5 - db 0 - db 38h ; 8 - db 0 -aTypeinfo_0 db 'typeinfo',0 - dd 0 - dd 0 - dd 0 - db 0 +include libs/BorlandC/xx.asm unknown_libname_3 db 0BAh, 10h, 12h, 0EBh, 3, 0BAh, 15h, 12h, 0B9h, 5, 0 db 0B4h, 40h, 0BBh, 2, 0, 0CDh, 21h, 0B9h, 27h, 0, 0BAh db 1Ah, 12h, 0B4h, 40h, 0CDh, 21h, 0E9h, 56h, 8Ch @@ -39011,8 +32393,7 @@ include libs/BorlandC/putc[data].asm word_13C98 dw 0 word_13C9A dw 0 include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm aPrintScanfFloa db 'print scanf : floating point formats not linked',0Dh,0Ah,0 word_13CE2 dw 0 word_13CE4 dw 0 @@ -39815,9 +33196,7 @@ byte_1474C db ? db ? include libs/BorlandC/putc[bss].asm db ? -dword_14750 dd ? -dword_14754 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? diff --git a/th01_op.asm b/th01_op.asm index 0f9cabce..f03f077c 100644 --- a/th01_op.asm +++ b/th01_op.asm @@ -9368,6695 +9368,7 @@ __xfclose endp include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_604B proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_605F - mov dx, ds - mov ax, 0F4Eh - jmp short loc_606C -; --------------------------------------------------------------------------- - -loc_605F: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_606C: - pop di - pop si - pop bp - retf -sub_604B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6070 proc far - ; sub_610D+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6088 - cmp ax, word ptr [bp+arg_4] - jz short loc_6104 - -loc_6088: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_60FC - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_60FC - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_60FC - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_60DE: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6100 - -loc_60FC: - xor ax, ax - jmp short loc_6107 -; --------------------------------------------------------------------------- - -loc_6100: - or dx, dx - jnz short loc_60DE - -loc_6104: - mov ax, 1 - -loc_6107: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6070 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_610D proc near - ; sub_610D+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6128: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_61BC - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_61B5 - cmp [bp+arg_C], 0 - jz short loc_6164 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6164 - mov ax, 1 - jmp short loc_6166 -; --------------------------------------------------------------------------- - -loc_6164: - xor ax, ax - -loc_6166: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jz short loc_6189 - cmp [bp+var_6], 0 - jz short loc_6189 - jmp loc_624C -; --------------------------------------------------------------------------- - -loc_6189: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_61B5 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_610D - add sp, 0Eh - or ax, ax - jz short loc_61B5 - jmp loc_624C -; --------------------------------------------------------------------------- - -loc_61B5: - add word ptr [bp+var_4], 8 - jmp loc_6128 -; --------------------------------------------------------------------------- - -loc_61BC: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_61CF: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6258 - cmp [bp+arg_C], 0 - jz short loc_6201 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6201 - mov ax, 1 - jmp short loc_6203 -; --------------------------------------------------------------------------- - -loc_6201: - xor ax, ax - -loc_6203: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jz short loc_6223 - cmp [bp+var_6], 0 - jnz short loc_624C - -loc_6223: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6251 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_610D - add sp, 0Eh - or ax, ax - jz short loc_6251 - -loc_624C: - mov ax, 1 - jmp short loc_625A -; --------------------------------------------------------------------------- - -loc_6251: - ; sub_610D+13Dj - add word ptr [bp+var_4], 8 - jmp loc_61CF -; --------------------------------------------------------------------------- - -loc_6258: - xor ax, ax - -loc_625A: - pop di - pop si - mov sp, bp - pop bp - retn -sub_610D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6260 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_626B: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_627E - cmp ax, word ptr [bp+arg_4] - jnz short loc_627E - jmp loc_6393 -; --------------------------------------------------------------------------- - -loc_627E: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_630E - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_62B1 - jmp loc_6354 -; --------------------------------------------------------------------------- - -loc_62B1: - or cx, cx - jz short loc_62B8 - jmp loc_63CC -; --------------------------------------------------------------------------- - -loc_62B8: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_62EE - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_62DC - jmp loc_63CC -; --------------------------------------------------------------------------- - -loc_62DC: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_6354 - -loc_62EE: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6302 - jmp loc_63CC -; --------------------------------------------------------------------------- - -loc_6302: - test byte ptr [bp+var_2+1], 10h - jnz short loc_630B - jmp loc_63CC -; --------------------------------------------------------------------------- - -loc_630B: - jmp loc_6393 -; --------------------------------------------------------------------------- - -loc_630E: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_637C - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_6333 - cmp ax, es:[bx+0Ah] - jz short loc_6354 - -loc_6333: - or cx, cx - jz short loc_633A - jmp loc_63CC -; --------------------------------------------------------------------------- - -loc_633A: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_63CC - -loc_6354: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_626B -; --------------------------------------------------------------------------- - -loc_637C: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jz short loc_6398 - -loc_6393: - ; sub_6260:loc_630Bj - mov ax, 1 - jmp short loc_63CE -; --------------------------------------------------------------------------- - -loc_6398: - test byte ptr [bp+var_2], 2 - jz short loc_63CC - test byte ptr [bp+var_4], 1 - jz short loc_63CC - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_63CC - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_610D - add sp, 0Eh - jmp short loc_63CE -; --------------------------------------------------------------------------- - -loc_63CC: - xor ax, ax - -loc_63CE: - ; sub_6260+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_6260 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_63D4 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_6424 - cmp [bp+arg_0], 80h ; '€' - ja short loc_6406 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_640B - -loc_6406: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_640B: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_642A -; --------------------------------------------------------------------------- - -loc_6424: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_642A: - pop di - pop si - mov sp, bp - pop bp - retf -sub_63D4 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_6458 - cmp ax, [bp+6] - jnz short loc_6458 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_6465 -; --------------------------------------------------------------------------- - -loc_6458: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_6465: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6469 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6260 - add sp, 0Eh - or ax, ax - jz short loc_6493 - jmp loc_652F -; --------------------------------------------------------------------------- - -loc_6493: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_6523 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6260 - add sp, 0Eh - or ax, ax - jnz short loc_652F - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6566 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6260 - add sp, 0Eh - or ax, ax - jnz short loc_652F - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6566 - -loc_6523: - test byte ptr [bp+var_4], 10h - jz short loc_6566 - test [bp+arg_C], 1 - jz short loc_6534 - -loc_652F: - mov ax, 1 - jmp short loc_6568 -; --------------------------------------------------------------------------- - -loc_6534: - test byte ptr [bp+var_2], 10h - jz short loc_6566 - test byte ptr [bp+var_2+1], 20h - jz short loc_6546 - test byte ptr [bp+var_4+1], 20h - jz short loc_6566 - -loc_6546: - test byte ptr [bp+var_4], 40h - jz short loc_6566 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_6562 - mov ax, 1 - jmp short loc_6564 -; --------------------------------------------------------------------------- - -loc_6562: - xor ax, ax - -loc_6564: - jmp short loc_6568 -; --------------------------------------------------------------------------- - -loc_6566: - xor ax, ax - -loc_6568: - ; sub_6469:loc_6564j - pop di - pop si - mov sp, bp - pop bp - retn -sub_6469 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_656E proc near - ; sub_783F+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6599 - or [bp+var_4], 2 - -loc_6599: - test byte ptr [bp+arg_C], 2 - jz short loc_65AD - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_65AD - or [bp+var_4], 20h - -loc_65AD: - test byte ptr [bp+arg_C], 20h - jz short loc_65B7 - or [bp+var_4], 8 - -loc_65B7: - test byte ptr [bp+arg_C], 80h - jz short loc_65C1 - or [bp+var_4], 10h - -loc_65C1: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_65CA - jmp loc_674F -; --------------------------------------------------------------------------- - -loc_65CA: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_65D5 - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_65D5: - add bx, bx - jmp cs:off_688C[bx] - -loc_65DC: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_65EE: - ; sub_656E+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6600: - ; sub_656E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6626 -; --------------------------------------------------------------------------- - -loc_6614: - ; sub_656E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6626: - add sp, 0Ah - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_662C: - ; sub_656E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_663B: - ; sub_656E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_664A: - ; sub_656E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6670 -; --------------------------------------------------------------------------- - -loc_665E: - ; sub_656E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6670: - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6673: - ; sub_656E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6683: - ; sub_656E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_668B: - push bx - pop bx - call [bp+arg_8] - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6693: - ; sub_656E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_66A1: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_66B7 -; --------------------------------------------------------------------------- - -loc_66A6: - ; sub_656E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_66B4: - call [bp+arg_8] - -loc_66B7: - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_66BA: - ; sub_656E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_66D4 -; --------------------------------------------------------------------------- - -loc_66C8: - ; sub_656E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_66D1: - call [bp+arg_8] - -loc_66D4: - ; sub_656E+1FCj - pop cx - pop cx - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_66D9: - ; sub_656E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_66F0: - ; sub_656E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6707: - ; sub_656E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6710: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6721 -; --------------------------------------------------------------------------- - -loc_6715: - ; sub_656E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_671E: - call [bp+arg_8] - -loc_6721: - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6724: - ; sub_656E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_6738: - ; sub_656E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_674C: - ; sub_656E+1EEj - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_674F: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_675A - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_675A: - add bx, bx - jmp cs:off_685C[bx] - -loc_6761: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_66D4 -; --------------------------------------------------------------------------- - -loc_676D: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_66D1 -; --------------------------------------------------------------------------- - -loc_6776: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6796 -; --------------------------------------------------------------------------- - -loc_6787: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6796: - add sp, 8 - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_679C: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6710 -; --------------------------------------------------------------------------- - -loc_67A5: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_671E -; --------------------------------------------------------------------------- - -loc_67AE: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6855 -; --------------------------------------------------------------------------- - -loc_67BC: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_668B -; --------------------------------------------------------------------------- - -loc_67C5: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_66A1 -; --------------------------------------------------------------------------- - -loc_67D4: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_66B4 -; --------------------------------------------------------------------------- - -loc_67E3: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_67EF: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_67FB: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_680D: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_681F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_682A: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_6835: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_6855 -; --------------------------------------------------------------------------- - -loc_6845: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6855: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_656E endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_685C dw offset loc_6761 - dw offset loc_676D - dw offset loc_6776 - dw offset loc_6787 - dw offset loc_679C - dw offset loc_67A5 - dw offset loc_67C5 - dw offset loc_67D4 - dw offset loc_67AE - dw offset loc_67BC - dw offset loc_67C5 - dw offset loc_67D4 - dw offset loc_6855 - dw offset loc_6855 - dw offset loc_6855 - dw offset loc_6855 - dw offset loc_67E3 - dw offset loc_67EF - dw offset loc_67FB - dw offset loc_680D - dw offset loc_681F - dw offset loc_682A - dw offset loc_6835 - dw offset loc_6845 -off_688C dw offset loc_65DC - dw offset loc_65EE - dw offset loc_6600 - dw offset loc_6614 - dw offset loc_662C - dw offset loc_663B - dw offset loc_664A - dw offset loc_665E - dw offset loc_6673 - dw offset loc_6683 - dw offset loc_6693 - dw offset loc_66A6 - dw offset loc_674C - dw offset loc_674C - dw offset loc_674C - dw offset loc_674C - dw offset loc_66BA - dw offset loc_66C8 - dw offset loc_66D9 - dw offset loc_66F0 - dw offset loc_6707 - dw offset loc_6715 - dw offset loc_6724 - dw offset loc_6738 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_68BC proc near - ; sub_754B+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_68CF - mov ax, 2 - jmp short loc_68D1 -; --------------------------------------------------------------------------- - -loc_68CF: - xor ax, ax - -loc_68D1: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_68F7 - or [bp+var_6], 2 - -loc_68F7: - test byte ptr [bp+arg_8], 2 - jz short loc_690B - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_690B - or [bp+var_6], 20h - -loc_690B: - test byte ptr [bp+arg_8], 20h - jz short loc_6915 - or [bp+var_6], 8 - -loc_6915: - test byte ptr [bp+arg_8], 80h - jz short loc_691F - or [bp+var_6], 10h - -loc_691F: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_692A - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_692A: - add bx, bx - jmp cs:off_6A44[bx] - -loc_6931: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_693F: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_694D: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_695F: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_6971: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_69D7 -; --------------------------------------------------------------------------- - -loc_697C: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_69D4 -; --------------------------------------------------------------------------- - -loc_6984: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_699E -; --------------------------------------------------------------------------- - -loc_6992: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_699E: - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_69A1: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_69AF: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_6A3D -; --------------------------------------------------------------------------- - -loc_69BD: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_69D7 -; --------------------------------------------------------------------------- - -loc_69CB: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_69D4: - call [bp+arg_4] - -loc_69D7: - ; sub_68BC+10Dj - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_69D9: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_69E5: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_69F1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_69FF: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_6A0D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_6A18: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_6A23: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_6A3D -; --------------------------------------------------------------------------- - -loc_6A30: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_6A3D: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_68BC endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_6A44 dw offset loc_6931 - dw offset loc_693F - dw offset loc_694D - dw offset loc_695F - dw offset loc_6971 - dw offset loc_697C - dw offset loc_6984 - dw offset loc_6992 - dw offset loc_69A1 - dw offset loc_69AF - dw offset loc_69BD - dw offset loc_69CB - dw offset loc_6A3D - dw offset loc_6A3D - dw offset loc_6A3D - dw offset loc_6A3D - dw offset loc_69D9 - dw offset loc_69E5 - dw offset loc_69F1 - dw offset loc_69FF - dw offset loc_6A0D - dw offset loc_6A18 - dw offset loc_6A23 - dw offset loc_6A30 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6A74 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6A9F - or [bp+var_4], 2 - -loc_6A9F: - test byte ptr [bp+arg_8], 2 - jz short loc_6AA9 - or [bp+var_4], 4 - -loc_6AA9: - test byte ptr [bp+arg_8], 20h - jz short loc_6AB3 - or [bp+var_4], 8 - -loc_6AB3: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_6B26 - add bx, bx - jmp cs:off_6B2D[bx] - -loc_6AC2: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6ACB: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6AD4: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6AE8 -; --------------------------------------------------------------------------- - -loc_6ADF: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6AE8: - pop cx - pop cx - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6AEC: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6AFA -; --------------------------------------------------------------------------- - -loc_6AF4: - push [bp+arg_0] - call [bp+arg_4] - -loc_6AFA: - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6AFC: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6B06: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_6B26 -; --------------------------------------------------------------------------- - -loc_6B10: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6B24 -; --------------------------------------------------------------------------- - -loc_6B1B: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6B24: - jmp short $+2 - -loc_6B26: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6A74 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_6B2D dw offset loc_6AC2 - dw offset loc_6ACB - dw offset loc_6AD4 - dw offset loc_6ADF - dw offset loc_6AEC - dw offset loc_6AF4 - dw offset loc_6B10 - dw offset loc_6B1B - dw offset loc_6AFC - dw offset loc_6B06 - dw offset loc_6B10 - dw offset loc_6B1B - db 4 dup(0), 3, 6Eh - dw seg seg000 - db 14h dup(0), 5Ch, 6Eh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 45h, 6Bh - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 5Dh, 6Bh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6B93(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6B93 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6B75h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_6C1F -; --------------------------------------------------------------------------- - -loc_6BFC: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_6C1C - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_6C1C: - inc word ptr [bp+var_34] - -loc_6C1F: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_6BFC - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_6C7C - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_6C7E -; --------------------------------------------------------------------------- - -loc_6C7C: - xor ax, ax - -loc_6C7E: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6C98 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6C98: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_63D4 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 6430h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_6E22 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_656E - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_6E0D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6E0D: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6E22: - cmp [bp+arg_1E], 0 - jnz short loc_6E66 - test byte ptr [bp+var_2C], 2 - jz short loc_6E66 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_68BC - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6E66 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6E66: - ; sub_6B93+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6B93 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6B93 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6F56 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6F56: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6FA2 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6FAB -; --------------------------------------------------------------------------- - -loc_6FA2: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6FAB: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6B93 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6FC5 proc far - push si - push di - pop di - pop si - retf -sub_6FC5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6FCA proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_6FE4 - inc [bp+var_4] - -loc_6FE4: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6FC5 - jmp short loc_7032 -; --------------------------------------------------------------------------- - -loc_6FF1: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_701C - mov ax, dx - jmp short loc_7050 -; --------------------------------------------------------------------------- - -loc_701C: - cmp [bp+var_4], 0 - jz short loc_7029 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_7029: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_7032: - cmp [bp+var_2], 0FFFFh - jz short loc_7040 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_6FF1 - -loc_7040: - cmp [bp+var_4], 0 - jz short loc_704D - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_704D: - mov ax, 1 - -loc_7050: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6FCA endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_7081 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_7081: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6FCA - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_709D proc far - push si - push di - pop di - pop si - retf -sub_709D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 7514 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_709D - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_70CB - jmp loc_7181 -; --------------------------------------------------------------------------- - -loc_70CB: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_71CA -; --------------------------------------------------------------------------- - -loc_7181: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_71CA: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_71FB - cmp [bp+arg_0], 0FACEh - jnz short loc_71FB - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_7209 -; --------------------------------------------------------------------------- - -loc_71FB: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_7209: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_72DA - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_72DA: - cmp [bp+arg_A], 0 - jb short loc_72F2 - ja short loc_72E8 - cmp [bp+arg_8], 0Fh - jbe short loc_72F2 - -loc_72E8: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_72F2: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_7328 -; --------------------------------------------------------------------------- - -loc_72FF: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_7328: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_72FF - jnz short loc_7339 - cmp ax, [bp+arg_8] - jb short loc_72FF - -loc_7339: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6FCA - add sp, 8 - or ax, ax - jnz short loc_7384 - test byte ptr [bp+arg_4], 1 - jz short loc_73A4 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_7339 -; --------------------------------------------------------------------------- - -loc_7384: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6FCA - add sp, 8 - or ax, ax - jz short loc_73A4 - jmp loc_750F -; --------------------------------------------------------------------------- - -loc_73A4: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_73AE - jmp loc_748E -; --------------------------------------------------------------------------- - -loc_73AE: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7514 -; --------------------------------------------------------------------------- - -loc_748E: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7514 -; --------------------------------------------------------------------------- - -loc_750F: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_7514: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 83h, 75h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 21h, 75h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_754B proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7539h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_68BC - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_758D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_758D: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_754B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_759B proc near - ; sub_7AE5+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7616 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_760E - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_754B - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_760E: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_7616: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_766D - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7665 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7665 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_754B - add sp, 0Ah - -loc_7665: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_766D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_759B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6B93+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_759B - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_76F0 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_76F8: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_7715 - xor ax, ax - jmp loc_77B6 -; --------------------------------------------------------------------------- - -loc_7715: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_7741 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7741: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_779A - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_77AF - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_77AF - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_76F0 - add sp, 0Ch - or ax, ax - jz short loc_77AF - -loc_779A: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_77B6 -; --------------------------------------------------------------------------- - -loc_77AF: - add word ptr [bp+arg_0], 8 - jmp loc_76F8 -; --------------------------------------------------------------------------- - -loc_77B6: - pop di - pop si - mov sp, bp - pop bp - retn -sub_76F0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_77BC proc far - ; sub_783F+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_782D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_76F0 - add sp, 0Ch - or ax, ax - jnz short loc_782D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_76F0 - add sp, 0Ch - or ax, ax - jz short loc_7835 - -loc_782D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7839 -; --------------------------------------------------------------------------- - -loc_7835: - xor dx, dx - xor ax, ax - -loc_7839: - pop di - pop si - mov sp, bp - pop bp - retf -sub_77BC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall sub_783F(int, int, int, __int32, int, __int32, __int32, int) -sub_783F proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_6 = dword ptr 0Ah -arg_A = word ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, dword ptr [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_786E - jmp loc_7ADF -; --------------------------------------------------------------------------- - -loc_786E: - les bx, dword ptr [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_787B - jmp loc_7ADF -; --------------------------------------------------------------------------- - -loc_787B: - les bx, dword ptr [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, dword ptr [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_78EF - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_78EF: - test cl, 10h - jz short loc_7917 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_7917 - push [bp+n] - xor ax, ax - push ax ; n - push ss ; c - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - nopcall _memset - add sp, 8 - jmp loc_7A42 -; --------------------------------------------------------------------------- - -loc_7917: - test dl, 1 - jnz short loc_791F - jmp loc_79C3 -; --------------------------------------------------------------------------- - -loc_791F: - test cl, 30h - jnz short loc_7927 - jmp loc_79C3 -; --------------------------------------------------------------------------- - -loc_7927: - test cl, 20h - jz short loc_792E - jmp short loc_7951 -; --------------------------------------------------------------------------- - -loc_792E: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7958 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_7951: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7958: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_79B9 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_77BC - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_79B4 - cmp ax, [bp+var_18] - jz short loc_79B9 - -loc_79B4: - mov [bp+var_14], 1 - -loc_79B9: - ; sub_783F+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_7A8D -; --------------------------------------------------------------------------- - -loc_79C3: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7A49 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_7A12 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_77BC - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_7A12: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_7A90 - les bx, dword ptr [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, dword ptr [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_656E - add sp, 0Eh - -loc_7A42: - ; sub_783F+227j - mov [bp+var_14], 1 - jmp short loc_7AA9 -; --------------------------------------------------------------------------- - -loc_7A49: - test cl, 20h - jz short loc_7A68 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_7A42 -; --------------------------------------------------------------------------- - -loc_7A68: - test cl, 10h - jz short loc_7A90 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_7A90 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_7A8D: - push ax - jmp short loc_7A99 -; --------------------------------------------------------------------------- - -loc_7A90: - ; sub_783F+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7A99: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7AA9: - cmp [bp+var_14], 0 - jnz short loc_7ADF - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7AD7 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_754B - add sp, 0Ah - -loc_7AD7: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_7ADF: - pop di - pop si - mov sp, bp - pop bp - retn -sub_783F endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7AE5 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7C8A -; --------------------------------------------------------------------------- - -loc_7B3D: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7B78 - jmp loc_7C87 -; --------------------------------------------------------------------------- - -loc_7B78: - add bx, bx - jmp cs:off_7CA4[bx] - -loc_7B7F: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_13FB0+2, dx - mov word ptr dword_13FB0, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_13FB0 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7C87 -; --------------------------------------------------------------------------- - -loc_7BBA: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_7BE9 -; --------------------------------------------------------------------------- - -loc_7BC9: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_7BE3 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_7BE3 - jmp short loc_7C03 -; --------------------------------------------------------------------------- - -loc_7BE3: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_7BE9: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7BC9 - -loc_7C03: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_759B - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7C87 -; --------------------------------------------------------------------------- - -loc_7C3C: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_86BB - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7C87: - mov ax, [bp+var_8] - -loc_7C8A: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_7C9E - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_7C9E - jmp loc_7B3D -; --------------------------------------------------------------------------- - -loc_7C9E: - ; sub_7AE5+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_7AE5 endp - -; --------------------------------------------------------------------------- -off_7CA4 dw offset loc_7B7F - dw offset loc_7C87 - dw offset loc_7C87 - dw offset loc_7C87 - dw offset loc_7BBA - dw offset loc_7C3C - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_7AE5 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_7AE5 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CFA proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7D68 -; --------------------------------------------------------------------------- - -loc_7D13: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_7D5C - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6469 - add sp, 10h - or ax, ax - jz short loc_7D64 - -loc_7D5C: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7D78 -; --------------------------------------------------------------------------- - -loc_7D64: - add word ptr [bp+var_4], 10h - -loc_7D68: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7D13 - xor dx, dx - xor ax, ax - -loc_7D78: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7CFA endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = dword ptr -26h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_7E12 - jmp loc_7EBA -; --------------------------------------------------------------------------- - -loc_7E12: - xor ax, ax - push ax - push [bp+var_4] - call sub_7AE5 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7E2B - jmp loc_80ED -; --------------------------------------------------------------------------- - -loc_7E2B: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7E35 - jmp loc_80ED -; --------------------------------------------------------------------------- - -loc_7E35: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_7E50 - jmp loc_80ED -; --------------------------------------------------------------------------- - -loc_7E50: - jmp short loc_7E8E -; --------------------------------------------------------------------------- - -loc_7E52: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6469 - add sp, 10h - or ax, ax - jz short loc_7E8A - jmp loc_80ED -; --------------------------------------------------------------------------- - -loc_7E8A: - add word ptr [bp+var_20], 4 - -loc_7E8E: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7E52 - mov ax, ss:14h - mov [bp-22h], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, [bp-22h] - mov ss:14h, ax - jmp loc_80ED -; --------------------------------------------------------------------------- - -loc_7EBA: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_80E1 -; --------------------------------------------------------------------------- - -loc_7EC4: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_7EF5 - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_7EF5: - add bx, bx - jmp cs:off_80F6[bx] - -loc_7EFC: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7F0A - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_7F0A: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7F14 - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_7F14: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push word ptr [bp+var_26] - push [bp+var_28] - call sub_7CFA - add sp, 8 - mov [bp-22h], dx - mov word ptr [bp+var_26+2], ax - mov ax, word ptr [bp+var_26+2] - or ax, [bp-22h] - jnz short loc_7F4E - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_7F4E: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, [bp-22h] - mov ax, word ptr [bp+var_26+2] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_26+2] - -loc_7F82: - mov dx, es:[bx+2] ; int - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_7AE5 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] ; int - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_7FD4 - push [bp+var_16] - push word ptr [bp+var_26] ; __int32 - push [bp+var_28] ; int - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] ; __int32 - push [bp+var_4] - push word ptr [bp-22h] ; __int32 - push word ptr [bp+var_26+2] ; int - call sub_783F - add sp, 10h - -loc_7FD4: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_7FED: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8002 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8002 - jmp loc_80DE -; --------------------------------------------------------------------------- - -loc_8002: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_13FB4+2, dx - mov word ptr dword_13FB4, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_13FB4 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_8099 -; --------------------------------------------------------------------------- - -loc_8064: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8078 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8078 - jmp short loc_80DE -; --------------------------------------------------------------------------- - -loc_8078: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_8099: - cmp [bp+var_38], 0 - jge short loc_80B7 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_80B3 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_80B3: - xor ax, ax - jmp short loc_80F0 -; --------------------------------------------------------------------------- - -loc_80B7: - cmp [bp+var_38], 0 - jnz short loc_80BF - jmp short loc_80DE -; --------------------------------------------------------------------------- - -loc_80BF: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7F82 -; --------------------------------------------------------------------------- - -loc_80DE: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_80E1: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_80ED - jmp loc_7EC4 -; --------------------------------------------------------------------------- - -loc_80ED: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_80F0: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_80F6 dw offset loc_80DE - dw offset loc_7FED - dw offset loc_8064 - dw offset loc_7EFC - dw offset loc_80DE - dw offset loc_80DE - db 4 dup(0), 95h, 81h - dw seg seg000 - db 14h dup(0), 0A5h, 81h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 1Ah, 81h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 2, 81h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8150 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8132h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_68BC - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_819E -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_819E: - mov [bp+var_12], 0 - jmp short loc_81AE -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_81AE: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_8150 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_81BC proc far - ; sub_823D+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_822B -; --------------------------------------------------------------------------- - -loc_81C9: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_81F1 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_81F1: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_822B - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_823D - add sp, 10h - xor cx, cx - -loc_822B: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_81C9 - pop di - pop si - mov sp, bp - pop bp - retf -sub_81BC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_823D proc far - ; sub_823D+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_8254 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_825B -; --------------------------------------------------------------------------- - -loc_8254: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_825B: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_827D - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_8296 - jnz short loc_827D - cmp ax, [bp+var_1C] - jb short loc_8296 - -loc_827D: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8150 - add sp, 0Ah - jmp loc_8502 -; --------------------------------------------------------------------------- - -loc_8296: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_832F - -loc_82C1: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_832F - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8329 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8322 - jnz short loc_82F8 - cmp bx, [bp+var_1C] - jb short loc_8322 - -loc_82F8: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8312: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_81BC - add sp, 12h - jmp loc_8502 -; --------------------------------------------------------------------------- - -loc_8322: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8329: - add word ptr [bp+var_10], 8 - jmp short loc_82C1 -; --------------------------------------------------------------------------- - -loc_832F: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_8348: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_83BE - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_83B8 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_83B1 - jnz short loc_837F - cmp bx, [bp+var_1C] - jb short loc_83B1 - -loc_837F: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_81BC - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_83AE - jmp loc_8502 -; --------------------------------------------------------------------------- - -loc_83AE: - jmp loc_84E2 -; --------------------------------------------------------------------------- - -loc_83B1: - ; sub_823D+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_83B8: - add word ptr [bp+var_8], 8 - jmp short loc_8348 -; --------------------------------------------------------------------------- - -loc_83BE: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_83D7: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8411 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8411: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_8435 - jb short loc_842B - cmp bx, [bp+var_1C] - jnb short loc_8435 - -loc_842B: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_84FB -; --------------------------------------------------------------------------- - -loc_8435: - ; sub_823D+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_8481 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_8508 - add sp, 0Eh - jmp short loc_84A1 -; --------------------------------------------------------------------------- - -loc_8481: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_823D - add sp, 10h - -loc_84A1: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_84BA - jmp loc_8435 -; --------------------------------------------------------------------------- - -loc_84BA: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_81BC - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8502 - -loc_84E2: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8312 -; --------------------------------------------------------------------------- - -loc_84FB: - add word ptr [bp+var_18], 6 - jmp loc_83D7 -; --------------------------------------------------------------------------- - -loc_8502: - pop di - pop si - mov sp, bp - pop bp - retf -sub_823D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8508 proc far - ; sub_86BB+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_8562 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_8562: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_85F2 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_85DF -; --------------------------------------------------------------------------- - -loc_85C0: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_85DF: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_823D - add sp, 10h - -loc_85F2: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_85C0 - pop di - pop si - mov sp, bp - pop bp - retf -sub_8508 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_860A proc far - ; sub_86BB+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_86AF - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_86AF - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8669 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_8672 -; --------------------------------------------------------------------------- - -loc_8669: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_8672: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_86AF: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_860A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_86BB proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_86D1 - jmp loc_8ABE -; --------------------------------------------------------------------------- - -loc_86D1: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_872A - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_872A: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_8741 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_8AC0 -; --------------------------------------------------------------------------- - -loc_8741: - cmp [bp+var_6], 0 - jg short loc_8773 - jnz short loc_874F - cmp [bp+var_8], 0 - ja short loc_8773 - -loc_874F: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_8761 - jmp loc_8ABE -; --------------------------------------------------------------------------- - -loc_8761: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_88D8 -; --------------------------------------------------------------------------- - -loc_8773: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_877F: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8792 - sub word ptr [bp+var_C], 0Ah - jmp loc_88D8 -; --------------------------------------------------------------------------- - -loc_8792: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_87BA - jmp loc_8884 -; --------------------------------------------------------------------------- - -loc_87BA: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_87DE - jmp loc_8884 -; --------------------------------------------------------------------------- - -loc_87DE: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_87EB - jmp loc_8884 -; --------------------------------------------------------------------------- - -loc_87EB: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_87F8 - jmp loc_8884 -; --------------------------------------------------------------------------- - -loc_87F8: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8811 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_881F -; --------------------------------------------------------------------------- - -loc_8811: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_881F: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8847 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8850 -; --------------------------------------------------------------------------- - -loc_8847: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8850: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8861 - add word ptr [bp+var_1C], 4 - -loc_8861: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_860A - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8884: - ; sub_86BB+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_88A9 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_88A9: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_88C7 - jnz short loc_88D8 - cmp ax, [bp+var_8] - jnb short loc_88D8 - -loc_88C7: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_877F -; --------------------------------------------------------------------------- - -loc_88D8: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_8907 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_8915 -; --------------------------------------------------------------------------- - -loc_8907: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_8915: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_8921 - jmp loc_89AB -; --------------------------------------------------------------------------- - -loc_8921: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8953 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_895C -; --------------------------------------------------------------------------- - -loc_8953: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_895C: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_897A - add [bp+var_18], 4 - -loc_897A: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_89AB - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_89AB - test byte ptr [bp+var_16+2], 8 - jz short loc_89AB - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_860A - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_89AB: - ; sub_86BB+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_89F9 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_89D9 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8508 - add sp, 0Eh - jmp short loc_89F9 -; --------------------------------------------------------------------------- - -loc_89D9: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_823D - add sp, 10h - -loc_89F9: - ; sub_86BB+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_8A07 - jmp loc_8AA5 -; --------------------------------------------------------------------------- - -loc_8A07: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_8A16 - sub word ptr [bp+driver], 4 - -loc_8A16: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8A65 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8A52 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8A84 -; --------------------------------------------------------------------------- - -loc_8A52: - test byte ptr [bp+var_16+2], 80h - jz short loc_8AA5 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8AA3 -; --------------------------------------------------------------------------- - -loc_8A65: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8A92 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8A84: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6A74 - add sp, 0Ah - jmp short loc_8AA5 -; --------------------------------------------------------------------------- - -loc_8A92: - test byte ptr [bp+var_16+2], 80h - jz short loc_8AA5 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8AA3: - pop cx - pop cx - -loc_8AA5: - ; sub_86BB+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_8ABE - jmp loc_88D8 -; --------------------------------------------------------------------------- - -loc_8ABE: - xor ax, ax - -loc_8AC0: - pop di - pop si - mov sp, bp - pop bp - retn -sub_86BB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_8B09 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 0F57h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_8B0E - -loc_8B09: - mov ax, 0FFFFh - jmp short loc_8B15 -; --------------------------------------------------------------------------- - -loc_8B0E: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_8B15: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_8B71 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_8BAF - -loc_8B71: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 914Dh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 912Fh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8BAF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_8BFA - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 914Dh - test dl, 1 - jz short loc_8BFA - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_8BFA: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_6070 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8C5E - xor ax, ax - jmp short loc_8CB7 -; --------------------------------------------------------------------------- - -loc_8C5E: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8C70 - mov ax, 1 - jmp short loc_8CB7 -; --------------------------------------------------------------------------- - -loc_8C70: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8CB5 - mov ax, 1 - jmp short loc_8CB7 -; --------------------------------------------------------------------------- - -loc_8CB5: - xor ax, ax - -loc_8CB7: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_604B - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8D19 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 1D28h - push ax ; src - push cs ; int - mov ax, 9119h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8D19: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8D5A proc near - ; sub_8D5A+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8D95 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_8D9F - -loc_8D95: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8DA6 - -loc_8D9F: - xor dx, dx - xor ax, ax - jmp loc_8F9A -; --------------------------------------------------------------------------- - -loc_8DA6: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8DB8: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8DBE: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_8DD9 - jmp loc_8F62 -; --------------------------------------------------------------------------- - -loc_8DD9: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_8DE6 - jmp loc_8F5B -; --------------------------------------------------------------------------- - -loc_8DE6: - cmp [bp+arg_1A], 0 - jz short loc_8E00 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_8E00 - mov ax, 1 - jmp short loc_8E02 -; --------------------------------------------------------------------------- - -loc_8E00: - xor ax, ax - -loc_8E02: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_8E49 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_8E49: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_8ECB - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_8E6D - jmp loc_8F5B -; --------------------------------------------------------------------------- - -loc_8E6D: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8D5A - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8EB4 - jmp loc_8F5B -; --------------------------------------------------------------------------- - -loc_8EB4: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_8F28 -; --------------------------------------------------------------------------- - -loc_8ECB: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8EEC - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_8F5B - cmp ax, word ptr [bp+var_14] - jnz short loc_8F5B - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8F9A -; --------------------------------------------------------------------------- - -loc_8EEC: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_8F28 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8D5A - add sp, 20h - or ax, dx - jz short loc_8F5B - -loc_8F28: - ; sub_8D5A+198j - cmp [bp+var_E], 0 - jz short loc_8F46 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_8F46 - cmp ax, [bp+var_C] - jnz short loc_8F46 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_8F5B -; --------------------------------------------------------------------------- - -loc_8F46: - ; sub_8D5A+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_8F5B: - ; sub_8D5A+110j ... - add word ptr [bp+var_4], 8 - jmp loc_8DBE -; --------------------------------------------------------------------------- - -loc_8F62: - cmp [bp+var_6], 0 - jnz short loc_8F7B - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8DB8 -; --------------------------------------------------------------------------- - -loc_8F7B: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8F94 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8F94: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8F9A: - ; sub_8D5A+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_8D5A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8FCB - jmp loc_90CF -; --------------------------------------------------------------------------- - -loc_8FCB: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_9021 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jz short loc_902A - -loc_9021: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_90FF -; --------------------------------------------------------------------------- - -loc_902A: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_6070 - add sp, 8 - or ax, ax - jnz short loc_9083 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8D5A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_90C7 - -loc_9083: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8D5A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_90CF - cmp [bp+var_16], 0 - jz short loc_90CF - -loc_90C7: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_90FF -; --------------------------------------------------------------------------- - -loc_90CF: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_90FB - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 1D29h - push ax ; src - push cs ; int - mov ax, 9105h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_90FB: - xor dx, dx - xor ax, ax - -loc_90FF: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 51h, 91h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 51h, 91h - dw seg seg000 - db 4 dup(0), 0CAh, 8Bh - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 0CAh, 8Bh - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm unknown_libname_3 db 0BAh, 60h, 0Fh, 0EBh, 3, 0BAh, 65h, 0Fh, 0B9h, 5, 0 db 0B4h, 40h, 0BBh, 2, 0, 0CDh, 21h, 0B9h, 27h, 0, 0BAh db 6Ah, 0Fh, 0B4h, 40h, 0CDh, 21h, 0E9h, 9Bh, 8Ah @@ -36389,8 +29701,7 @@ word_131D8 dw 0 word_131DA dw 0 ; sub_554E+30w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm aPrintScanfFloa db 'print scanf : floating point formats not linked',0Dh,0Ah,0 word_13222 dw 0 word_13224 dw 0 @@ -37465,9 +30776,7 @@ byte_13FAC db ? db ? include libs/BorlandC/putc[bss].asm db ? -dword_13FB0 dd ? -dword_13FB4 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dw ? diff --git a/th01_reiiden.asm b/th01_reiiden.asm index b631fcfc..f620e538 100644 --- a/th01_reiiden.asm +++ b/th01_reiiden.asm @@ -13232,6594 +13232,7 @@ __xfclose endp include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_74BE proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_74D2 - mov dx, ds - mov ax, 202Ah - jmp short loc_74DF -; --------------------------------------------------------------------------- - -loc_74D2: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_74DF: - pop di - pop si - pop bp - retf -sub_74BE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_74E3 proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_74FB - cmp ax, word ptr [bp+arg_4] - jz short loc_7577 - -loc_74FB: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_756F - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_756F - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_756F - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7551: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_7573 - -loc_756F: - xor ax, ax - jmp short loc_757A -; --------------------------------------------------------------------------- - -loc_7573: - or dx, dx - jnz short loc_7551 - -loc_7577: - mov ax, 1 - -loc_757A: - pop di - pop si - mov sp, bp - pop bp - retf -sub_74E3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7580 proc near - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_759B: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_762F - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_7628 - cmp [bp+arg_C], 0 - jz short loc_75D7 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_75D7 - mov ax, 1 - jmp short loc_75D9 -; --------------------------------------------------------------------------- - -loc_75D7: - xor ax, ax - -loc_75D9: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jz short loc_75FC - cmp [bp+var_6], 0 - jz short loc_75FC - jmp loc_76BF -; --------------------------------------------------------------------------- - -loc_75FC: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_7628 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_7580 - add sp, 0Eh - or ax, ax - jz short loc_7628 - jmp loc_76BF -; --------------------------------------------------------------------------- - -loc_7628: - add word ptr [bp+var_4], 8 - jmp loc_759B -; --------------------------------------------------------------------------- - -loc_762F: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7642: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_76CB - cmp [bp+arg_C], 0 - jz short loc_7674 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_7674 - mov ax, 1 - jmp short loc_7676 -; --------------------------------------------------------------------------- - -loc_7674: - xor ax, ax - -loc_7676: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jz short loc_7696 - cmp [bp+var_6], 0 - jnz short loc_76BF - -loc_7696: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_76C4 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_7580 - add sp, 0Eh - or ax, ax - jz short loc_76C4 - -loc_76BF: - mov ax, 1 - jmp short loc_76CD -; --------------------------------------------------------------------------- - -loc_76C4: - add word ptr [bp+var_4], 8 - jmp loc_7642 -; --------------------------------------------------------------------------- - -loc_76CB: - xor ax, ax - -loc_76CD: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7580 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_76D3 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_76DE: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_76F1 - cmp ax, word ptr [bp+arg_4] - jnz short loc_76F1 - jmp loc_7806 -; --------------------------------------------------------------------------- - -loc_76F1: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_7781 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_7724 - jmp loc_77C7 -; --------------------------------------------------------------------------- - -loc_7724: - or cx, cx - jz short loc_772B - jmp loc_783F -; --------------------------------------------------------------------------- - -loc_772B: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_7761 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_774F - jmp loc_783F -; --------------------------------------------------------------------------- - -loc_774F: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_77C7 - -loc_7761: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_7775 - jmp loc_783F -; --------------------------------------------------------------------------- - -loc_7775: - test byte ptr [bp+var_2+1], 10h - jnz short loc_777E - jmp loc_783F -; --------------------------------------------------------------------------- - -loc_777E: - jmp loc_7806 -; --------------------------------------------------------------------------- - -loc_7781: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_77EF - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_77A6 - cmp ax, es:[bx+0Ah] - jz short loc_77C7 - -loc_77A6: - or cx, cx - jz short loc_77AD - jmp loc_783F -; --------------------------------------------------------------------------- - -loc_77AD: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_783F - -loc_77C7: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_76DE -; --------------------------------------------------------------------------- - -loc_77EF: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jz short loc_780B - -loc_7806: - mov ax, 1 - jmp short loc_7841 -; --------------------------------------------------------------------------- - -loc_780B: - test byte ptr [bp+var_2], 2 - jz short loc_783F - test byte ptr [bp+var_4], 1 - jz short loc_783F - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_783F - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_7580 - add sp, 0Eh - jmp short loc_7841 -; --------------------------------------------------------------------------- - -loc_783F: - xor ax, ax - -loc_7841: - pop di - pop si - mov sp, bp - pop bp - retn -sub_76D3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7847 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7897 - cmp [bp+arg_0], 80h ; '€' - ja short loc_7879 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_787E - -loc_7879: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_787E: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_789D -; --------------------------------------------------------------------------- - -loc_7897: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_789D: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7847 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_78A3 proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+arg_2] - jnz short loc_78CB - cmp ax, [bp+arg_0] - jnz short loc_78CB - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_78D8 -; --------------------------------------------------------------------------- - -loc_78CB: - push [bp+arg_2] - push [bp+arg_0] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_78D8: - pop di - pop si - pop bp - retf -sub_78A3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78DC proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_76D3 - add sp, 0Eh - or ax, ax - jz short loc_7906 - jmp loc_79A2 -; --------------------------------------------------------------------------- - -loc_7906: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_7996 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_76D3 - add sp, 0Eh - or ax, ax - jnz short loc_79A2 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_79D9 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_76D3 - add sp, 0Eh - or ax, ax - jnz short loc_79A2 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_79D9 - -loc_7996: - test byte ptr [bp+var_4], 10h - jz short loc_79D9 - test [bp+arg_C], 1 - jz short loc_79A7 - -loc_79A2: - mov ax, 1 - jmp short loc_79DB -; --------------------------------------------------------------------------- - -loc_79A7: - test byte ptr [bp+var_2], 10h - jz short loc_79D9 - test byte ptr [bp+var_2+1], 20h - jz short loc_79B9 - test byte ptr [bp+var_4+1], 20h - jz short loc_79D9 - -loc_79B9: - test byte ptr [bp+var_4], 40h - jz short loc_79D9 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_79D5 - mov ax, 1 - jmp short loc_79D7 -; --------------------------------------------------------------------------- - -loc_79D5: - xor ax, ax - -loc_79D7: - jmp short loc_79DB -; --------------------------------------------------------------------------- - -loc_79D9: - xor ax, ax - -loc_79DB: - pop di - pop si - mov sp, bp - pop bp - retn -sub_78DC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_79E1 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_7A0C - or [bp+var_4], 2 - -loc_7A0C: - test byte ptr [bp+arg_C], 2 - jz short loc_7A20 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_7A20 - or [bp+var_4], 20h - -loc_7A20: - test byte ptr [bp+arg_C], 20h - jz short loc_7A2A - or [bp+var_4], 8 - -loc_7A2A: - test byte ptr [bp+arg_C], 80h - jz short loc_7A34 - or [bp+var_4], 10h - -loc_7A34: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_7A3D - jmp loc_7BC2 -; --------------------------------------------------------------------------- - -loc_7A3D: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7A48 - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7A48: - add bx, bx - jmp cs:off_7CFF[bx] - -loc_7A4F: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7A61: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7A73: - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_7A99 -; --------------------------------------------------------------------------- - -loc_7A87: - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_7A99: - add sp, 0Ah - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7A9F: - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7AAE: - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7ABD: - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_7AE3 -; --------------------------------------------------------------------------- - -loc_7AD1: - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_7AE3: - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7AE6: - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7AF6: - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_7AFE: - push bx - pop bx - call [bp+arg_8] - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B06: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_7B14: - call word ptr [bp+arg_8] - jmp short loc_7B2A -; --------------------------------------------------------------------------- - -loc_7B19: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_7B27: - call [bp+arg_8] - -loc_7B2A: - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B2D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_7B47 -; --------------------------------------------------------------------------- - -loc_7B3B: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_7B44: - call [bp+arg_8] - -loc_7B47: - pop cx - pop cx - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B4C: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B63: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B7A: - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7B83: - call word ptr [bp+arg_8] - jmp short loc_7B94 -; --------------------------------------------------------------------------- - -loc_7B88: - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7B91: - call [bp+arg_8] - -loc_7B94: - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7B97: - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7BAB: - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7BBF: - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7BC2: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7BCD - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7BCD: - add bx, bx - jmp cs:off_7CCF[bx] - -loc_7BD4: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_7B47 -; --------------------------------------------------------------------------- - -loc_7BE0: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7B44 -; --------------------------------------------------------------------------- - -loc_7BE9: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_7C09 -; --------------------------------------------------------------------------- - -loc_7BFA: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_7C09: - add sp, 8 - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C0F: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7B83 -; --------------------------------------------------------------------------- - -loc_7C18: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7B91 -; --------------------------------------------------------------------------- - -loc_7C21: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C2F: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_7AFE -; --------------------------------------------------------------------------- - -loc_7C38: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_7B14 -; --------------------------------------------------------------------------- - -loc_7C47: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_7B27 -; --------------------------------------------------------------------------- - -loc_7C56: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C62: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C6E: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C80: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C92: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7C9D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7CA8: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_7CC8 -; --------------------------------------------------------------------------- - -loc_7CB8: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_7CC8: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_79E1 endp - -; --------------------------------------------------------------------------- -off_7CCF dw offset loc_7BD4 - dw offset loc_7BE0 - dw offset loc_7BE9 - dw offset loc_7BFA - dw offset loc_7C0F - dw offset loc_7C18 - dw offset loc_7C38 - dw offset loc_7C47 - dw offset loc_7C21 - dw offset loc_7C2F - dw offset loc_7C38 - dw offset loc_7C47 - dw offset loc_7CC8 - dw offset loc_7CC8 - dw offset loc_7CC8 - dw offset loc_7CC8 - dw offset loc_7C56 - dw offset loc_7C62 - dw offset loc_7C6E - dw offset loc_7C80 - dw offset loc_7C92 - dw offset loc_7C9D - dw offset loc_7CA8 - dw offset loc_7CB8 -off_7CFF dw offset loc_7A4F - dw offset loc_7A61 - dw offset loc_7A73 - dw offset loc_7A87 - dw offset loc_7A9F - dw offset loc_7AAE - dw offset loc_7ABD - dw offset loc_7AD1 - dw offset loc_7AE6 - dw offset loc_7AF6 - dw offset loc_7B06 - dw offset loc_7B19 - dw offset loc_7BBF - dw offset loc_7BBF - dw offset loc_7BBF - dw offset loc_7BBF - dw offset loc_7B2D - dw offset loc_7B3B - dw offset loc_7B4C - dw offset loc_7B63 - dw offset loc_7B7A - dw offset loc_7B88 - dw offset loc_7B97 - dw offset loc_7BAB - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7D2F proc near - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_7D42 - mov ax, 2 - jmp short loc_7D44 -; --------------------------------------------------------------------------- - -loc_7D42: - xor ax, ax - -loc_7D44: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7D6A - or [bp+var_6], 2 - -loc_7D6A: - test byte ptr [bp+arg_8], 2 - jz short loc_7D7E - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_7D7E - or [bp+var_6], 20h - -loc_7D7E: - test byte ptr [bp+arg_8], 20h - jz short loc_7D88 - or [bp+var_6], 8 - -loc_7D88: - test byte ptr [bp+arg_8], 80h - jz short loc_7D92 - or [bp+var_6], 10h - -loc_7D92: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_7D9D - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7D9D: - add bx, bx - jmp cs:off_7EB7[bx] - -loc_7DA4: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7DB2: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7DC0: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7DD2: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7DE4: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7E4A -; --------------------------------------------------------------------------- - -loc_7DEF: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_7E47 -; --------------------------------------------------------------------------- - -loc_7DF7: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7E11 -; --------------------------------------------------------------------------- - -loc_7E05: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_7E11: - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E14: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E22: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E30: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7E4A -; --------------------------------------------------------------------------- - -loc_7E3E: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_7E47: - call [bp+arg_4] - -loc_7E4A: - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E4C: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E58: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E64: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E72: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E80: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E8B: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7E96: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_7EB0 -; --------------------------------------------------------------------------- - -loc_7EA3: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_7EB0: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7D2F endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7EB7 dw offset loc_7DA4 - dw offset loc_7DB2 - dw offset loc_7DC0 - dw offset loc_7DD2 - dw offset loc_7DE4 - dw offset loc_7DEF - dw offset loc_7DF7 - dw offset loc_7E05 - dw offset loc_7E14 - dw offset loc_7E22 - dw offset loc_7E30 - dw offset loc_7E3E - dw offset loc_7EB0 - dw offset loc_7EB0 - dw offset loc_7EB0 - dw offset loc_7EB0 - dw offset loc_7E4C - dw offset loc_7E58 - dw offset loc_7E64 - dw offset loc_7E72 - dw offset loc_7E80 - dw offset loc_7E8B - dw offset loc_7E96 - dw offset loc_7EA3 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7EE7 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7F12 - or [bp+var_4], 2 - -loc_7F12: - test byte ptr [bp+arg_8], 2 - jz short loc_7F1C - or [bp+var_4], 4 - -loc_7F1C: - test byte ptr [bp+arg_8], 20h - jz short loc_7F26 - or [bp+var_4], 8 - -loc_7F26: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_7F99 - add bx, bx - jmp cs:off_7FA0[bx] - -loc_7F35: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F3E: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F47: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7F5B -; --------------------------------------------------------------------------- - -loc_7F52: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7F5B: - pop cx - pop cx - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F5F: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7F6D -; --------------------------------------------------------------------------- - -loc_7F67: - push [bp+arg_0] - call [bp+arg_4] - -loc_7F6D: - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F6F: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F79: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F83: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7F97 -; --------------------------------------------------------------------------- - -loc_7F8E: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7F97: - jmp short $+2 - -loc_7F99: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7EE7 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7FA0 dw offset loc_7F35 - dw offset loc_7F3E - dw offset loc_7F47 - dw offset loc_7F52 - dw offset loc_7F5F - dw offset loc_7F67 - dw offset loc_7F83 - dw offset loc_7F8E - dw offset loc_7F6F - dw offset loc_7F79 - dw offset loc_7F83 - dw offset loc_7F8E - db 4 dup(0), 76h, 82h - dw seg seg000 - db 14h dup(0), 0CFh, 82h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0B8h, 7Fh - dw seg seg000 - db 0 - db 0 - db 4, 3 dup(0), 3, 0, 0D0h, 7Fh - dw seg seg000 - db 0 - db 0 - db 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_8006(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_8006 proc far - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -_src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 7FE8h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_8092 -; --------------------------------------------------------------------------- - -loc_806F: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_808F - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_808F: - inc word ptr [bp+var_34] - -loc_8092: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_806F - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_80EF - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_80F1 -; --------------------------------------------------------------------------- - -loc_80EF: - xor ax, ax - -loc_80F1: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_810B - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_810B: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_7847 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], offset sub_78A3 - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_8295 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_79E1 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_8280 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8280: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_8295: - cmp [bp+arg_1E], 0 - jnz short loc_82D9 - test byte ptr [bp+var_2C], 2 - jz short loc_82D9 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - call sub_7D2F - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_82D9 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_82D9: - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_8006 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -_src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_8006 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_83C9 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_83C9: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_8415 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_841E -; --------------------------------------------------------------------------- - -loc_8415: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_841E: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_8006 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_8438 proc far - push si - push di - pop di - pop si - retf -sub_8438 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_843D proc far - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_8457 - inc [bp+var_4] - -loc_8457: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_8438 - jmp short loc_84A5 -; --------------------------------------------------------------------------- - -loc_8464: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_848F - mov ax, dx - jmp short loc_84C3 -; --------------------------------------------------------------------------- - -loc_848F: - cmp [bp+var_4], 0 - jz short loc_849C - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_849C: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_84A5: - cmp [bp+var_2], 0FFFFh - jz short loc_84B3 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_8464 - -loc_84B3: - cmp [bp+var_4], 0 - jz short loc_84C0 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_84C0: - mov ax, 1 - -loc_84C3: - pop di - pop si - mov sp, bp - pop bp - retf -sub_843D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_84F4 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_84F4: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_843D - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_8510 proc far - push si - push di - pop di - pop si - retf -sub_8510 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -_src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 8987 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_8510 - pop cx - pushf - pop ax - mov word ptr [bp+_src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_853E - jmp loc_85F4 -; --------------------------------------------------------------------------- - -loc_853E: - pushad - mov word ptr [bp+_src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+_src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+_src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_863D -; --------------------------------------------------------------------------- - -loc_85F4: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+_src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_863D: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_866E - cmp [bp+arg_0], 0FACEh - jnz short loc_866E - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_867C -; --------------------------------------------------------------------------- - -loc_866E: - mov word ptr [bp+_src], bp - mov bx, word ptr [bp+_src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_867C: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_874D - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_874D: - cmp [bp+arg_A], 0 - jb short loc_8765 - ja short loc_875B - cmp [bp+arg_8], 0Fh - jbe short loc_8765 - -loc_875B: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_8765: - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_879B -; --------------------------------------------------------------------------- - -loc_8772: - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_879B: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_8772 - jnz short loc_87AC - cmp ax, [bp+arg_8] - jb short loc_8772 - -loc_87AC: - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_843D - add sp, 8 - or ax, ax - jnz short loc_87F7 - test byte ptr [bp+arg_4], 1 - jz short loc_8817 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_87AC -; --------------------------------------------------------------------------- - -loc_87F7: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_843D - add sp, 8 - or ax, ax - jz short loc_8817 - jmp loc_8982 -; --------------------------------------------------------------------------- - -loc_8817: - cmp byte ptr __8086, 3 - jnb short loc_8821 - jmp loc_8901 -; --------------------------------------------------------------------------- - -loc_8821: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_8987 -; --------------------------------------------------------------------------- - -loc_8901: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_8987 -; --------------------------------------------------------------------------- - -loc_8982: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_8987: - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 0 - db 0 - db 0 - db 0 - dd loc_89F6 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 94h, 89h - dw seg seg000 - db 0 - db 0 - db 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_89BE proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 89ACh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_7D2F - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_8A00 -; --------------------------------------------------------------------------- - -loc_89F6: - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8A00: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_89BE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8A0E proc near - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_8A89 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_8A81 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_89BE - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_8A81: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_8A89: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_8AE0 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_8AD8 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8AD8 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_89BE - add sp, 0Ah - -loc_8AD8: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_8AE0: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8A0E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_8A0E - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B63 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_8B6B: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_8B88 - xor ax, ax - jmp loc_8C29 -; --------------------------------------------------------------------------- - -loc_8B88: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_8BB4 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_8BB4: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_8C0D - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_8C22 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_8C22 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_8B63 - add sp, 0Ch - or ax, ax - jz short loc_8C22 - -loc_8C0D: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_8C29 -; --------------------------------------------------------------------------- - -loc_8C22: - add word ptr [bp+arg_0], 8 - jmp loc_8B6B -; --------------------------------------------------------------------------- - -loc_8C29: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8B63 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8C2F proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_8CA0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8B63 - add sp, 0Ch - or ax, ax - jnz short loc_8CA0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8B63 - add sp, 0Ch - or ax, ax - jz short loc_8CA8 - -loc_8CA0: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_8CAC -; --------------------------------------------------------------------------- - -loc_8CA8: - xor dx, dx - xor ax, ax - -loc_8CAC: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8C2F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8CB2 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -_src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_8CE1 - jmp loc_8F52 -; --------------------------------------------------------------------------- - -loc_8CE1: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_8CEE - jmp loc_8F52 -; --------------------------------------------------------------------------- - -loc_8CEE: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_8D62 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_8D62: - test cl, 10h - jz short loc_8D8A - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_8D8A - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_8EB5 -; --------------------------------------------------------------------------- - -loc_8D8A: - test dl, 1 - jnz short loc_8D92 - jmp loc_8E36 -; --------------------------------------------------------------------------- - -loc_8D92: - test cl, 30h - jnz short loc_8D9A - jmp loc_8E36 -; --------------------------------------------------------------------------- - -loc_8D9A: - test cl, 20h - jz short loc_8DA1 - jmp short loc_8DC4 -; --------------------------------------------------------------------------- - -loc_8DA1: - les bx, [bp+_src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_8DCB - mov ax, word ptr [bp+_src] - mov word ptr [bp+_src+2], ds - mov word ptr [bp+_src], ax - -loc_8DC4: - mov [bp+var_14], 1 - jmp short $+2 - -loc_8DCB: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_8E2C - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push cs - call near ptr sub_8C2F - add sp, 0Ch - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - cmp dx, [bp+var_16] - jnz short loc_8E27 - cmp ax, [bp+var_18] - jz short loc_8E2C - -loc_8E27: - mov [bp+var_14], 1 - -loc_8E2C: - push [bp+n] - push ss - lea ax, [bp+_src] - jmp loc_8F00 -; --------------------------------------------------------------------------- - -loc_8E36: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_8EBC - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_8E85 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push cs - call near ptr sub_8C2F - add sp, 0Ch - mov word ptr [bp+_src+2], dx - mov word ptr [bp+_src], ax - mov [bp+var_14], 1 - -loc_8E85: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_8F03 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_79E1 - add sp, 0Eh - -loc_8EB5: - mov [bp+var_14], 1 - jmp short loc_8F1C -; --------------------------------------------------------------------------- - -loc_8EBC: - test cl, 20h - jz short loc_8EDB - push [bp+n] ; n - push ss - lea ax, [bp+_src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_8EB5 -; --------------------------------------------------------------------------- - -loc_8EDB: - test cl, 10h - jz short loc_8F03 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_8F03 - les bx, [bp+_src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_8F00: - push ax - jmp short loc_8F0C -; --------------------------------------------------------------------------- - -loc_8F03: - push [bp+n] ; n - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - -loc_8F0C: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_8F1C: - cmp [bp+var_14], 0 - jnz short loc_8F52 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8F4A - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+_src+2] - push word ptr [bp+_src] - call sub_89BE - add sp, 0Ah - -loc_8F4A: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_8F52: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8CB2 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8F58 proc near - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_90FD -; --------------------------------------------------------------------------- - -loc_8FB0: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_8FEB - jmp loc_90FA -; --------------------------------------------------------------------------- - -loc_8FEB: - add bx, bx - jmp cs:off_9117[bx] - -loc_8FF2: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_3B5D0+2, dx - mov word ptr dword_3B5D0, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_3B5D0 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_90FA -; --------------------------------------------------------------------------- - -loc_902D: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_905C -; --------------------------------------------------------------------------- - -loc_903C: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_9056 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_9056 - jmp short loc_9076 -; --------------------------------------------------------------------------- - -loc_9056: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_905C: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_903C - -loc_9076: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_8A0E - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_90FA -; --------------------------------------------------------------------------- - -loc_90AF: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_9B2E - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_90FA: - mov ax, [bp+var_8] - -loc_90FD: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_9111 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_9111 - jmp loc_8FB0 -; --------------------------------------------------------------------------- - -loc_9111: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8F58 endp - -; --------------------------------------------------------------------------- -off_9117 dw offset loc_8FF2 - dw offset loc_90FA - dw offset loc_90FA - dw offset loc_90FA - dw offset loc_902D - dw offset loc_90AF - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8F58 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8F58 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_916D proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_91DB -; --------------------------------------------------------------------------- - -loc_9186: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_91CF - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_78DC - add sp, 10h - or ax, ax - jz short loc_91D7 - -loc_91CF: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_91EB -; --------------------------------------------------------------------------- - -loc_91D7: - add word ptr [bp+var_4], 10h - -loc_91DB: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_9186 - xor dx, dx - xor ax, ax - -loc_91EB: - pop di - pop si - mov sp, bp - pop bp - retn -sub_916D endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_9285 - jmp loc_932D -; --------------------------------------------------------------------------- - -loc_9285: - xor ax, ax - push ax - push [bp+var_4] - call sub_8F58 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_929E - jmp loc_9560 -; --------------------------------------------------------------------------- - -loc_929E: - cmp word ptr ss:[bx], 0FACEh - jz short loc_92A8 - jmp loc_9560 -; --------------------------------------------------------------------------- - -loc_92A8: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_92C3 - jmp loc_9560 -; --------------------------------------------------------------------------- - -loc_92C3: - jmp short loc_9301 -; --------------------------------------------------------------------------- - -loc_92C5: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_78DC - add sp, 10h - or ax, ax - jz short loc_92FD - jmp loc_9560 -; --------------------------------------------------------------------------- - -loc_92FD: - add word ptr [bp+var_20], 4 - -loc_9301: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_92C5 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_9560 -; --------------------------------------------------------------------------- - -loc_932D: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_9554 -; --------------------------------------------------------------------------- - -loc_9337: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_9368 - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_9368: - add bx, bx - jmp cs:off_9569[bx] - -loc_936F: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_937D - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_937D: - cmp word ptr ss:[bx], 0FACEh - jz short loc_9387 - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_9387: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_916D - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_93C1 - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_93C1: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_93F5: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8F58 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_9447 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_8CB2 - add sp, 10h - -loc_9447: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_9460: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_9475 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_9475 - jmp loc_9551 -; --------------------------------------------------------------------------- - -loc_9475: - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_3B5D4+2, dx - mov word ptr dword_3B5D4, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_3B5D4 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_950C -; --------------------------------------------------------------------------- - -loc_94D7: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_94EB - cmp word ptr ss:[bx], 0FACEh - jnz short loc_94EB - jmp short loc_9551 -; --------------------------------------------------------------------------- - -loc_94EB: - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_950C: - cmp [bp+var_38], 0 - jge short loc_952A - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_9526 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_9526: - xor ax, ax - jmp short loc_9563 -; --------------------------------------------------------------------------- - -loc_952A: - cmp [bp+var_38], 0 - jnz short loc_9532 - jmp short loc_9551 -; --------------------------------------------------------------------------- - -loc_9532: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_93F5 -; --------------------------------------------------------------------------- - -loc_9551: - mov ax, [bp+var_14] - -loc_9554: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_9560 - jmp loc_9337 -; --------------------------------------------------------------------------- - -loc_9560: - mov ax, 1 - -loc_9563: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_9569 dw offset loc_9551 - dw offset loc_9460 - dw offset loc_94D7 - dw offset loc_936F - dw offset loc_9551 - dw offset loc_9551 - db 4 dup(0), 8, 96h - dw seg seg000 - db 14h dup(0), 18h, 96h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 8Dh, 95h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 75h, 95h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_95C3 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 95A5h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_7D2F - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_9611 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_9611: - mov [bp+var_12], 0 - jmp short loc_9621 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_9621: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_95C3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_962F proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_969E -; --------------------------------------------------------------------------- - -loc_963C: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_9664 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9664: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_969E - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_96B0 - add sp, 10h - xor cx, cx - -loc_969E: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_963C - pop di - pop si - mov sp, bp - pop bp - retf -sub_962F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_96B0 proc far - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_96C7 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_96CE -; --------------------------------------------------------------------------- - -loc_96C7: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_96CE: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_96F0 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_9709 - jnz short loc_96F0 - cmp ax, [bp+var_1C] - jb short loc_9709 - -loc_96F0: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_95C3 - add sp, 0Ah - jmp loc_9975 -; --------------------------------------------------------------------------- - -loc_9709: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_97A2 - -loc_9734: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_97A2 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_979C - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_9795 - jnz short loc_976B - cmp bx, [bp+var_1C] - jb short loc_9795 - -loc_976B: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_9785: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_962F - add sp, 12h - jmp loc_9975 -; --------------------------------------------------------------------------- - -loc_9795: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_979C: - add word ptr [bp+var_10], 8 - jmp short loc_9734 -; --------------------------------------------------------------------------- - -loc_97A2: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_97BB: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_9831 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_982B - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_9824 - jnz short loc_97F2 - cmp bx, [bp+var_1C] - jb short loc_9824 - -loc_97F2: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_962F - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_9821 - jmp loc_9975 -; --------------------------------------------------------------------------- - -loc_9821: - jmp loc_9955 -; --------------------------------------------------------------------------- - -loc_9824: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_982B: - add word ptr [bp+var_8], 8 - jmp short loc_97BB -; --------------------------------------------------------------------------- - -loc_9831: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_984A: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_9884 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_9884: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_98A8 - jb short loc_989E - cmp bx, [bp+var_1C] - jnb short loc_98A8 - -loc_989E: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_996E -; --------------------------------------------------------------------------- - -loc_98A8: - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_98F4 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_997B - add sp, 0Eh - jmp short loc_9914 -; --------------------------------------------------------------------------- - -loc_98F4: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_96B0 - add sp, 10h - -loc_9914: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_992D - jmp loc_98A8 -; --------------------------------------------------------------------------- - -loc_992D: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_962F - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_9975 - -loc_9955: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_9785 -; --------------------------------------------------------------------------- - -loc_996E: - add word ptr [bp+var_18], 6 - jmp loc_984A -; --------------------------------------------------------------------------- - -loc_9975: - pop di - pop si - mov sp, bp - pop bp - retf -sub_96B0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_997B proc far - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_99D5 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_99D5: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9A65 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_9A52 -; --------------------------------------------------------------------------- - -loc_9A33: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_9A52: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_96B0 - add sp, 10h - -loc_9A65: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_9A33 - pop di - pop si - mov sp, bp - pop bp - retf -sub_997B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9A7D proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_9B22 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_9B22 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_9ADC - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_9AE5 -; --------------------------------------------------------------------------- - -loc_9ADC: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_9AE5: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_9B22: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_9A7D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9B2E proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_9B44 - jmp loc_9F31 -; --------------------------------------------------------------------------- - -loc_9B44: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_9B9D - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_9B9D: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_9BB4 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_9F33 -; --------------------------------------------------------------------------- - -loc_9BB4: - cmp [bp+var_6], 0 - jg short loc_9BE6 - jnz short loc_9BC2 - cmp [bp+var_8], 0 - ja short loc_9BE6 - -loc_9BC2: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_9BD4 - jmp loc_9F31 -; --------------------------------------------------------------------------- - -loc_9BD4: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_9D4B -; --------------------------------------------------------------------------- - -loc_9BE6: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_9BF2: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_9C05 - sub word ptr [bp+var_C], 0Ah - jmp loc_9D4B -; --------------------------------------------------------------------------- - -loc_9C05: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_9C2D - jmp loc_9CF7 -; --------------------------------------------------------------------------- - -loc_9C2D: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_9C51 - jmp loc_9CF7 -; --------------------------------------------------------------------------- - -loc_9C51: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_9C5E - jmp loc_9CF7 -; --------------------------------------------------------------------------- - -loc_9C5E: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_9C6B - jmp loc_9CF7 -; --------------------------------------------------------------------------- - -loc_9C6B: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_9C84 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_9C92 -; --------------------------------------------------------------------------- - -loc_9C84: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_9C92: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_9CBA - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_9CC3 -; --------------------------------------------------------------------------- - -loc_9CBA: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_9CC3: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_9CD4 - add word ptr [bp+var_1C], 4 - -loc_9CD4: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_9A7D - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9CF7: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9D1C - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9D1C: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_9D3A - jnz short loc_9D4B - cmp ax, [bp+var_8] - jnb short loc_9D4B - -loc_9D3A: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_9BF2 -; --------------------------------------------------------------------------- - -loc_9D4B: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_9D7A - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_9D88 -; --------------------------------------------------------------------------- - -loc_9D7A: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_9D88: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_9D94 - jmp loc_9E1E -; --------------------------------------------------------------------------- - -loc_9D94: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_9DC6 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_9DCF -; --------------------------------------------------------------------------- - -loc_9DC6: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_9DCF: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_9DED - add [bp+var_18], 4 - -loc_9DED: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_9E1E - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_9E1E - test byte ptr [bp+var_16+2], 8 - jz short loc_9E1E - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9A7D - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_9E1E: - cmp [bp+var_E], 0 - jnz short loc_9E6C - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9E4C - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_997B - add sp, 0Eh - jmp short loc_9E6C -; --------------------------------------------------------------------------- - -loc_9E4C: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_96B0 - add sp, 10h - -loc_9E6C: - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_9E7A - jmp loc_9F18 -; --------------------------------------------------------------------------- - -loc_9E7A: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_9E89 - sub word ptr [bp+driver], 4 - -loc_9E89: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9ED8 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_9EC5 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_9EF7 -; --------------------------------------------------------------------------- - -loc_9EC5: - test byte ptr [bp+var_16+2], 80h - jz short loc_9F18 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_9F16 -; --------------------------------------------------------------------------- - -loc_9ED8: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_9F05 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_9EF7: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_7EE7 - add sp, 0Ah - jmp short loc_9F18 -; --------------------------------------------------------------------------- - -loc_9F05: - test byte ptr [bp+var_16+2], 80h - jz short loc_9F18 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_9F16: - pop cx - pop cx - -loc_9F18: - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_9F31 - jmp loc_9D4B -; --------------------------------------------------------------------------- - -loc_9F31: - xor ax, ax - -loc_9F33: - pop di - pop si - mov sp, bp - pop bp - retn -sub_9B2E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_9F7C - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 2033h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_9F81 - -loc_9F7C: - mov ax, 0FFFFh - jmp short loc_9F88 -; --------------------------------------------------------------------------- - -loc_9F81: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9F88: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -_src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_9FE4 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_A022 - -loc_9FE4: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A5C0h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+_src], 0 - lea ax, [bp+_src] - push ss - push ax ; src - push cs ; int - mov ax, 0A5A2h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A022: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_A06D - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A5C0h - test dl, 1 - jz short loc_A06D - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_A06D: - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_74E3 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_A0D1 - xor ax, ax - jmp short loc_A12A -; --------------------------------------------------------------------------- - -loc_A0D1: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_A0E3 - mov ax, 1 - jmp short loc_A12A -; --------------------------------------------------------------------------- - -loc_A0E3: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_A128 - mov ax, 1 - jmp short loc_A12A -; --------------------------------------------------------------------------- - -loc_A128: - xor ax, ax - -loc_A12A: - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_74BE - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_A18C - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 6C38h - push ax ; src - push cs ; int - mov ax, 0A58Ch - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A18C: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_A1CD proc near - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_A208 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_A212 - -loc_A208: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_A219 - -loc_A212: - xor dx, dx - xor ax, ax - jmp loc_A40D -; --------------------------------------------------------------------------- - -loc_A219: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_A22B: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_A231: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_A24C - jmp loc_A3D5 -; --------------------------------------------------------------------------- - -loc_A24C: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_A259 - jmp loc_A3CE -; --------------------------------------------------------------------------- - -loc_A259: - cmp [bp+arg_1A], 0 - jz short loc_A273 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_A273 - mov ax, 1 - jmp short loc_A275 -; --------------------------------------------------------------------------- - -loc_A273: - xor ax, ax - -loc_A275: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_A2BC - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_A2BC: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_A33E - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_A2E0 - jmp loc_A3CE -; --------------------------------------------------------------------------- - -loc_A2E0: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_A1CD - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_A327 - jmp loc_A3CE -; --------------------------------------------------------------------------- - -loc_A327: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_A39B -; --------------------------------------------------------------------------- - -loc_A33E: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_A35F - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_A3CE - cmp ax, word ptr [bp+var_14] - jnz short loc_A3CE - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_A40D -; --------------------------------------------------------------------------- - -loc_A35F: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_A39B - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_A1CD - add sp, 20h - or ax, dx - jz short loc_A3CE - -loc_A39B: - cmp [bp+var_E], 0 - jz short loc_A3B9 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_A3B9 - cmp ax, [bp+var_C] - jnz short loc_A3B9 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_A3CE -; --------------------------------------------------------------------------- - -loc_A3B9: - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_A3CE: - add word ptr [bp+var_4], 8 - jmp loc_A231 -; --------------------------------------------------------------------------- - -loc_A3D5: - cmp [bp+var_6], 0 - jnz short loc_A3EE - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_A22B -; --------------------------------------------------------------------------- - -loc_A3EE: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_A407 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_A407: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_A40D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_A1CD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_A43E - jmp loc_A542 -; --------------------------------------------------------------------------- - -loc_A43E: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_A494 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jz short loc_A49D - -loc_A494: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_A572 -; --------------------------------------------------------------------------- - -loc_A49D: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_74E3 - add sp, 8 - or ax, ax - jnz short loc_A4F6 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_A1CD - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_A53A - -loc_A4F6: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_A1CD - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_A542 - cmp [bp+var_16], 0 - jz short loc_A542 - -loc_A53A: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_A572 -; --------------------------------------------------------------------------- - -loc_A542: - cmp [bp+arg_10], 0 - jz short loc_A56E - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 6C39h - push ax ; src - push cs ; int - mov ax, 0A578h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A56E: - xor dx, dx - xor ax, ax - -loc_A572: - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0C4h, 0A5h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0 - dd byte_A5C4 - dd 0 - dd @typeinfo@0$bdtr$qv ; typeinfo::~typeinfo(void) -byte_A5C4 db 8 - ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 3Dh, 0A0h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm unknown_libname_3 db 0BAh, 3Ch, 20h, 0EBh, 3, 0BAh, 41h, 20h, 0B9h, 5, 0 db 0B4h, 40h, 0BBh, 2, 0, 0CDh, 21h, 0B9h, 27h, 0, 0BAh db 46h, 20h, 0B4h, 40h, 0CDh, 21h, 0E9h, 0A2h, 7Dh @@ -55945,8 +49358,7 @@ include libs/BorlandC/putc[data].asm word_369C4 dw 0 word_369C6 dw 0 include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm aPrintScanfFloa db 'print scanf : floating point formats not linked',0Dh,0Ah,0 include libs/BorlandC/setenvp[data].asm word_36A12 dw 1 @@ -61336,9 +54748,7 @@ byte_3B5CC db ? db ? include libs/BorlandC/putc[bss].asm db ? -dword_3B5D0 dd ? -dword_3B5D4 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dw ? diff --git a/th02_main.asm b/th02_main.asm index a1e1f9fa..fa491d7d 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -8115,6693 +8115,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_73C9 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_73DD - mov dx, ds - mov ax, 192Eh - jmp short loc_73EA -; --------------------------------------------------------------------------- - -loc_73DD: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_73EA: - pop di - pop si - pop bp - retf -sub_73C9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_73EE proc far - ; sub_748B+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_7406 - cmp ax, word ptr [bp+arg_4] - jz short loc_7482 - -loc_7406: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_747A - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_747A - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_747A - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_745C: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_747E - -loc_747A: - xor ax, ax - jmp short loc_7485 -; --------------------------------------------------------------------------- - -loc_747E: - or dx, dx - jnz short loc_745C - -loc_7482: - mov ax, 1 - -loc_7485: - pop di - pop si - mov sp, bp - pop bp - retf -sub_73EE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_748B proc near - ; sub_748B+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_74A6: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_753A - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_7533 - cmp [bp+arg_C], 0 - jz short loc_74E2 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_74E2 - mov ax, 1 - jmp short loc_74E4 -; --------------------------------------------------------------------------- - -loc_74E2: - xor ax, ax - -loc_74E4: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jz short loc_7507 - cmp [bp+var_6], 0 - jz short loc_7507 - jmp loc_75CA -; --------------------------------------------------------------------------- - -loc_7507: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_7533 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_748B - add sp, 0Eh - or ax, ax - jz short loc_7533 - jmp loc_75CA -; --------------------------------------------------------------------------- - -loc_7533: - add word ptr [bp+var_4], 8 - jmp loc_74A6 -; --------------------------------------------------------------------------- - -loc_753A: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_754D: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_75D6 - cmp [bp+arg_C], 0 - jz short loc_757F - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_757F - mov ax, 1 - jmp short loc_7581 -; --------------------------------------------------------------------------- - -loc_757F: - xor ax, ax - -loc_7581: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jz short loc_75A1 - cmp [bp+var_6], 0 - jnz short loc_75CA - -loc_75A1: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_75CF - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_748B - add sp, 0Eh - or ax, ax - jz short loc_75CF - -loc_75CA: - mov ax, 1 - jmp short loc_75D8 -; --------------------------------------------------------------------------- - -loc_75CF: - ; sub_748B+13Dj - add word ptr [bp+var_4], 8 - jmp loc_754D -; --------------------------------------------------------------------------- - -loc_75D6: - xor ax, ax - -loc_75D8: - pop di - pop si - mov sp, bp - pop bp - retn -sub_748B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_75DE proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_75E9: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_75FC - cmp ax, word ptr [bp+arg_4] - jnz short loc_75FC - jmp loc_7711 -; --------------------------------------------------------------------------- - -loc_75FC: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_768C - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_762F - jmp loc_76D2 -; --------------------------------------------------------------------------- - -loc_762F: - or cx, cx - jz short loc_7636 - jmp loc_774A -; --------------------------------------------------------------------------- - -loc_7636: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_766C - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_765A - jmp loc_774A -; --------------------------------------------------------------------------- - -loc_765A: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_76D2 - -loc_766C: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_7680 - jmp loc_774A -; --------------------------------------------------------------------------- - -loc_7680: - test byte ptr [bp+var_2+1], 10h - jnz short loc_7689 - jmp loc_774A -; --------------------------------------------------------------------------- - -loc_7689: - jmp loc_7711 -; --------------------------------------------------------------------------- - -loc_768C: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_76FA - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_76B1 - cmp ax, es:[bx+0Ah] - jz short loc_76D2 - -loc_76B1: - or cx, cx - jz short loc_76B8 - jmp loc_774A -; --------------------------------------------------------------------------- - -loc_76B8: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_774A - -loc_76D2: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_75E9 -; --------------------------------------------------------------------------- - -loc_76FA: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jz short loc_7716 - -loc_7711: - ; sub_75DE:loc_7689j - mov ax, 1 - jmp short loc_774C -; --------------------------------------------------------------------------- - -loc_7716: - test byte ptr [bp+var_2], 2 - jz short loc_774A - test byte ptr [bp+var_4], 1 - jz short loc_774A - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_774A - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_748B - add sp, 0Eh - jmp short loc_774C -; --------------------------------------------------------------------------- - -loc_774A: - xor ax, ax - -loc_774C: - ; sub_75DE+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_75DE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7752 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_77A2 - cmp [bp+arg_0], 80h ; '€' - ja short loc_7784 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_7789 - -loc_7784: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_7789: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_77A8 -; --------------------------------------------------------------------------- - -loc_77A2: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_77A8: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7752 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_77D6 - cmp ax, [bp+6] - jnz short loc_77D6 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_77E3 -; --------------------------------------------------------------------------- - -loc_77D6: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_77E3: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_77E7 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_75DE - add sp, 0Eh - or ax, ax - jz short loc_7811 - jmp loc_78AD -; --------------------------------------------------------------------------- - -loc_7811: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_78A1 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_75DE - add sp, 0Eh - or ax, ax - jnz short loc_78AD - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_78E4 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_75DE - add sp, 0Eh - or ax, ax - jnz short loc_78AD - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_78E4 - -loc_78A1: - test byte ptr [bp+var_4], 10h - jz short loc_78E4 - test [bp+arg_C], 1 - jz short loc_78B2 - -loc_78AD: - mov ax, 1 - jmp short loc_78E6 -; --------------------------------------------------------------------------- - -loc_78B2: - test byte ptr [bp+var_2], 10h - jz short loc_78E4 - test byte ptr [bp+var_2+1], 20h - jz short loc_78C4 - test byte ptr [bp+var_4+1], 20h - jz short loc_78E4 - -loc_78C4: - test byte ptr [bp+var_4], 40h - jz short loc_78E4 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_78E0 - mov ax, 1 - jmp short loc_78E2 -; --------------------------------------------------------------------------- - -loc_78E0: - xor ax, ax - -loc_78E2: - jmp short loc_78E6 -; --------------------------------------------------------------------------- - -loc_78E4: - xor ax, ax - -loc_78E6: - ; sub_77E7:loc_78E2j - pop di - pop si - mov sp, bp - pop bp - retn -sub_77E7 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78EC proc near - ; sub_8BBD+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_7917 - or [bp+var_4], 2 - -loc_7917: - test byte ptr [bp+arg_C], 2 - jz short loc_792B - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_792B - or [bp+var_4], 20h - -loc_792B: - test byte ptr [bp+arg_C], 20h - jz short loc_7935 - or [bp+var_4], 8 - -loc_7935: - test byte ptr [bp+arg_C], 80h - jz short loc_793F - or [bp+var_4], 10h - -loc_793F: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_7948 - jmp loc_7ACD -; --------------------------------------------------------------------------- - -loc_7948: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7953 - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7953: - add bx, bx - jmp cs:off_7C0A[bx] - -loc_795A: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_796C: - ; sub_78EC+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_797E: - ; sub_78EC+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_79A4 -; --------------------------------------------------------------------------- - -loc_7992: - ; sub_78EC+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_79A4: - add sp, 0Ah - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_79AA: - ; sub_78EC+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_79B9: - ; sub_78EC+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_79C8: - ; sub_78EC+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_79EE -; --------------------------------------------------------------------------- - -loc_79DC: - ; sub_78EC+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_79EE: - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_79F1: - ; sub_78EC+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A01: - ; sub_78EC+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_7A09: - push bx - pop bx - call [bp+arg_8] - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A11: - ; sub_78EC+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_7A1F: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7A35 -; --------------------------------------------------------------------------- - -loc_7A24: - ; sub_78EC+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_7A32: - call [bp+arg_8] - -loc_7A35: - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A38: - ; sub_78EC+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7A52 -; --------------------------------------------------------------------------- - -loc_7A46: - ; sub_78EC+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_7A4F: - call [bp+arg_8] - -loc_7A52: - ; sub_78EC+1FCj - pop cx - pop cx - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A57: - ; sub_78EC+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A6E: - ; sub_78EC+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7A85: - ; sub_78EC+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7A8E: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7A9F -; --------------------------------------------------------------------------- - -loc_7A93: - ; sub_78EC+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7A9C: - call [bp+arg_8] - -loc_7A9F: - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7AA2: - ; sub_78EC+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7AB6: - ; sub_78EC+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7ACA: - ; sub_78EC+1EEj - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7ACD: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7AD8 - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7AD8: - add bx, bx - jmp cs:off_7BDA[bx] - -loc_7ADF: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7A52 -; --------------------------------------------------------------------------- - -loc_7AEB: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7A4F -; --------------------------------------------------------------------------- - -loc_7AF4: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7B14 -; --------------------------------------------------------------------------- - -loc_7B05: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_7B14: - add sp, 8 - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B1A: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7A8E -; --------------------------------------------------------------------------- - -loc_7B23: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7A9C -; --------------------------------------------------------------------------- - -loc_7B2C: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B3A: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_7A09 -; --------------------------------------------------------------------------- - -loc_7B43: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_7A1F -; --------------------------------------------------------------------------- - -loc_7B52: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_7A32 -; --------------------------------------------------------------------------- - -loc_7B61: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B6D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B79: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B8B: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7B9D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7BA8: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7BB3: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_7BD3 -; --------------------------------------------------------------------------- - -loc_7BC3: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_7BD3: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_78EC endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7BDA dw offset loc_7ADF - dw offset loc_7AEB - dw offset loc_7AF4 - dw offset loc_7B05 - dw offset loc_7B1A - dw offset loc_7B23 - dw offset loc_7B43 - dw offset loc_7B52 - dw offset loc_7B2C - dw offset loc_7B3A - dw offset loc_7B43 - dw offset loc_7B52 - dw offset loc_7BD3 - dw offset loc_7BD3 - dw offset loc_7BD3 - dw offset loc_7BD3 - dw offset loc_7B61 - dw offset loc_7B6D - dw offset loc_7B79 - dw offset loc_7B8B - dw offset loc_7B9D - dw offset loc_7BA8 - dw offset loc_7BB3 - dw offset loc_7BC3 -off_7C0A dw offset loc_795A - dw offset loc_796C - dw offset loc_797E - dw offset loc_7992 - dw offset loc_79AA - dw offset loc_79B9 - dw offset loc_79C8 - dw offset loc_79DC - dw offset loc_79F1 - dw offset loc_7A01 - dw offset loc_7A11 - dw offset loc_7A24 - dw offset loc_7ACA - dw offset loc_7ACA - dw offset loc_7ACA - dw offset loc_7ACA - dw offset loc_7A38 - dw offset loc_7A46 - dw offset loc_7A57 - dw offset loc_7A6E - dw offset loc_7A85 - dw offset loc_7A93 - dw offset loc_7AA2 - dw offset loc_7AB6 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7C3A proc near - ; sub_88C9+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_7C4D - mov ax, 2 - jmp short loc_7C4F -; --------------------------------------------------------------------------- - -loc_7C4D: - xor ax, ax - -loc_7C4F: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7C75 - or [bp+var_6], 2 - -loc_7C75: - test byte ptr [bp+arg_8], 2 - jz short loc_7C89 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_7C89 - or [bp+var_6], 20h - -loc_7C89: - test byte ptr [bp+arg_8], 20h - jz short loc_7C93 - or [bp+var_6], 8 - -loc_7C93: - test byte ptr [bp+arg_8], 80h - jz short loc_7C9D - or [bp+var_6], 10h - -loc_7C9D: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_7CA8 - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7CA8: - add bx, bx - jmp cs:off_7DC2[bx] - -loc_7CAF: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7CBD: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7CCB: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7CDD: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7CEF: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7D55 -; --------------------------------------------------------------------------- - -loc_7CFA: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_7D52 -; --------------------------------------------------------------------------- - -loc_7D02: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7D1C -; --------------------------------------------------------------------------- - -loc_7D10: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_7D1C: - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D1F: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D2D: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D3B: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7D55 -; --------------------------------------------------------------------------- - -loc_7D49: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_7D52: - call [bp+arg_4] - -loc_7D55: - ; sub_7C3A+10Dj - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D57: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D63: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D6F: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D7D: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D8B: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7D96: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7DA1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_7DBB -; --------------------------------------------------------------------------- - -loc_7DAE: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_7DBB: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7C3A endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7DC2 dw offset loc_7CAF - dw offset loc_7CBD - dw offset loc_7CCB - dw offset loc_7CDD - dw offset loc_7CEF - dw offset loc_7CFA - dw offset loc_7D02 - dw offset loc_7D10 - dw offset loc_7D1F - dw offset loc_7D2D - dw offset loc_7D3B - dw offset loc_7D49 - dw offset loc_7DBB - dw offset loc_7DBB - dw offset loc_7DBB - dw offset loc_7DBB - dw offset loc_7D57 - dw offset loc_7D63 - dw offset loc_7D6F - dw offset loc_7D7D - dw offset loc_7D8B - dw offset loc_7D96 - dw offset loc_7DA1 - dw offset loc_7DAE - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7DF2 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7E1D - or [bp+var_4], 2 - -loc_7E1D: - test byte ptr [bp+arg_8], 2 - jz short loc_7E27 - or [bp+var_4], 4 - -loc_7E27: - test byte ptr [bp+arg_8], 20h - jz short loc_7E31 - or [bp+var_4], 8 - -loc_7E31: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_7EA4 - add bx, bx - jmp cs:off_7EAB[bx] - -loc_7E40: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E49: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E52: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7E66 -; --------------------------------------------------------------------------- - -loc_7E5D: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7E66: - pop cx - pop cx - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E6A: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7E78 -; --------------------------------------------------------------------------- - -loc_7E72: - push [bp+arg_0] - call [bp+arg_4] - -loc_7E78: - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E7A: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E84: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_7EA4 -; --------------------------------------------------------------------------- - -loc_7E8E: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7EA2 -; --------------------------------------------------------------------------- - -loc_7E99: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7EA2: - jmp short $+2 - -loc_7EA4: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7DF2 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7EAB dw offset loc_7E40 - dw offset loc_7E49 - dw offset loc_7E52 - dw offset loc_7E5D - dw offset loc_7E6A - dw offset loc_7E72 - dw offset loc_7E8E - dw offset loc_7E99 - dw offset loc_7E7A - dw offset loc_7E84 - dw offset loc_7E8E - dw offset loc_7E99 - db 4 dup(0), 2 dup(81h) - dw seg seg000 - db 14h dup(0), 0DAh, 81h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0C3h, 7Eh - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0DBh, 7Eh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_7F11(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_7F11 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 7EF3h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_7F9D -; --------------------------------------------------------------------------- - -loc_7F7A: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_7F9A - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_7F9A: - inc word ptr [bp+var_34] - -loc_7F9D: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_7F7A - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_7FFA - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_7FFC -; --------------------------------------------------------------------------- - -loc_7FFA: - xor ax, ax - -loc_7FFC: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_8016 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_8016: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_7752 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 77AEh - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_81A0 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_78EC - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_818B -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_818B: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_81A0: - cmp [bp+arg_1E], 0 - jnz short loc_81E4 - test byte ptr [bp+var_2C], 2 - jz short loc_81E4 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_7C3A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_81E4 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_81E4: - ; sub_7F11+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F11 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_7F11 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_82D4 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_82D4: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_8320 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_8329 -; --------------------------------------------------------------------------- - -loc_8320: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_8329: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_7F11 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_8343 proc far - push si - push di - pop di - pop si - retf -sub_8343 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8348 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_8362 - inc [bp+var_4] - -loc_8362: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_8343 - jmp short loc_83B0 -; --------------------------------------------------------------------------- - -loc_836F: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_839A - mov ax, dx - jmp short loc_83CE -; --------------------------------------------------------------------------- - -loc_839A: - cmp [bp+var_4], 0 - jz short loc_83A7 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_83A7: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_83B0: - cmp [bp+var_2], 0FFFFh - jz short loc_83BE - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_836F - -loc_83BE: - cmp [bp+var_4], 0 - jz short loc_83CB - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_83CB: - mov ax, 1 - -loc_83CE: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8348 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_83FF - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_83FF: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_8348 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_841B proc far - push si - push di - pop di - pop si - retf -sub_841B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 8892 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_841B - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_8449 - jmp loc_84FF -; --------------------------------------------------------------------------- - -loc_8449: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_8548 -; --------------------------------------------------------------------------- - -loc_84FF: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_8548: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_8579 - cmp [bp+arg_0], 0FACEh - jnz short loc_8579 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_8587 -; --------------------------------------------------------------------------- - -loc_8579: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_8587: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_8658 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_8658: - cmp [bp+arg_A], 0 - jb short loc_8670 - ja short loc_8666 - cmp [bp+arg_8], 0Fh - jbe short loc_8670 - -loc_8666: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_8670: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_86A6 -; --------------------------------------------------------------------------- - -loc_867D: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_86A6: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_867D - jnz short loc_86B7 - cmp ax, [bp+arg_8] - jb short loc_867D - -loc_86B7: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_8348 - add sp, 8 - or ax, ax - jnz short loc_8702 - test byte ptr [bp+arg_4], 1 - jz short loc_8722 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_86B7 -; --------------------------------------------------------------------------- - -loc_8702: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_8348 - add sp, 8 - or ax, ax - jz short loc_8722 - jmp loc_888D -; --------------------------------------------------------------------------- - -loc_8722: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_872C - jmp loc_880C -; --------------------------------------------------------------------------- - -loc_872C: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_8892 -; --------------------------------------------------------------------------- - -loc_880C: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_8892 -; --------------------------------------------------------------------------- - -loc_888D: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_8892: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 1, 89h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Fh, 88h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_88C9 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 88B7h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_7C3A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_890B -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_890B: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_88C9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8919 proc near - ; sub_8E63+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_8994 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_898C - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_88C9 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_898C: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_8994: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_89EB - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_89E3 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_89E3 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_88C9 - add sp, 0Ah - -loc_89E3: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_89EB: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8919 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_7F11+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_8919 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8A6E proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_8A76: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_8A93 - xor ax, ax - jmp loc_8B34 -; --------------------------------------------------------------------------- - -loc_8A93: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_8ABF - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_8ABF: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_8B18 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_8B2D - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_8B2D - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_8A6E - add sp, 0Ch - or ax, ax - jz short loc_8B2D - -loc_8B18: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_8B34 -; --------------------------------------------------------------------------- - -loc_8B2D: - add word ptr [bp+arg_0], 8 - jmp loc_8A76 -; --------------------------------------------------------------------------- - -loc_8B34: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8A6E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B3A proc far - ; sub_8BBD+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_8BAB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8A6E - add sp, 0Ch - or ax, ax - jnz short loc_8BAB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8A6E - add sp, 0Ch - or ax, ax - jz short loc_8BB3 - -loc_8BAB: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_8BB7 -; --------------------------------------------------------------------------- - -loc_8BB3: - xor dx, dx - xor ax, ax - -loc_8BB7: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8B3A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8BBD proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_8BEC - jmp loc_8E5D -; --------------------------------------------------------------------------- - -loc_8BEC: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_8BF9 - jmp loc_8E5D -; --------------------------------------------------------------------------- - -loc_8BF9: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_8C6D - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_8C6D: - test cl, 10h - jz short loc_8C95 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_8C95 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_8DC0 -; --------------------------------------------------------------------------- - -loc_8C95: - test dl, 1 - jnz short loc_8C9D - jmp loc_8D41 -; --------------------------------------------------------------------------- - -loc_8C9D: - test cl, 30h - jnz short loc_8CA5 - jmp loc_8D41 -; --------------------------------------------------------------------------- - -loc_8CA5: - test cl, 20h - jz short loc_8CAC - jmp short loc_8CCF -; --------------------------------------------------------------------------- - -loc_8CAC: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_8CD6 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_8CCF: - mov [bp+var_14], 1 - jmp short $+2 - -loc_8CD6: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_8D37 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_8B3A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_8D32 - cmp ax, [bp+var_18] - jz short loc_8D37 - -loc_8D32: - mov [bp+var_14], 1 - -loc_8D37: - ; sub_8BBD+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_8E0B -; --------------------------------------------------------------------------- - -loc_8D41: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_8DC7 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_8D90 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_8B3A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_8D90: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_8E0E - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_78EC - add sp, 0Eh - -loc_8DC0: - ; sub_8BBD+227j - mov [bp+var_14], 1 - jmp short loc_8E27 -; --------------------------------------------------------------------------- - -loc_8DC7: - test cl, 20h - jz short loc_8DE6 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_8DC0 -; --------------------------------------------------------------------------- - -loc_8DE6: - test cl, 10h - jz short loc_8E0E - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_8E0E - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_8E0B: - push ax - jmp short loc_8E17 -; --------------------------------------------------------------------------- - -loc_8E0E: - ; sub_8BBD+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_8E17: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_8E27: - cmp [bp+var_14], 0 - jnz short loc_8E5D - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8E55 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_88C9 - add sp, 0Ah - -loc_8E55: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_8E5D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8BBD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8E63 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_9008 -; --------------------------------------------------------------------------- - -loc_8EBB: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_8EF6 - jmp loc_9005 -; --------------------------------------------------------------------------- - -loc_8EF6: - add bx, bx - jmp cs:off_9022[bx] - -loc_8EFD: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_26E20+2, dx - mov word ptr dword_26E20, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_26E20 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_9005 -; --------------------------------------------------------------------------- - -loc_8F38: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_8F67 -; --------------------------------------------------------------------------- - -loc_8F47: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_8F61 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_8F61 - jmp short loc_8F81 -; --------------------------------------------------------------------------- - -loc_8F61: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_8F67: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_8F47 - -loc_8F81: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_8919 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_9005 -; --------------------------------------------------------------------------- - -loc_8FBA: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_9A39 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_9005: - mov ax, [bp+var_8] - -loc_9008: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_901C - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_901C - jmp loc_8EBB -; --------------------------------------------------------------------------- - -loc_901C: - ; sub_8E63+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_8E63 endp - -; --------------------------------------------------------------------------- -off_9022 dw offset loc_8EFD - dw offset loc_9005 - dw offset loc_9005 - dw offset loc_9005 - dw offset loc_8F38 - dw offset loc_8FBA - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8E63 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8E63 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9078 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_90E6 -; --------------------------------------------------------------------------- - -loc_9091: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_90DA - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_77E7 - add sp, 10h - or ax, ax - jz short loc_90E2 - -loc_90DA: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_90F6 -; --------------------------------------------------------------------------- - -loc_90E2: - add word ptr [bp+var_4], 10h - -loc_90E6: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_9091 - xor dx, dx - xor ax, ax - -loc_90F6: - pop di - pop si - mov sp, bp - pop bp - retn -sub_9078 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_9190 - jmp loc_9238 -; --------------------------------------------------------------------------- - -loc_9190: - xor ax, ax - push ax - push [bp+var_4] - call sub_8E63 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_91A9 - jmp loc_946B -; --------------------------------------------------------------------------- - -loc_91A9: - cmp word ptr ss:[bx], 0FACEh - jz short loc_91B3 - jmp loc_946B -; --------------------------------------------------------------------------- - -loc_91B3: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_91CE - jmp loc_946B -; --------------------------------------------------------------------------- - -loc_91CE: - jmp short loc_920C -; --------------------------------------------------------------------------- - -loc_91D0: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_77E7 - add sp, 10h - or ax, ax - jz short loc_9208 - jmp loc_946B -; --------------------------------------------------------------------------- - -loc_9208: - add word ptr [bp+var_20], 4 - -loc_920C: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_91D0 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_946B -; --------------------------------------------------------------------------- - -loc_9238: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_945F -; --------------------------------------------------------------------------- - -loc_9242: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_9273 - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_9273: - add bx, bx - jmp cs:off_9474[bx] - -loc_927A: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_9288 - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_9288: - cmp word ptr ss:[bx], 0FACEh - jz short loc_9292 - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_9292: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_9078 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_92CC - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_92CC: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_9300: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8E63 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_9352 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_8BBD - add sp, 10h - -loc_9352: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_936B: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_9380 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_9380 - jmp loc_945C -; --------------------------------------------------------------------------- - -loc_9380: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_26E24+2, dx - mov word ptr dword_26E24, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_26E24 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_9417 -; --------------------------------------------------------------------------- - -loc_93E2: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_93F6 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_93F6 - jmp short loc_945C -; --------------------------------------------------------------------------- - -loc_93F6: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_9417: - cmp [bp+var_38], 0 - jge short loc_9435 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_9431 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_9431: - xor ax, ax - jmp short loc_946E -; --------------------------------------------------------------------------- - -loc_9435: - cmp [bp+var_38], 0 - jnz short loc_943D - jmp short loc_945C -; --------------------------------------------------------------------------- - -loc_943D: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_9300 -; --------------------------------------------------------------------------- - -loc_945C: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_945F: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_946B - jmp loc_9242 -; --------------------------------------------------------------------------- - -loc_946B: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_946E: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_9474 dw offset loc_945C - dw offset loc_936B - dw offset loc_93E2 - dw offset loc_927A - dw offset loc_945C - dw offset loc_945C - db 4 dup(0), 13h, 95h - dw seg seg000 - db 14h dup(0), 23h, 95h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 98h, 94h - dw seg seg000 - dw 0 - db 4, 0, 6, 0, 3, 0, 80h, 94h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_94CE proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 94B0h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_7C3A - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_951C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_951C: - mov [bp+var_12], 0 - jmp short loc_952C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_952C: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_94CE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_953A proc far - ; sub_95BB+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_95A9 -; --------------------------------------------------------------------------- - -loc_9547: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_956F - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_956F: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_95A9 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_95BB - add sp, 10h - xor cx, cx - -loc_95A9: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_9547 - pop di - pop si - mov sp, bp - pop bp - retf -sub_953A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_95BB proc far - ; sub_95BB+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_95D2 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_95D9 -; --------------------------------------------------------------------------- - -loc_95D2: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_95D9: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_95FB - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_9614 - jnz short loc_95FB - cmp ax, [bp+var_1C] - jb short loc_9614 - -loc_95FB: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_94CE - add sp, 0Ah - jmp loc_9880 -; --------------------------------------------------------------------------- - -loc_9614: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_96AD - -loc_963F: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_96AD - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_96A7 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_96A0 - jnz short loc_9676 - cmp bx, [bp+var_1C] - jb short loc_96A0 - -loc_9676: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_9690: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_953A - add sp, 12h - jmp loc_9880 -; --------------------------------------------------------------------------- - -loc_96A0: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_96A7: - add word ptr [bp+var_10], 8 - jmp short loc_963F -; --------------------------------------------------------------------------- - -loc_96AD: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_96C6: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_973C - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_9736 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_972F - jnz short loc_96FD - cmp bx, [bp+var_1C] - jb short loc_972F - -loc_96FD: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_953A - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_972C - jmp loc_9880 -; --------------------------------------------------------------------------- - -loc_972C: - jmp loc_9860 -; --------------------------------------------------------------------------- - -loc_972F: - ; sub_95BB+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_9736: - add word ptr [bp+var_8], 8 - jmp short loc_96C6 -; --------------------------------------------------------------------------- - -loc_973C: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_9755: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_978F - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_978F: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_97B3 - jb short loc_97A9 - cmp bx, [bp+var_1C] - jnb short loc_97B3 - -loc_97A9: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_9879 -; --------------------------------------------------------------------------- - -loc_97B3: - ; sub_95BB+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_97FF - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_9886 - add sp, 0Eh - jmp short loc_981F -; --------------------------------------------------------------------------- - -loc_97FF: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_95BB - add sp, 10h - -loc_981F: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_9838 - jmp loc_97B3 -; --------------------------------------------------------------------------- - -loc_9838: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_953A - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_9880 - -loc_9860: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_9690 -; --------------------------------------------------------------------------- - -loc_9879: - add word ptr [bp+var_18], 6 - jmp loc_9755 -; --------------------------------------------------------------------------- - -loc_9880: - pop di - pop si - mov sp, bp - pop bp - retf -sub_95BB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9886 proc far - ; sub_9A39+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_98E0 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_98E0: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9970 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_995D -; --------------------------------------------------------------------------- - -loc_993E: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_995D: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_95BB - add sp, 10h - -loc_9970: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_993E - pop di - pop si - mov sp, bp - pop bp - retf -sub_9886 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9988 proc far - ; sub_9A39+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_9A2D - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_9A2D - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_99E7 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_99F0 -; --------------------------------------------------------------------------- - -loc_99E7: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_99F0: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_9A2D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_9988 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9A39 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_9A4F - jmp loc_9E3C -; --------------------------------------------------------------------------- - -loc_9A4F: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_9AA8 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_9AA8: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_9ABF - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_9E3E -; --------------------------------------------------------------------------- - -loc_9ABF: - cmp [bp+var_6], 0 - jg short loc_9AF1 - jnz short loc_9ACD - cmp [bp+var_8], 0 - ja short loc_9AF1 - -loc_9ACD: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_9ADF - jmp loc_9E3C -; --------------------------------------------------------------------------- - -loc_9ADF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_9C56 -; --------------------------------------------------------------------------- - -loc_9AF1: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_9AFD: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_9B10 - sub word ptr [bp+var_C], 0Ah - jmp loc_9C56 -; --------------------------------------------------------------------------- - -loc_9B10: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_9B38 - jmp loc_9C02 -; --------------------------------------------------------------------------- - -loc_9B38: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_9B5C - jmp loc_9C02 -; --------------------------------------------------------------------------- - -loc_9B5C: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_9B69 - jmp loc_9C02 -; --------------------------------------------------------------------------- - -loc_9B69: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_9B76 - jmp loc_9C02 -; --------------------------------------------------------------------------- - -loc_9B76: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_9B8F - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_9B9D -; --------------------------------------------------------------------------- - -loc_9B8F: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_9B9D: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_9BC5 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_9BCE -; --------------------------------------------------------------------------- - -loc_9BC5: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_9BCE: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_9BDF - add word ptr [bp+var_1C], 4 - -loc_9BDF: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_9988 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9C02: - ; sub_9A39+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9C27 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9C27: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_9C45 - jnz short loc_9C56 - cmp ax, [bp+var_8] - jnb short loc_9C56 - -loc_9C45: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_9AFD -; --------------------------------------------------------------------------- - -loc_9C56: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_9C85 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_9C93 -; --------------------------------------------------------------------------- - -loc_9C85: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_9C93: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_9C9F - jmp loc_9D29 -; --------------------------------------------------------------------------- - -loc_9C9F: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_9CD1 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_9CDA -; --------------------------------------------------------------------------- - -loc_9CD1: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_9CDA: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_9CF8 - add [bp+var_18], 4 - -loc_9CF8: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_9D29 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_9D29 - test byte ptr [bp+var_16+2], 8 - jz short loc_9D29 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9988 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_9D29: - ; sub_9A39+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_9D77 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9D57 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9886 - add sp, 0Eh - jmp short loc_9D77 -; --------------------------------------------------------------------------- - -loc_9D57: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_95BB - add sp, 10h - -loc_9D77: - ; sub_9A39+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_9D85 - jmp loc_9E23 -; --------------------------------------------------------------------------- - -loc_9D85: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_9D94 - sub word ptr [bp+driver], 4 - -loc_9D94: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9DE3 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_9DD0 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_9E02 -; --------------------------------------------------------------------------- - -loc_9DD0: - test byte ptr [bp+var_16+2], 80h - jz short loc_9E23 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_9E21 -; --------------------------------------------------------------------------- - -loc_9DE3: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_9E10 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_9E02: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_7DF2 - add sp, 0Ah - jmp short loc_9E23 -; --------------------------------------------------------------------------- - -loc_9E10: - test byte ptr [bp+var_16+2], 80h - jz short loc_9E23 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_9E21: - pop cx - pop cx - -loc_9E23: - ; sub_9A39+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_9E3C - jmp loc_9C56 -; --------------------------------------------------------------------------- - -loc_9E3C: - xor ax, ax - -loc_9E3E: - pop di - pop si - mov sp, bp - pop bp - retn -sub_9A39 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_9E87 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 1937h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_9E8C - -loc_9E87: - mov ax, 0FFFFh - jmp short loc_9E93 -; --------------------------------------------------------------------------- - -loc_9E8C: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9E93: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_9EEF - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_9F2D - -loc_9EEF: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A4CBh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 0A4ADh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9F2D: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_9F78 - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A4CBh - test dl, 1 - jz short loc_9F78 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_9F78: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_73EE - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_9FDC - xor ax, ax - jmp short loc_A035 -; --------------------------------------------------------------------------- - -loc_9FDC: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_9FEE - mov ax, 1 - jmp short loc_A035 -; --------------------------------------------------------------------------- - -loc_9FEE: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_A033 - mov ax, 1 - jmp short loc_A035 -; --------------------------------------------------------------------------- - -loc_A033: - xor ax, ax - -loc_A035: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_73C9 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_A097 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 93B8h - push ax ; src - push cs ; int - mov ax, 0A497h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A097: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_A0D8 proc near - ; sub_A0D8+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_A113 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_A11D - -loc_A113: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_A124 - -loc_A11D: - xor dx, dx - xor ax, ax - jmp loc_A318 -; --------------------------------------------------------------------------- - -loc_A124: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_A136: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_A13C: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_A157 - jmp loc_A2E0 -; --------------------------------------------------------------------------- - -loc_A157: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_A164 - jmp loc_A2D9 -; --------------------------------------------------------------------------- - -loc_A164: - cmp [bp+arg_1A], 0 - jz short loc_A17E - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_A17E - mov ax, 1 - jmp short loc_A180 -; --------------------------------------------------------------------------- - -loc_A17E: - xor ax, ax - -loc_A180: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_A1C7 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_A1C7: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_A249 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_A1EB - jmp loc_A2D9 -; --------------------------------------------------------------------------- - -loc_A1EB: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_A0D8 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_A232 - jmp loc_A2D9 -; --------------------------------------------------------------------------- - -loc_A232: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_A2A6 -; --------------------------------------------------------------------------- - -loc_A249: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_A26A - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_A2D9 - cmp ax, word ptr [bp+var_14] - jnz short loc_A2D9 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_A318 -; --------------------------------------------------------------------------- - -loc_A26A: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_A2A6 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_A0D8 - add sp, 20h - or ax, dx - jz short loc_A2D9 - -loc_A2A6: - ; sub_A0D8+198j - cmp [bp+var_E], 0 - jz short loc_A2C4 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_A2C4 - cmp ax, [bp+var_C] - jnz short loc_A2C4 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_A2D9 -; --------------------------------------------------------------------------- - -loc_A2C4: - ; sub_A0D8+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_A2D9: - ; sub_A0D8+110j ... - add word ptr [bp+var_4], 8 - jmp loc_A13C -; --------------------------------------------------------------------------- - -loc_A2E0: - cmp [bp+var_6], 0 - jnz short loc_A2F9 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_A136 -; --------------------------------------------------------------------------- - -loc_A2F9: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_A312 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_A312: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_A318: - ; sub_A0D8+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_A0D8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_A349 - jmp loc_A44D -; --------------------------------------------------------------------------- - -loc_A349: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_A39F - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jz short loc_A3A8 - -loc_A39F: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_A47D -; --------------------------------------------------------------------------- - -loc_A3A8: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_73EE - add sp, 8 - or ax, ax - jnz short loc_A401 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_A0D8 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_A445 - -loc_A401: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_A0D8 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_A44D - cmp [bp+var_16], 0 - jz short loc_A44D - -loc_A445: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_A47D -; --------------------------------------------------------------------------- - -loc_A44D: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_A479 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 93B9h - push ax ; src - push cs ; int - mov ax, 0A483h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A479: - xor dx, dx - xor ax, ax - -loc_A47D: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0CFh, 0A4h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 0CFh, 0A4h - dw seg seg000 - db 4 dup(0), 48h, 9Fh - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 48h, 9Fh - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -55227,8 +48541,7 @@ word_1F398 dw 0 word_1F39A dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_1F3B4 dw 1 word_1F3B6 dw 0 @@ -63114,9 +56427,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_26E20 dd ? -dword_26E24 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? diff --git a/th02_maine.asm b/th02_maine.asm index 54e40050..e8d138c9 100644 --- a/th02_maine.asm +++ b/th02_maine.asm @@ -4802,6642 +4802,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_57C9 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_57DD - mov dx, ds - mov ax, 0CE8h - jmp short loc_57EA -; --------------------------------------------------------------------------- - -loc_57DD: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_57EA: - pop di - pop si - pop bp - retf -sub_57C9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_57EE proc far - ; sub_588B+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5806 - cmp ax, word ptr [bp+arg_4] - jz short loc_5882 - -loc_5806: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_587A - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_587A - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_587A - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_585C: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_587E - -loc_587A: - xor ax, ax - jmp short loc_5885 -; --------------------------------------------------------------------------- - -loc_587E: - or dx, dx - jnz short loc_585C - -loc_5882: - mov ax, 1 - -loc_5885: - pop di - pop si - mov sp, bp - pop bp - retf -sub_57EE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_588B proc near - ; sub_588B+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_58A6: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_593A - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5933 - cmp [bp+arg_C], 0 - jz short loc_58E2 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_58E2 - mov ax, 1 - jmp short loc_58E4 -; --------------------------------------------------------------------------- - -loc_58E2: - xor ax, ax - -loc_58E4: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jz short loc_5907 - cmp [bp+var_6], 0 - jz short loc_5907 - jmp loc_59CA -; --------------------------------------------------------------------------- - -loc_5907: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5933 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_588B - add sp, 0Eh - or ax, ax - jz short loc_5933 - jmp loc_59CA -; --------------------------------------------------------------------------- - -loc_5933: - add word ptr [bp+var_4], 8 - jmp loc_58A6 -; --------------------------------------------------------------------------- - -loc_593A: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_594D: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_59D6 - cmp [bp+arg_C], 0 - jz short loc_597F - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_597F - mov ax, 1 - jmp short loc_5981 -; --------------------------------------------------------------------------- - -loc_597F: - xor ax, ax - -loc_5981: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jz short loc_59A1 - cmp [bp+var_6], 0 - jnz short loc_59CA - -loc_59A1: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_59CF - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_588B - add sp, 0Eh - or ax, ax - jz short loc_59CF - -loc_59CA: - mov ax, 1 - jmp short loc_59D8 -; --------------------------------------------------------------------------- - -loc_59CF: - ; sub_588B+13Dj - add word ptr [bp+var_4], 8 - jmp loc_594D -; --------------------------------------------------------------------------- - -loc_59D6: - xor ax, ax - -loc_59D8: - pop di - pop si - mov sp, bp - pop bp - retn -sub_588B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_59DE proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_59E9: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_59FC - cmp ax, word ptr [bp+arg_4] - jnz short loc_59FC - jmp loc_5B11 -; --------------------------------------------------------------------------- - -loc_59FC: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_5A8C - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_5A2F - jmp loc_5AD2 -; --------------------------------------------------------------------------- - -loc_5A2F: - or cx, cx - jz short loc_5A36 - jmp loc_5B4A -; --------------------------------------------------------------------------- - -loc_5A36: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_5A6C - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_5A5A - jmp loc_5B4A -; --------------------------------------------------------------------------- - -loc_5A5A: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_5AD2 - -loc_5A6C: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_5A80 - jmp loc_5B4A -; --------------------------------------------------------------------------- - -loc_5A80: - test byte ptr [bp+var_2+1], 10h - jnz short loc_5A89 - jmp loc_5B4A -; --------------------------------------------------------------------------- - -loc_5A89: - jmp loc_5B11 -; --------------------------------------------------------------------------- - -loc_5A8C: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_5AFA - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_5AB1 - cmp ax, es:[bx+0Ah] - jz short loc_5AD2 - -loc_5AB1: - or cx, cx - jz short loc_5AB8 - jmp loc_5B4A -; --------------------------------------------------------------------------- - -loc_5AB8: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_5B4A - -loc_5AD2: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_59E9 -; --------------------------------------------------------------------------- - -loc_5AFA: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jz short loc_5B16 - -loc_5B11: - ; sub_59DE:loc_5A89j - mov ax, 1 - jmp short loc_5B4C -; --------------------------------------------------------------------------- - -loc_5B16: - test byte ptr [bp+var_2], 2 - jz short loc_5B4A - test byte ptr [bp+var_4], 1 - jz short loc_5B4A - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_5B4A - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_588B - add sp, 0Eh - jmp short loc_5B4C -; --------------------------------------------------------------------------- - -loc_5B4A: - xor ax, ax - -loc_5B4C: - ; sub_59DE+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_59DE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5B52 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_5BA2 - cmp [bp+arg_0], 80h ; '€' - ja short loc_5B84 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_5B89 - -loc_5B84: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_5B89: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_5BA8 -; --------------------------------------------------------------------------- - -loc_5BA2: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_5BA8: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5B52 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_5BD6 - cmp ax, [bp+6] - jnz short loc_5BD6 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_5BE3 -; --------------------------------------------------------------------------- - -loc_5BD6: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_5BE3: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5BE7 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_59DE - add sp, 0Eh - or ax, ax - jz short loc_5C11 - jmp loc_5CAD -; --------------------------------------------------------------------------- - -loc_5C11: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_5CA1 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_59DE - add sp, 0Eh - or ax, ax - jnz short loc_5CAD - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_5CE4 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_59DE - add sp, 0Eh - or ax, ax - jnz short loc_5CAD - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_5CE4 - -loc_5CA1: - test byte ptr [bp+var_4], 10h - jz short loc_5CE4 - test [bp+arg_C], 1 - jz short loc_5CB2 - -loc_5CAD: - mov ax, 1 - jmp short loc_5CE6 -; --------------------------------------------------------------------------- - -loc_5CB2: - test byte ptr [bp+var_2], 10h - jz short loc_5CE4 - test byte ptr [bp+var_2+1], 20h - jz short loc_5CC4 - test byte ptr [bp+var_4+1], 20h - jz short loc_5CE4 - -loc_5CC4: - test byte ptr [bp+var_4], 40h - jz short loc_5CE4 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_5CE0 - mov ax, 1 - jmp short loc_5CE2 -; --------------------------------------------------------------------------- - -loc_5CE0: - xor ax, ax - -loc_5CE2: - jmp short loc_5CE6 -; --------------------------------------------------------------------------- - -loc_5CE4: - xor ax, ax - -loc_5CE6: - ; sub_5BE7:loc_5CE2j - pop di - pop si - mov sp, bp - pop bp - retn -sub_5BE7 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5CEC proc near - ; sub_6FBD+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_5D17 - or [bp+var_4], 2 - -loc_5D17: - test byte ptr [bp+arg_C], 2 - jz short loc_5D2B - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_5D2B - or [bp+var_4], 20h - -loc_5D2B: - test byte ptr [bp+arg_C], 20h - jz short loc_5D35 - or [bp+var_4], 8 - -loc_5D35: - test byte ptr [bp+arg_C], 80h - jz short loc_5D3F - or [bp+var_4], 10h - -loc_5D3F: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_5D48 - jmp loc_5ECD -; --------------------------------------------------------------------------- - -loc_5D48: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_5D53 - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5D53: - add bx, bx - jmp cs:off_600A[bx] - -loc_5D5A: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5D6C: - ; sub_5CEC+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5D7E: - ; sub_5CEC+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_5DA4 -; --------------------------------------------------------------------------- - -loc_5D92: - ; sub_5CEC+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5DA4: - add sp, 0Ah - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5DAA: - ; sub_5CEC+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5DB9: - ; sub_5CEC+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5DC8: - ; sub_5CEC+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_5DEE -; --------------------------------------------------------------------------- - -loc_5DDC: - ; sub_5CEC+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5DEE: - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5DF1: - ; sub_5CEC+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E01: - ; sub_5CEC+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_5E09: - push bx - pop bx - call [bp+arg_8] - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E11: - ; sub_5CEC+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5E1F: - call word ptr [bp+arg_8] - jmp short loc_5E35 -; --------------------------------------------------------------------------- - -loc_5E24: - ; sub_5CEC+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5E32: - call [bp+arg_8] - -loc_5E35: - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E38: - ; sub_5CEC+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_5E52 -; --------------------------------------------------------------------------- - -loc_5E46: - ; sub_5CEC+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_5E4F: - call [bp+arg_8] - -loc_5E52: - ; sub_5CEC+1FCj - pop cx - pop cx - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E57: - ; sub_5CEC+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E6E: - ; sub_5CEC+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5E85: - ; sub_5CEC+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_5E8E: - call word ptr [bp+arg_8] - jmp short loc_5E9F -; --------------------------------------------------------------------------- - -loc_5E93: - ; sub_5CEC+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_5E9C: - call [bp+arg_8] - -loc_5E9F: - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5EA2: - ; sub_5CEC+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5EB6: - ; sub_5CEC+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5ECA: - ; sub_5CEC+1EEj - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5ECD: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_5ED8 - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5ED8: - add bx, bx - jmp cs:off_5FDA[bx] - -loc_5EDF: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_5E52 -; --------------------------------------------------------------------------- - -loc_5EEB: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5E4F -; --------------------------------------------------------------------------- - -loc_5EF4: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_5F14 -; --------------------------------------------------------------------------- - -loc_5F05: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5F14: - add sp, 8 - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F1A: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5E8E -; --------------------------------------------------------------------------- - -loc_5F23: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5E9C -; --------------------------------------------------------------------------- - -loc_5F2C: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F3A: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_5E09 -; --------------------------------------------------------------------------- - -loc_5F43: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5E1F -; --------------------------------------------------------------------------- - -loc_5F52: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5E32 -; --------------------------------------------------------------------------- - -loc_5F61: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F6D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F79: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F8B: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5F9D: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5FA8: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5FB3: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_5FD3 -; --------------------------------------------------------------------------- - -loc_5FC3: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_5FD3: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_5CEC endp - -; --------------------------------------------------------------------------- -off_5FDA dw offset loc_5EDF - dw offset loc_5EEB - dw offset loc_5EF4 - dw offset loc_5F05 - dw offset loc_5F1A - dw offset loc_5F23 - dw offset loc_5F43 - dw offset loc_5F52 - dw offset loc_5F2C - dw offset loc_5F3A - dw offset loc_5F43 - dw offset loc_5F52 - dw offset loc_5FD3 - dw offset loc_5FD3 - dw offset loc_5FD3 - dw offset loc_5FD3 - dw offset loc_5F61 - dw offset loc_5F6D - dw offset loc_5F79 - dw offset loc_5F8B - dw offset loc_5F9D - dw offset loc_5FA8 - dw offset loc_5FB3 - dw offset loc_5FC3 -off_600A dw offset loc_5D5A - dw offset loc_5D6C - dw offset loc_5D7E - dw offset loc_5D92 - dw offset loc_5DAA - dw offset loc_5DB9 - dw offset loc_5DC8 - dw offset loc_5DDC - dw offset loc_5DF1 - dw offset loc_5E01 - dw offset loc_5E11 - dw offset loc_5E24 - dw offset loc_5ECA - dw offset loc_5ECA - dw offset loc_5ECA - dw offset loc_5ECA - dw offset loc_5E38 - dw offset loc_5E46 - dw offset loc_5E57 - dw offset loc_5E6E - dw offset loc_5E85 - dw offset loc_5E93 - dw offset loc_5EA2 - dw offset loc_5EB6 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_603A proc near - ; sub_6CC9+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_604D - mov ax, 2 - jmp short loc_604F -; --------------------------------------------------------------------------- - -loc_604D: - xor ax, ax - -loc_604F: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6075 - or [bp+var_6], 2 - -loc_6075: - test byte ptr [bp+arg_8], 2 - jz short loc_6089 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_6089 - or [bp+var_6], 20h - -loc_6089: - test byte ptr [bp+arg_8], 20h - jz short loc_6093 - or [bp+var_6], 8 - -loc_6093: - test byte ptr [bp+arg_8], 80h - jz short loc_609D - or [bp+var_6], 10h - -loc_609D: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_60A8 - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_60A8: - add bx, bx - jmp cs:off_61C2[bx] - -loc_60AF: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_60BD: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_60CB: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_60DD: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_60EF: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_60FA: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_6152 -; --------------------------------------------------------------------------- - -loc_6102: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_611C -; --------------------------------------------------------------------------- - -loc_6110: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_611C: - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_611F: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_612D: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_61BB -; --------------------------------------------------------------------------- - -loc_613B: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_6149: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_6152: - call [bp+arg_4] - -loc_6155: - ; sub_603A+10Dj - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_6157: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_6163: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_616F: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_617D: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_618B: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_6196: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_61A1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_61BB -; --------------------------------------------------------------------------- - -loc_61AE: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_61BB: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_603A endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_61C2 dw offset loc_60AF - dw offset loc_60BD - dw offset loc_60CB - dw offset loc_60DD - dw offset loc_60EF - dw offset loc_60FA - dw offset loc_6102 - dw offset loc_6110 - dw offset loc_611F - dw offset loc_612D - dw offset loc_613B - dw offset loc_6149 - dw offset loc_61BB - dw offset loc_61BB - dw offset loc_61BB - dw offset loc_61BB - dw offset loc_6157 - dw offset loc_6163 - dw offset loc_616F - dw offset loc_617D - dw offset loc_618B - dw offset loc_6196 - dw offset loc_61A1 - dw offset loc_61AE - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_61F2 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_621D - or [bp+var_4], 2 - -loc_621D: - test byte ptr [bp+arg_8], 2 - jz short loc_6227 - or [bp+var_4], 4 - -loc_6227: - test byte ptr [bp+arg_8], 20h - jz short loc_6231 - or [bp+var_4], 8 - -loc_6231: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_62A4 - add bx, bx - jmp cs:off_62AB[bx] - -loc_6240: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_6249: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_6252: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6266 -; --------------------------------------------------------------------------- - -loc_625D: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6266: - pop cx - pop cx - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_626A: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6278 -; --------------------------------------------------------------------------- - -loc_6272: - push [bp+arg_0] - call [bp+arg_4] - -loc_6278: - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_627A: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_6284: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_62A4 -; --------------------------------------------------------------------------- - -loc_628E: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62A2 -; --------------------------------------------------------------------------- - -loc_6299: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_62A2: - jmp short $+2 - -loc_62A4: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_61F2 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_62AB dw offset loc_6240 - dw offset loc_6249 - dw offset loc_6252 - dw offset loc_625D - dw offset loc_626A - dw offset loc_6272 - dw offset loc_628E - dw offset loc_6299 - dw offset loc_627A - dw offset loc_6284 - dw offset loc_628E - dw offset loc_6299 - db 4 dup(0), 81h, 65h - dw seg seg000 - db 14h dup(0), 0DAh, 65h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0C3h, 62h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0DBh, 62h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6311(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6311 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 62F3h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_639D -; --------------------------------------------------------------------------- - -loc_637A: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_639A - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_639A: - inc word ptr [bp+var_34] - -loc_639D: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_637A - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_63FA - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_63FC -; --------------------------------------------------------------------------- - -loc_63FA: - xor ax, ax - -loc_63FC: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6416 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6416: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_5B52 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 5BAEh - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_65A0 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_5CEC - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_658B -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_658B: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_65A0: - cmp [bp+arg_1E], 0 - jnz short loc_65E4 - test byte ptr [bp+var_2C], 2 - jz short loc_65E4 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_603A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_65E4 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_65E4: - ; sub_6311+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6311 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6311 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_66D4 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_66D4: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6720 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6729 -; --------------------------------------------------------------------------- - -loc_6720: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6729: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6311 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6743 proc far - push si - push di - pop di - pop si - retf -sub_6743 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6748 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_6762 - inc [bp+var_4] - -loc_6762: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6743 - jmp short loc_67B0 -; --------------------------------------------------------------------------- - -loc_676F: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_679A - mov ax, dx - jmp short loc_67CE -; --------------------------------------------------------------------------- - -loc_679A: - cmp [bp+var_4], 0 - jz short loc_67A7 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_67A7: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_67B0: - cmp [bp+var_2], 0FFFFh - jz short loc_67BE - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_676F - -loc_67BE: - cmp [bp+var_4], 0 - jz short loc_67CB - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_67CB: - mov ax, 1 - -loc_67CE: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6748 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_67FF - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_67FF: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6748 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_681B proc far - push si - push di - pop di - pop si - retf -sub_681B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 6C92 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_681B - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_6849 - jmp loc_68FF -; --------------------------------------------------------------------------- - -loc_6849: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6948 -; --------------------------------------------------------------------------- - -loc_68FF: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6948: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_6979 - cmp [bp+arg_0], 0FACEh - jnz short loc_6979 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_6987 -; --------------------------------------------------------------------------- - -loc_6979: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_6987: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_6A58 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_6A58: - cmp [bp+arg_A], 0 - jb short loc_6A70 - ja short loc_6A66 - cmp [bp+arg_8], 0Fh - jbe short loc_6A70 - -loc_6A66: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_6A70: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_6AA6 -; --------------------------------------------------------------------------- - -loc_6A7D: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_6AA6: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_6A7D - jnz short loc_6AB7 - cmp ax, [bp+arg_8] - jb short loc_6A7D - -loc_6AB7: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6748 - add sp, 8 - or ax, ax - jnz short loc_6B02 - test byte ptr [bp+arg_4], 1 - jz short loc_6B22 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_6AB7 -; --------------------------------------------------------------------------- - -loc_6B02: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6748 - add sp, 8 - or ax, ax - jz short loc_6B22 - jmp loc_6C8D -; --------------------------------------------------------------------------- - -loc_6B22: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_6B2C - jmp loc_6C0C -; --------------------------------------------------------------------------- - -loc_6B2C: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_6C92 -; --------------------------------------------------------------------------- - -loc_6C0C: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_6C92 -; --------------------------------------------------------------------------- - -loc_6C8D: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_6C92: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 1, 6Dh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Fh, 6Ch - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6CC9 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 6CB7h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_603A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6D0B -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6D0B: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_6CC9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D19 proc near - ; sub_7263+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6D94 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_6D8C - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_6CC9 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6D8C: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_6D94: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_6DEB - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_6DE3 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_6DE3 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_6CC9 - add sp, 0Ah - -loc_6DE3: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_6DEB: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6D19 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6311+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_6D19 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6E6E proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_6E76: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_6E93 - xor ax, ax - jmp loc_6F34 -; --------------------------------------------------------------------------- - -loc_6E93: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_6EBF - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6EBF: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_6F18 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_6F2D - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_6F2D - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_6E6E - add sp, 0Ch - or ax, ax - jz short loc_6F2D - -loc_6F18: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_6F34 -; --------------------------------------------------------------------------- - -loc_6F2D: - add word ptr [bp+arg_0], 8 - jmp loc_6E76 -; --------------------------------------------------------------------------- - -loc_6F34: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6E6E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6F3A proc far - ; sub_6FBD+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_6FAB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6E6E - add sp, 0Ch - or ax, ax - jnz short loc_6FAB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6E6E - add sp, 0Ch - or ax, ax - jz short loc_6FB3 - -loc_6FAB: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_6FB7 -; --------------------------------------------------------------------------- - -loc_6FB3: - xor dx, dx - xor ax, ax - -loc_6FB7: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6F3A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6FBD proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_6FEC - jmp loc_725D -; --------------------------------------------------------------------------- - -loc_6FEC: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_6FF9 - jmp loc_725D -; --------------------------------------------------------------------------- - -loc_6FF9: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_706D - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_706D: - test cl, 10h - jz short loc_7095 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_7095 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_71C0 -; --------------------------------------------------------------------------- - -loc_7095: - test dl, 1 - jnz short loc_709D - jmp loc_7141 -; --------------------------------------------------------------------------- - -loc_709D: - test cl, 30h - jnz short loc_70A5 - jmp loc_7141 -; --------------------------------------------------------------------------- - -loc_70A5: - test cl, 20h - jz short loc_70AC - jmp short loc_70CF -; --------------------------------------------------------------------------- - -loc_70AC: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_70D6 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_70CF: - mov [bp+var_14], 1 - jmp short $+2 - -loc_70D6: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_7137 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_6F3A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_7132 - cmp ax, [bp+var_18] - jz short loc_7137 - -loc_7132: - mov [bp+var_14], 1 - -loc_7137: - ; sub_6FBD+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_720B -; --------------------------------------------------------------------------- - -loc_7141: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_71C7 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_7190 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_6F3A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_7190: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_720E - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_5CEC - add sp, 0Eh - -loc_71C0: - ; sub_6FBD+227j - mov [bp+var_14], 1 - jmp short loc_7227 -; --------------------------------------------------------------------------- - -loc_71C7: - test cl, 20h - jz short loc_71E6 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_71C0 -; --------------------------------------------------------------------------- - -loc_71E6: - test cl, 10h - jz short loc_720E - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_720E - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_720B: - push ax - jmp short loc_7217 -; --------------------------------------------------------------------------- - -loc_720E: - ; sub_6FBD+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7217: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7227: - cmp [bp+var_14], 0 - jnz short loc_725D - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7255 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6CC9 - add sp, 0Ah - -loc_7255: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_725D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6FBD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7263 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7408 -; --------------------------------------------------------------------------- - -loc_72BB: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_72F6 - jmp loc_7405 -; --------------------------------------------------------------------------- - -loc_72F6: - add bx, bx - jmp cs:off_7422[bx] - -loc_72FD: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_FC58+2, dx - mov word ptr dword_FC58, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_FC58 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7405 -; --------------------------------------------------------------------------- - -loc_7338: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_7367 -; --------------------------------------------------------------------------- - -loc_7347: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_7361 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_7361 - jmp short loc_7381 -; --------------------------------------------------------------------------- - -loc_7361: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_7367: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7347 - -loc_7381: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_6D19 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7405 -; --------------------------------------------------------------------------- - -loc_73BA: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_7E39 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7405: - mov ax, [bp+var_8] - -loc_7408: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_741C - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_741C - jmp loc_72BB -; --------------------------------------------------------------------------- - -loc_741C: - ; sub_7263+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_7263 endp - -; --------------------------------------------------------------------------- -off_7422 dw offset loc_72FD - dw offset loc_7405 - dw offset loc_7405 - dw offset loc_7405 - dw offset loc_7338 - dw offset loc_73BA - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_7263 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_7263 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7478 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_74E6 -; --------------------------------------------------------------------------- - -loc_7491: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_74DA - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5BE7 - add sp, 10h - or ax, ax - jz short loc_74E2 - -loc_74DA: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_74F6 -; --------------------------------------------------------------------------- - -loc_74E2: - add word ptr [bp+var_4], 10h - -loc_74E6: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7491 - xor dx, dx - xor ax, ax - -loc_74F6: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7478 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_7590 - jmp loc_7638 -; --------------------------------------------------------------------------- - -loc_7590: - xor ax, ax - push ax - push [bp+var_4] - call sub_7263 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_75A9 - jmp loc_786B -; --------------------------------------------------------------------------- - -loc_75A9: - cmp word ptr ss:[bx], 0FACEh - jz short loc_75B3 - jmp loc_786B -; --------------------------------------------------------------------------- - -loc_75B3: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_75CE - jmp loc_786B -; --------------------------------------------------------------------------- - -loc_75CE: - jmp short loc_760C -; --------------------------------------------------------------------------- - -loc_75D0: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5BE7 - add sp, 10h - or ax, ax - jz short loc_7608 - jmp loc_786B -; --------------------------------------------------------------------------- - -loc_7608: - add word ptr [bp+var_20], 4 - -loc_760C: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_75D0 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_786B -; --------------------------------------------------------------------------- - -loc_7638: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_785F -; --------------------------------------------------------------------------- - -loc_7642: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_7673 - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_7673: - add bx, bx - jmp cs:off_7874[bx] - -loc_767A: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7688 - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_7688: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7692 - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_7692: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_7478 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_76CC - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_76CC: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7700: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_7263 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_7752 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_6FBD - add sp, 10h - -loc_7752: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_776B: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7780 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7780 - jmp loc_785C -; --------------------------------------------------------------------------- - -loc_7780: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_FC5C+2, dx - mov word ptr dword_FC5C, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_FC5C - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7817 -; --------------------------------------------------------------------------- - -loc_77E2: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_77F6 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_77F6 - jmp short loc_785C -; --------------------------------------------------------------------------- - -loc_77F6: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7817: - cmp [bp+var_38], 0 - jge short loc_7835 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_7831 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_7831: - xor ax, ax - jmp short loc_786E -; --------------------------------------------------------------------------- - -loc_7835: - cmp [bp+var_38], 0 - jnz short loc_783D - jmp short loc_785C -; --------------------------------------------------------------------------- - -loc_783D: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7700 -; --------------------------------------------------------------------------- - -loc_785C: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_785F: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_786B - jmp loc_7642 -; --------------------------------------------------------------------------- - -loc_786B: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_786E: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_7874 dw offset loc_785C - dw offset loc_776B - dw offset loc_77E2 - dw offset loc_767A - dw offset loc_785C - dw offset loc_785C - db 4 dup(0), 13h, 79h - dw seg seg000 - db 14h dup(0), 23h, 79h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 98h, 78h - dw seg seg000 - dw 0 - db 4, 0, 6, 0, 3, 0, 80h, 78h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78CE proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 78B0h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_603A - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_791C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_791C: - mov [bp+var_12], 0 - jmp short loc_792C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_792C: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_78CE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_793A proc far - ; sub_79BB+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_79A9 -; --------------------------------------------------------------------------- - -loc_7947: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_796F - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_796F: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_79A9 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_79BB - add sp, 10h - xor cx, cx - -loc_79A9: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7947 - pop di - pop si - mov sp, bp - pop bp - retf -sub_793A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_79BB proc far - ; sub_79BB+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_79D2 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_79D9 -; --------------------------------------------------------------------------- - -loc_79D2: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_79D9: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_79FB - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_7A14 - jnz short loc_79FB - cmp ax, [bp+var_1C] - jb short loc_7A14 - -loc_79FB: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_78CE - add sp, 0Ah - jmp loc_7C80 -; --------------------------------------------------------------------------- - -loc_7A14: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_7AAD - -loc_7A3F: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7AAD - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7AA7 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7AA0 - jnz short loc_7A76 - cmp bx, [bp+var_1C] - jb short loc_7AA0 - -loc_7A76: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_7A90: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_793A - add sp, 12h - jmp loc_7C80 -; --------------------------------------------------------------------------- - -loc_7AA0: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7AA7: - add word ptr [bp+var_10], 8 - jmp short loc_7A3F -; --------------------------------------------------------------------------- - -loc_7AAD: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_7AC6: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7B3C - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7B36 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7B2F - jnz short loc_7AFD - cmp bx, [bp+var_1C] - jb short loc_7B2F - -loc_7AFD: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_793A - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_7B2C - jmp loc_7C80 -; --------------------------------------------------------------------------- - -loc_7B2C: - jmp loc_7C60 -; --------------------------------------------------------------------------- - -loc_7B2F: - ; sub_79BB+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7B36: - add word ptr [bp+var_8], 8 - jmp short loc_7AC6 -; --------------------------------------------------------------------------- - -loc_7B3C: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_7B55: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_7B8F - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_7B8F: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_7BB3 - jb short loc_7BA9 - cmp bx, [bp+var_1C] - jnb short loc_7BB3 - -loc_7BA9: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_7C79 -; --------------------------------------------------------------------------- - -loc_7BB3: - ; sub_79BB+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_7BFF - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_7C86 - add sp, 0Eh - jmp short loc_7C1F -; --------------------------------------------------------------------------- - -loc_7BFF: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_79BB - add sp, 10h - -loc_7C1F: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_7C38 - jmp loc_7BB3 -; --------------------------------------------------------------------------- - -loc_7C38: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_793A - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_7C80 - -loc_7C60: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_7A90 -; --------------------------------------------------------------------------- - -loc_7C79: - add word ptr [bp+var_18], 6 - jmp loc_7B55 -; --------------------------------------------------------------------------- - -loc_7C80: - pop di - pop si - mov sp, bp - pop bp - retf -sub_79BB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7C86 proc far - ; sub_7E39+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_7CE0 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_7CE0: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7D70 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_7D5D -; --------------------------------------------------------------------------- - -loc_7D3E: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_7D5D: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_79BB - add sp, 10h - -loc_7D70: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_7D3E - pop di - pop si - mov sp, bp - pop bp - retf -sub_7C86 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7D88 proc far - ; sub_7E39+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_7E2D - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_7E2D - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_7DE7 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_7DF0 -; --------------------------------------------------------------------------- - -loc_7DE7: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_7DF0: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_7E2D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_7D88 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7E39 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_7E4F - jmp loc_823C -; --------------------------------------------------------------------------- - -loc_7E4F: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_7EA8 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_7EA8: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_7EBF - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_823E -; --------------------------------------------------------------------------- - -loc_7EBF: - cmp [bp+var_6], 0 - jg short loc_7EF1 - jnz short loc_7ECD - cmp [bp+var_8], 0 - ja short loc_7EF1 - -loc_7ECD: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_7EDF - jmp loc_823C -; --------------------------------------------------------------------------- - -loc_7EDF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_8056 -; --------------------------------------------------------------------------- - -loc_7EF1: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_7EFD: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7F10 - sub word ptr [bp+var_C], 0Ah - jmp loc_8056 -; --------------------------------------------------------------------------- - -loc_7F10: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_7F38 - jmp loc_8002 -; --------------------------------------------------------------------------- - -loc_7F38: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_7F5C - jmp loc_8002 -; --------------------------------------------------------------------------- - -loc_7F5C: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_7F69 - jmp loc_8002 -; --------------------------------------------------------------------------- - -loc_7F69: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_7F76 - jmp loc_8002 -; --------------------------------------------------------------------------- - -loc_7F76: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_7F8F - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_7F9D -; --------------------------------------------------------------------------- - -loc_7F8F: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_7F9D: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_7FC5 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_7FCE -; --------------------------------------------------------------------------- - -loc_7FC5: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_7FCE: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_7FDF - add word ptr [bp+var_1C], 4 - -loc_7FDF: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_7D88 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8002: - ; sub_7E39+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8027 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8027: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8045 - jnz short loc_8056 - cmp ax, [bp+var_8] - jnb short loc_8056 - -loc_8045: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_7EFD -; --------------------------------------------------------------------------- - -loc_8056: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_8085 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_8093 -; --------------------------------------------------------------------------- - -loc_8085: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_8093: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_809F - jmp loc_8129 -; --------------------------------------------------------------------------- - -loc_809F: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_80D1 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_80DA -; --------------------------------------------------------------------------- - -loc_80D1: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_80DA: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_80F8 - add [bp+var_18], 4 - -loc_80F8: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8129 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8129 - test byte ptr [bp+var_16+2], 8 - jz short loc_8129 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7D88 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8129: - ; sub_7E39+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_8177 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8157 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7C86 - add sp, 0Eh - jmp short loc_8177 -; --------------------------------------------------------------------------- - -loc_8157: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_79BB - add sp, 10h - -loc_8177: - ; sub_7E39+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_8185 - jmp loc_8223 -; --------------------------------------------------------------------------- - -loc_8185: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_8194 - sub word ptr [bp+driver], 4 - -loc_8194: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_81E3 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_81D0 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8202 -; --------------------------------------------------------------------------- - -loc_81D0: - test byte ptr [bp+var_16+2], 80h - jz short loc_8223 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8221 -; --------------------------------------------------------------------------- - -loc_81E3: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8210 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8202: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_61F2 - add sp, 0Ah - jmp short loc_8223 -; --------------------------------------------------------------------------- - -loc_8210: - test byte ptr [bp+var_16+2], 80h - jz short loc_8223 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8221: - pop cx - pop cx - -loc_8223: - ; sub_7E39+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_823C - jmp loc_8056 -; --------------------------------------------------------------------------- - -loc_823C: - xor ax, ax - -loc_823E: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7E39 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_8287 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 0CF1h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_828C - -loc_8287: - mov ax, 0FFFFh - jmp short loc_8293 -; --------------------------------------------------------------------------- - -loc_828C: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_8293: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_82EF - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_832D - -loc_82EF: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 88CBh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 88ADh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_832D: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_8378 - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 88CBh - test dl, 1 - jz short loc_8378 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_8378: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_57EE - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_83DC - xor ax, ax - jmp short loc_8435 -; --------------------------------------------------------------------------- - -loc_83DC: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_83EE - mov ax, 1 - jmp short loc_8435 -; --------------------------------------------------------------------------- - -loc_83EE: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8433 - mov ax, 1 - jmp short loc_8435 -; --------------------------------------------------------------------------- - -loc_8433: - xor ax, ax - -loc_8435: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_57C9 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8497 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 2CE0h - push ax ; src - push cs ; int - mov ax, 8897h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8497: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_84D8 proc near - ; sub_84D8+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8513 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_851D - -loc_8513: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8524 - -loc_851D: - xor dx, dx - xor ax, ax - jmp loc_8718 -; --------------------------------------------------------------------------- - -loc_8524: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8536: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_853C: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_8557 - jmp loc_86E0 -; --------------------------------------------------------------------------- - -loc_8557: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_8564 - jmp loc_86D9 -; --------------------------------------------------------------------------- - -loc_8564: - cmp [bp+arg_1A], 0 - jz short loc_857E - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_857E - mov ax, 1 - jmp short loc_8580 -; --------------------------------------------------------------------------- - -loc_857E: - xor ax, ax - -loc_8580: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_85C7 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_85C7: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_8649 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_85EB - jmp loc_86D9 -; --------------------------------------------------------------------------- - -loc_85EB: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_84D8 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8632 - jmp loc_86D9 -; --------------------------------------------------------------------------- - -loc_8632: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_86A6 -; --------------------------------------------------------------------------- - -loc_8649: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_866A - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_86D9 - cmp ax, word ptr [bp+var_14] - jnz short loc_86D9 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8718 -; --------------------------------------------------------------------------- - -loc_866A: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_86A6 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_84D8 - add sp, 20h - or ax, dx - jz short loc_86D9 - -loc_86A6: - ; sub_84D8+198j - cmp [bp+var_E], 0 - jz short loc_86C4 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_86C4 - cmp ax, [bp+var_C] - jnz short loc_86C4 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_86D9 -; --------------------------------------------------------------------------- - -loc_86C4: - ; sub_84D8+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_86D9: - ; sub_84D8+110j ... - add word ptr [bp+var_4], 8 - jmp loc_853C -; --------------------------------------------------------------------------- - -loc_86E0: - cmp [bp+var_6], 0 - jnz short loc_86F9 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8536 -; --------------------------------------------------------------------------- - -loc_86F9: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8712 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8712: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8718: - ; sub_84D8+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_84D8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8749 - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_8749: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_879F - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jz short loc_87A8 - -loc_879F: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_887D -; --------------------------------------------------------------------------- - -loc_87A8: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_57EE - add sp, 8 - or ax, ax - jnz short loc_8801 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_84D8 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_8845 - -loc_8801: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_84D8 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_884D - cmp [bp+var_16], 0 - jz short loc_884D - -loc_8845: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_887D -; --------------------------------------------------------------------------- - -loc_884D: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_8879 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 2CE1h - push ax ; src - push cs ; int - mov ax, 8883h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8879: - xor dx, dx - xor ax, ax - -loc_887D: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0CFh, 88h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 0CFh, 88h - dw seg seg000 - db 4 dup(0), 48h, 83h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 48h, 83h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -20121,8 +13486,7 @@ word_DC62 dw 0 word_DC64 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_DC7E dw 1 word_DC80 dw 0 @@ -21932,9 +15296,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_FC58 dd ? -dword_FC5C dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? ; diff --git a/th02_op.asm b/th02_op.asm index 772eb52e..1413691c 100644 --- a/th02_op.asm +++ b/th02_op.asm @@ -5081,6649 +5081,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5E16 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_5E2A - mov dx, ds - mov ax, 10FEh - jmp short loc_5E37 -; --------------------------------------------------------------------------- - -loc_5E2A: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_5E37: - pop di - pop si - pop bp - retf -sub_5E16 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5E3B proc far - ; sub_5ED8+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5E53 - cmp ax, word ptr [bp+arg_4] - jz short loc_5ECF - -loc_5E53: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_5EC7 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_5EC7 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_5EC7 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_5EA9: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_5ECB - -loc_5EC7: - xor ax, ax - jmp short loc_5ED2 -; --------------------------------------------------------------------------- - -loc_5ECB: - or dx, dx - jnz short loc_5EA9 - -loc_5ECF: - mov ax, 1 - -loc_5ED2: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5E3B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5ED8 proc near - ; sub_5ED8+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5EF3: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5F87 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5F80 - cmp [bp+arg_C], 0 - jz short loc_5F2F - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5F2F - mov ax, 1 - jmp short loc_5F31 -; --------------------------------------------------------------------------- - -loc_5F2F: - xor ax, ax - -loc_5F31: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jz short loc_5F54 - cmp [bp+var_6], 0 - jz short loc_5F54 - jmp loc_6017 -; --------------------------------------------------------------------------- - -loc_5F54: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5F80 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5ED8 - add sp, 0Eh - or ax, ax - jz short loc_5F80 - jmp loc_6017 -; --------------------------------------------------------------------------- - -loc_5F80: - add word ptr [bp+var_4], 8 - jmp loc_5EF3 -; --------------------------------------------------------------------------- - -loc_5F87: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5F9A: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6023 - cmp [bp+arg_C], 0 - jz short loc_5FCC - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5FCC - mov ax, 1 - jmp short loc_5FCE -; --------------------------------------------------------------------------- - -loc_5FCC: - xor ax, ax - -loc_5FCE: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jz short loc_5FEE - cmp [bp+var_6], 0 - jnz short loc_6017 - -loc_5FEE: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_601C - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5ED8 - add sp, 0Eh - or ax, ax - jz short loc_601C - -loc_6017: - mov ax, 1 - jmp short loc_6025 -; --------------------------------------------------------------------------- - -loc_601C: - ; sub_5ED8+13Dj - add word ptr [bp+var_4], 8 - jmp loc_5F9A -; --------------------------------------------------------------------------- - -loc_6023: - xor ax, ax - -loc_6025: - pop di - pop si - mov sp, bp - pop bp - retn -sub_5ED8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_602B proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_6036: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6049 - cmp ax, word ptr [bp+arg_4] - jnz short loc_6049 - jmp loc_615E -; --------------------------------------------------------------------------- - -loc_6049: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_60D9 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_607C - jmp loc_611F -; --------------------------------------------------------------------------- - -loc_607C: - or cx, cx - jz short loc_6083 - jmp loc_6197 -; --------------------------------------------------------------------------- - -loc_6083: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_60B9 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_60A7 - jmp loc_6197 -; --------------------------------------------------------------------------- - -loc_60A7: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_611F - -loc_60B9: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_60CD - jmp loc_6197 -; --------------------------------------------------------------------------- - -loc_60CD: - test byte ptr [bp+var_2+1], 10h - jnz short loc_60D6 - jmp loc_6197 -; --------------------------------------------------------------------------- - -loc_60D6: - jmp loc_615E -; --------------------------------------------------------------------------- - -loc_60D9: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_6147 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_60FE - cmp ax, es:[bx+0Ah] - jz short loc_611F - -loc_60FE: - or cx, cx - jz short loc_6105 - jmp loc_6197 -; --------------------------------------------------------------------------- - -loc_6105: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6197 - -loc_611F: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_6036 -; --------------------------------------------------------------------------- - -loc_6147: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jz short loc_6163 - -loc_615E: - ; sub_602B:loc_60D6j - mov ax, 1 - jmp short loc_6199 -; --------------------------------------------------------------------------- - -loc_6163: - test byte ptr [bp+var_2], 2 - jz short loc_6197 - test byte ptr [bp+var_4], 1 - jz short loc_6197 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6197 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5ED8 - add sp, 0Eh - jmp short loc_6199 -; --------------------------------------------------------------------------- - -loc_6197: - xor ax, ax - -loc_6199: - ; sub_602B+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_602B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_619F proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_61EF - cmp [bp+arg_0], 80h ; '€' - ja short loc_61D1 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_61D6 - -loc_61D1: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_61D6: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_61F5 -; --------------------------------------------------------------------------- - -loc_61EF: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_61F5: - pop di - pop si - mov sp, bp - pop bp - retf -sub_619F endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_6223 - cmp ax, [bp+6] - jnz short loc_6223 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_6230 -; --------------------------------------------------------------------------- - -loc_6223: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_6230: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6234 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_602B - add sp, 0Eh - or ax, ax - jz short loc_625E - jmp loc_62FA -; --------------------------------------------------------------------------- - -loc_625E: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_62EE - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_602B - add sp, 0Eh - or ax, ax - jnz short loc_62FA - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6331 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_602B - add sp, 0Eh - or ax, ax - jnz short loc_62FA - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6331 - -loc_62EE: - test byte ptr [bp+var_4], 10h - jz short loc_6331 - test [bp+arg_C], 1 - jz short loc_62FF - -loc_62FA: - mov ax, 1 - jmp short loc_6333 -; --------------------------------------------------------------------------- - -loc_62FF: - test byte ptr [bp+var_2], 10h - jz short loc_6331 - test byte ptr [bp+var_2+1], 20h - jz short loc_6311 - test byte ptr [bp+var_4+1], 20h - jz short loc_6331 - -loc_6311: - test byte ptr [bp+var_4], 40h - jz short loc_6331 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_632D - mov ax, 1 - jmp short loc_632F -; --------------------------------------------------------------------------- - -loc_632D: - xor ax, ax - -loc_632F: - jmp short loc_6333 -; --------------------------------------------------------------------------- - -loc_6331: - xor ax, ax - -loc_6333: - ; sub_6234:loc_632Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_6234 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6339 proc near - ; sub_760A+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6364 - or [bp+var_4], 2 - -loc_6364: - test byte ptr [bp+arg_C], 2 - jz short loc_6378 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6378 - or [bp+var_4], 20h - -loc_6378: - test byte ptr [bp+arg_C], 20h - jz short loc_6382 - or [bp+var_4], 8 - -loc_6382: - test byte ptr [bp+arg_C], 80h - jz short loc_638C - or [bp+var_4], 10h - -loc_638C: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_6395 - jmp loc_651A -; --------------------------------------------------------------------------- - -loc_6395: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_63A0 - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_63A0: - add bx, bx - jmp cs:off_6657[bx] - -loc_63A7: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_63B9: - ; sub_6339+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_63CB: - ; sub_6339+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_63F1 -; --------------------------------------------------------------------------- - -loc_63DF: - ; sub_6339+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_63F1: - add sp, 0Ah - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_63F7: - ; sub_6339+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6406: - ; sub_6339+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6415: - ; sub_6339+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_643B -; --------------------------------------------------------------------------- - -loc_6429: - ; sub_6339+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_643B: - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_643E: - ; sub_6339+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_644E: - ; sub_6339+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_6456: - push bx - pop bx - call [bp+arg_8] - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_645E: - ; sub_6339+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_646C: - call word ptr [bp+arg_8] - jmp short loc_6482 -; --------------------------------------------------------------------------- - -loc_6471: - ; sub_6339+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_647F: - call [bp+arg_8] - -loc_6482: - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6485: - ; sub_6339+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_649F -; --------------------------------------------------------------------------- - -loc_6493: - ; sub_6339+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_649C: - call [bp+arg_8] - -loc_649F: - ; sub_6339+1FCj - pop cx - pop cx - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_64A4: - ; sub_6339+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_64BB: - ; sub_6339+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_64D2: - ; sub_6339+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_64DB: - call word ptr [bp+arg_8] - jmp short loc_64EC -; --------------------------------------------------------------------------- - -loc_64E0: - ; sub_6339+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_64E9: - call [bp+arg_8] - -loc_64EC: - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_64EF: - ; sub_6339+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6503: - ; sub_6339+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6517: - ; sub_6339+1EEj - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_651A: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6525 - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6525: - add bx, bx - jmp cs:off_6627[bx] - -loc_652C: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_649F -; --------------------------------------------------------------------------- - -loc_6538: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_649C -; --------------------------------------------------------------------------- - -loc_6541: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_6561 -; --------------------------------------------------------------------------- - -loc_6552: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6561: - add sp, 8 - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6567: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_64DB -; --------------------------------------------------------------------------- - -loc_6570: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_64E9 -; --------------------------------------------------------------------------- - -loc_6579: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6620 -; --------------------------------------------------------------------------- - -loc_6587: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_6456 -; --------------------------------------------------------------------------- - -loc_6590: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_646C -; --------------------------------------------------------------------------- - -loc_659F: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_647F -; --------------------------------------------------------------------------- - -loc_65AE: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_65BA: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_65C6: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_65D8: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_65EA: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_65F5: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_6600: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_6620 -; --------------------------------------------------------------------------- - -loc_6610: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6620: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6339 endp - -; --------------------------------------------------------------------------- -off_6627 dw offset loc_652C - dw offset loc_6538 - dw offset loc_6541 - dw offset loc_6552 - dw offset loc_6567 - dw offset loc_6570 - dw offset loc_6590 - dw offset loc_659F - dw offset loc_6579 - dw offset loc_6587 - dw offset loc_6590 - dw offset loc_659F - dw offset loc_6620 - dw offset loc_6620 - dw offset loc_6620 - dw offset loc_6620 - dw offset loc_65AE - dw offset loc_65BA - dw offset loc_65C6 - dw offset loc_65D8 - dw offset loc_65EA - dw offset loc_65F5 - dw offset loc_6600 - dw offset loc_6610 -off_6657 dw offset loc_63A7 - dw offset loc_63B9 - dw offset loc_63CB - dw offset loc_63DF - dw offset loc_63F7 - dw offset loc_6406 - dw offset loc_6415 - dw offset loc_6429 - dw offset loc_643E - dw offset loc_644E - dw offset loc_645E - dw offset loc_6471 - dw offset loc_6517 - dw offset loc_6517 - dw offset loc_6517 - dw offset loc_6517 - dw offset loc_6485 - dw offset loc_6493 - dw offset loc_64A4 - dw offset loc_64BB - dw offset loc_64D2 - dw offset loc_64E0 - dw offset loc_64EF - dw offset loc_6503 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6687 proc near - ; sub_7316+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_669A - mov ax, 2 - jmp short loc_669C -; --------------------------------------------------------------------------- - -loc_669A: - xor ax, ax - -loc_669C: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_66C2 - or [bp+var_6], 2 - -loc_66C2: - test byte ptr [bp+arg_8], 2 - jz short loc_66D6 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_66D6 - or [bp+var_6], 20h - -loc_66D6: - test byte ptr [bp+arg_8], 20h - jz short loc_66E0 - or [bp+var_6], 8 - -loc_66E0: - test byte ptr [bp+arg_8], 80h - jz short loc_66EA - or [bp+var_6], 10h - -loc_66EA: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_66F5 - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_66F5: - add bx, bx - jmp cs:off_680F[bx] - -loc_66FC: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_670A: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_6718: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_672A: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_673C: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_67A2 -; --------------------------------------------------------------------------- - -loc_6747: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_679F -; --------------------------------------------------------------------------- - -loc_674F: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6769 -; --------------------------------------------------------------------------- - -loc_675D: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_6769: - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_676C: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_677A: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_6808 -; --------------------------------------------------------------------------- - -loc_6788: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_67A2 -; --------------------------------------------------------------------------- - -loc_6796: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_679F: - call [bp+arg_4] - -loc_67A2: - ; sub_6687+10Dj - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67A4: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67B0: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67BC: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67CA: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67D8: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67E3: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67EE: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_6808 -; --------------------------------------------------------------------------- - -loc_67FB: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_6808: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6687 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_680F dw offset loc_66FC - dw offset loc_670A - dw offset loc_6718 - dw offset loc_672A - dw offset loc_673C - dw offset loc_6747 - dw offset loc_674F - dw offset loc_675D - dw offset loc_676C - dw offset loc_677A - dw offset loc_6788 - dw offset loc_6796 - dw offset loc_6808 - dw offset loc_6808 - dw offset loc_6808 - dw offset loc_6808 - dw offset loc_67A4 - dw offset loc_67B0 - dw offset loc_67BC - dw offset loc_67CA - dw offset loc_67D8 - dw offset loc_67E3 - dw offset loc_67EE - dw offset loc_67FB - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_683F proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_686A - or [bp+var_4], 2 - -loc_686A: - test byte ptr [bp+arg_8], 2 - jz short loc_6874 - or [bp+var_4], 4 - -loc_6874: - test byte ptr [bp+arg_8], 20h - jz short loc_687E - or [bp+var_4], 8 - -loc_687E: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_68F1 - add bx, bx - jmp cs:off_68F8[bx] - -loc_688D: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_6896: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_689F: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_68B3 -; --------------------------------------------------------------------------- - -loc_68AA: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_68B3: - pop cx - pop cx - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_68B7: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_68C5 -; --------------------------------------------------------------------------- - -loc_68BF: - push [bp+arg_0] - call [bp+arg_4] - -loc_68C5: - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_68C7: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_68D1: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_68F1 -; --------------------------------------------------------------------------- - -loc_68DB: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_68EF -; --------------------------------------------------------------------------- - -loc_68E6: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_68EF: - jmp short $+2 - -loc_68F1: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_683F endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_68F8 dw offset loc_688D - dw offset loc_6896 - dw offset loc_689F - dw offset loc_68AA - dw offset loc_68B7 - dw offset loc_68BF - dw offset loc_68DB - dw offset loc_68E6 - dw offset loc_68C7 - dw offset loc_68D1 - dw offset loc_68DB - dw offset loc_68E6 - db 4 dup(0), 0CEh, 6Bh - dw seg seg000 - db 14h dup(0), 27h, 6Ch - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 10h, 69h - dw seg seg000 - db 0 - db 0 - db 4, 3 dup(0), 3, 0, 28h, 69h - dw seg seg000 - db 0 - db 0 - db 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_695E(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_695E proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6940h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_69EA -; --------------------------------------------------------------------------- - -loc_69C7: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_69E7 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_69E7: - inc word ptr [bp+var_34] - -loc_69EA: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_69C7 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_6A47 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_6A49 -; --------------------------------------------------------------------------- - -loc_6A47: - xor ax, ax - -loc_6A49: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6A63 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6A63: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_619F - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 61FBh - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_6BED - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_6339 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_6BD8 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6BD8: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6BED: - cmp [bp+arg_1E], 0 - jnz short loc_6C31 - test byte ptr [bp+var_2C], 2 - jz short loc_6C31 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6687 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6C31 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6C31: - ; sub_695E+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_695E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_695E - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6D21 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6D21: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6D6D - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6D76 -; --------------------------------------------------------------------------- - -loc_6D6D: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6D76: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_695E - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6D90 proc far - push si - push di - pop di - pop si - retf -sub_6D90 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D95 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_6DAF - inc [bp+var_4] - -loc_6DAF: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6D90 - jmp short loc_6DFD -; --------------------------------------------------------------------------- - -loc_6DBC: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_6DE7 - mov ax, dx - jmp short loc_6E1B -; --------------------------------------------------------------------------- - -loc_6DE7: - cmp [bp+var_4], 0 - jz short loc_6DF4 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6DF4: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_6DFD: - cmp [bp+var_2], 0FFFFh - jz short loc_6E0B - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_6DBC - -loc_6E0B: - cmp [bp+var_4], 0 - jz short loc_6E18 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6E18: - mov ax, 1 - -loc_6E1B: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6D95 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_6E4C - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_6E4C: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6D95 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6E68 proc far - push si - push di - pop di - pop si - retf -sub_6E68 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 72DF SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_6E68 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_6E96 - jmp loc_6F4C -; --------------------------------------------------------------------------- - -loc_6E96: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6F95 -; --------------------------------------------------------------------------- - -loc_6F4C: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6F95: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_6FC6 - cmp [bp+arg_0], 0FACEh - jnz short loc_6FC6 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_6FD4 -; --------------------------------------------------------------------------- - -loc_6FC6: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_6FD4: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_70A5 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_70A5: - cmp [bp+arg_A], 0 - jb short loc_70BD - ja short loc_70B3 - cmp [bp+arg_8], 0Fh - jbe short loc_70BD - -loc_70B3: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_70BD: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_70F3 -; --------------------------------------------------------------------------- - -loc_70CA: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_70F3: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_70CA - jnz short loc_7104 - cmp ax, [bp+arg_8] - jb short loc_70CA - -loc_7104: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6D95 - add sp, 8 - or ax, ax - jnz short loc_714F - test byte ptr [bp+arg_4], 1 - jz short loc_716F - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_7104 -; --------------------------------------------------------------------------- - -loc_714F: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6D95 - add sp, 8 - or ax, ax - jz short loc_716F - jmp loc_72DA -; --------------------------------------------------------------------------- - -loc_716F: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_7179 - jmp loc_7259 -; --------------------------------------------------------------------------- - -loc_7179: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_72DF -; --------------------------------------------------------------------------- - -loc_7259: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_72DF -; --------------------------------------------------------------------------- - -loc_72DA: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_72DF: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - dd 0 - dd loc_734E - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0ECh, 72h - dw seg seg000 - dw 0 - db 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7316 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7304h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_6687 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7358 -; --------------------------------------------------------------------------- -loc_734E: - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7358: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_7316 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7366 proc near - ; sub_78B0+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_73E1 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_73D9 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_7316 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_73D9: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_73E1: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_7438 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7430 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7430 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_7316 - add sp, 0Ah - -loc_7430: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_7438: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7366 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_695E+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_7366 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_74BB proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_74C3: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_74E0 - xor ax, ax - jmp loc_7581 -; --------------------------------------------------------------------------- - -loc_74E0: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_750C - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_750C: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_7565 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_757A - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_757A - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_74BB - add sp, 0Ch - or ax, ax - jz short loc_757A - -loc_7565: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_7581 -; --------------------------------------------------------------------------- - -loc_757A: - add word ptr [bp+arg_0], 8 - jmp loc_74C3 -; --------------------------------------------------------------------------- - -loc_7581: - pop di - pop si - mov sp, bp - pop bp - retn -sub_74BB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7587 proc far - ; sub_760A+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_75F8 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_74BB - add sp, 0Ch - or ax, ax - jnz short loc_75F8 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_74BB - add sp, 0Ch - or ax, ax - jz short loc_7600 - -loc_75F8: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7604 -; --------------------------------------------------------------------------- - -loc_7600: - xor dx, dx - xor ax, ax - -loc_7604: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7587 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_760A proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7639 - jmp loc_78AA -; --------------------------------------------------------------------------- - -loc_7639: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7646 - jmp loc_78AA -; --------------------------------------------------------------------------- - -loc_7646: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_76BA - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_76BA: - test cl, 10h - jz short loc_76E2 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_76E2 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_780D -; --------------------------------------------------------------------------- - -loc_76E2: - test dl, 1 - jnz short loc_76EA - jmp loc_778E -; --------------------------------------------------------------------------- - -loc_76EA: - test cl, 30h - jnz short loc_76F2 - jmp loc_778E -; --------------------------------------------------------------------------- - -loc_76F2: - test cl, 20h - jz short loc_76F9 - jmp short loc_771C -; --------------------------------------------------------------------------- - -loc_76F9: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7723 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_771C: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7723: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_7784 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7587 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_777F - cmp ax, [bp+var_18] - jz short loc_7784 - -loc_777F: - mov [bp+var_14], 1 - -loc_7784: - ; sub_760A+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_7858 -; --------------------------------------------------------------------------- - -loc_778E: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7814 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_77DD - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7587 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_77DD: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_785B - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_6339 - add sp, 0Eh - -loc_780D: - ; sub_760A+227j - mov [bp+var_14], 1 - jmp short loc_7874 -; --------------------------------------------------------------------------- - -loc_7814: - test cl, 20h - jz short loc_7833 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_780D -; --------------------------------------------------------------------------- - -loc_7833: - test cl, 10h - jz short loc_785B - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_785B - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_7858: - push ax - jmp short loc_7864 -; --------------------------------------------------------------------------- - -loc_785B: - ; sub_760A+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7864: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7874: - cmp [bp+var_14], 0 - jnz short loc_78AA - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_78A2 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_7316 - add sp, 0Ah - -loc_78A2: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_78AA: - pop di - pop si - mov sp, bp - pop bp - retn -sub_760A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78B0 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7A55 -; --------------------------------------------------------------------------- - -loc_7908: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7943 - jmp loc_7A52 -; --------------------------------------------------------------------------- - -loc_7943: - add bx, bx - jmp cs:off_7A6F[bx] - -loc_794A: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_F966+2, dx - mov word ptr dword_F966, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_F966 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7A52 -; --------------------------------------------------------------------------- - -loc_7985: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_79B4 -; --------------------------------------------------------------------------- - -loc_7994: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_79AE - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_79AE - jmp short loc_79CE -; --------------------------------------------------------------------------- - -loc_79AE: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_79B4: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7994 - -loc_79CE: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_7366 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7A52 -; --------------------------------------------------------------------------- - -loc_7A07: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_8486 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7A52: - mov ax, [bp+var_8] - -loc_7A55: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_7A69 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_7A69 - jmp loc_7908 -; --------------------------------------------------------------------------- - -loc_7A69: - ; sub_78B0+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_78B0 endp - -; --------------------------------------------------------------------------- -off_7A6F dw offset loc_794A - dw offset loc_7A52 - dw offset loc_7A52 - dw offset loc_7A52 - dw offset loc_7985 - dw offset loc_7A07 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_78B0 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_78B0 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7AC5 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7B33 -; --------------------------------------------------------------------------- - -loc_7ADE: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_7B27 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6234 - add sp, 10h - or ax, ax - jz short loc_7B2F - -loc_7B27: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7B43 -; --------------------------------------------------------------------------- - -loc_7B2F: - add word ptr [bp+var_4], 10h - -loc_7B33: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7ADE - xor dx, dx - xor ax, ax - -loc_7B43: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7AC5 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_7BDD - jmp loc_7C85 -; --------------------------------------------------------------------------- - -loc_7BDD: - xor ax, ax - push ax - push [bp+var_4] - call sub_78B0 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7BF6 - jmp loc_7EB8 -; --------------------------------------------------------------------------- - -loc_7BF6: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7C00 - jmp loc_7EB8 -; --------------------------------------------------------------------------- - -loc_7C00: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_7C1B - jmp loc_7EB8 -; --------------------------------------------------------------------------- - -loc_7C1B: - jmp short loc_7C59 -; --------------------------------------------------------------------------- - -loc_7C1D: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6234 - add sp, 10h - or ax, ax - jz short loc_7C55 - jmp loc_7EB8 -; --------------------------------------------------------------------------- - -loc_7C55: - add word ptr [bp+var_20], 4 - -loc_7C59: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7C1D - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_7EB8 -; --------------------------------------------------------------------------- - -loc_7C85: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_7EAC -; --------------------------------------------------------------------------- - -loc_7C8F: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_7CC0 - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7CC0: - add bx, bx - jmp cs:off_7EC1[bx] - -loc_7CC7: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_7CD5 - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7CD5: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7CDF - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7CDF: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_7AC5 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_7D19 - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7D19: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7D4D: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_78B0 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_7D9F - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_760A - add sp, 10h - -loc_7D9F: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7DB8: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7DCD - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7DCD - jmp loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7DCD: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_F96A+2, dx - mov word ptr dword_F96A, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_F96A - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7E64 -; --------------------------------------------------------------------------- - -loc_7E2F: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7E43 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7E43 - jmp short loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7E43: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7E64: - cmp [bp+var_38], 0 - jge short loc_7E82 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_7E7E - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_7E7E: - xor ax, ax - jmp short loc_7EBB -; --------------------------------------------------------------------------- - -loc_7E82: - cmp [bp+var_38], 0 - jnz short loc_7E8A - jmp short loc_7EA9 -; --------------------------------------------------------------------------- - -loc_7E8A: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7D4D -; --------------------------------------------------------------------------- - -loc_7EA9: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_7EAC: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_7EB8 - jmp loc_7C8F -; --------------------------------------------------------------------------- - -loc_7EB8: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_7EBB: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_7EC1 dw offset loc_7EA9 - dw offset loc_7DB8 - dw offset loc_7E2F - dw offset loc_7CC7 - dw offset loc_7EA9 - dw offset loc_7EA9 - db 4 dup(0), 60h, 7Fh - dw seg seg000 - db 14h dup(0), 70h, 7Fh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0E5h, 7Eh - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 0CDh, 7Eh - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F1B proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7EFDh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_6687 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_7F69 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7F69: - mov [bp+var_12], 0 - jmp short loc_7F79 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7F79: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F1B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F87 proc far - ; sub_8008+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_7FF6 -; --------------------------------------------------------------------------- - -loc_7F94: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_7FBC - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7FBC: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7FF6 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_8008 - add sp, 10h - xor cx, cx - -loc_7FF6: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7F94 - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F87 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8008 proc far - ; sub_8008+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_801F - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_8026 -; --------------------------------------------------------------------------- - -loc_801F: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_8026: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8048 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_8061 - jnz short loc_8048 - cmp ax, [bp+var_1C] - jb short loc_8061 - -loc_8048: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F1B - add sp, 0Ah - jmp loc_82CD -; --------------------------------------------------------------------------- - -loc_8061: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_80FA - -loc_808C: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_80FA - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_80F4 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_80ED - jnz short loc_80C3 - cmp bx, [bp+var_1C] - jb short loc_80ED - -loc_80C3: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_80DD: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F87 - add sp, 12h - jmp loc_82CD -; --------------------------------------------------------------------------- - -loc_80ED: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_80F4: - add word ptr [bp+var_10], 8 - jmp short loc_808C -; --------------------------------------------------------------------------- - -loc_80FA: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_8113: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8189 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8183 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_817C - jnz short loc_814A - cmp bx, [bp+var_1C] - jb short loc_817C - -loc_814A: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F87 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8179 - jmp loc_82CD -; --------------------------------------------------------------------------- - -loc_8179: - jmp loc_82AD -; --------------------------------------------------------------------------- - -loc_817C: - ; sub_8008+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8183: - add word ptr [bp+var_8], 8 - jmp short loc_8113 -; --------------------------------------------------------------------------- - -loc_8189: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_81A2: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_81DC - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_81DC: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_8200 - jb short loc_81F6 - cmp bx, [bp+var_1C] - jnb short loc_8200 - -loc_81F6: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_82C6 -; --------------------------------------------------------------------------- - -loc_8200: - ; sub_8008+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_824C - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_82D3 - add sp, 0Eh - jmp short loc_826C -; --------------------------------------------------------------------------- - -loc_824C: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_8008 - add sp, 10h - -loc_826C: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_8285 - jmp loc_8200 -; --------------------------------------------------------------------------- - -loc_8285: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7F87 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_82CD - -loc_82AD: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_80DD -; --------------------------------------------------------------------------- - -loc_82C6: - add word ptr [bp+var_18], 6 - jmp loc_81A2 -; --------------------------------------------------------------------------- - -loc_82CD: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8008 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_82D3 proc far - ; sub_8486+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_832D - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_832D: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_83BD - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_83AA -; --------------------------------------------------------------------------- - -loc_838B: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_83AA: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8008 - add sp, 10h - -loc_83BD: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_838B - pop di - pop si - mov sp, bp - pop bp - retf -sub_82D3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_83D5 proc far - ; sub_8486+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_847A - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_847A - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8434 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_843D -; --------------------------------------------------------------------------- - -loc_8434: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_843D: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_847A: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_83D5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8486 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_849C - jmp loc_8889 -; --------------------------------------------------------------------------- - -loc_849C: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_84F5 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_84F5: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_850C - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_888B -; --------------------------------------------------------------------------- - -loc_850C: - cmp [bp+var_6], 0 - jg short loc_853E - jnz short loc_851A - cmp [bp+var_8], 0 - ja short loc_853E - -loc_851A: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_852C - jmp loc_8889 -; --------------------------------------------------------------------------- - -loc_852C: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_86A3 -; --------------------------------------------------------------------------- - -loc_853E: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_854A: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_855D - sub word ptr [bp+var_C], 0Ah - jmp loc_86A3 -; --------------------------------------------------------------------------- - -loc_855D: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_8585 - jmp loc_864F -; --------------------------------------------------------------------------- - -loc_8585: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_85A9 - jmp loc_864F -; --------------------------------------------------------------------------- - -loc_85A9: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_85B6 - jmp loc_864F -; --------------------------------------------------------------------------- - -loc_85B6: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_85C3 - jmp loc_864F -; --------------------------------------------------------------------------- - -loc_85C3: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_85DC - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_85EA -; --------------------------------------------------------------------------- - -loc_85DC: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_85EA: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8612 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_861B -; --------------------------------------------------------------------------- - -loc_8612: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_861B: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_862C - add word ptr [bp+var_1C], 4 - -loc_862C: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_83D5 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_864F: - ; sub_8486+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8674 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8674: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8692 - jnz short loc_86A3 - cmp ax, [bp+var_8] - jnb short loc_86A3 - -loc_8692: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_854A -; --------------------------------------------------------------------------- - -loc_86A3: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_86D2 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_86E0 -; --------------------------------------------------------------------------- - -loc_86D2: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_86E0: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_86EC - jmp loc_8776 -; --------------------------------------------------------------------------- - -loc_86EC: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_871E - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_8727 -; --------------------------------------------------------------------------- - -loc_871E: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_8727: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_8745 - add [bp+var_18], 4 - -loc_8745: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8776 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8776 - test byte ptr [bp+var_16+2], 8 - jz short loc_8776 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_83D5 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8776: - ; sub_8486+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_87C4 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_87A4 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_82D3 - add sp, 0Eh - jmp short loc_87C4 -; --------------------------------------------------------------------------- - -loc_87A4: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8008 - add sp, 10h - -loc_87C4: - ; sub_8486+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_87D2 - jmp loc_8870 -; --------------------------------------------------------------------------- - -loc_87D2: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_87E1 - sub word ptr [bp+driver], 4 - -loc_87E1: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8830 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_881D - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_884F -; --------------------------------------------------------------------------- - -loc_881D: - test byte ptr [bp+var_16+2], 80h - jz short loc_8870 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_886E -; --------------------------------------------------------------------------- - -loc_8830: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_885D - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_884F: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_683F - add sp, 0Ah - jmp short loc_8870 -; --------------------------------------------------------------------------- - -loc_885D: - test byte ptr [bp+var_16+2], 80h - jz short loc_8870 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_886E: - pop cx - pop cx - -loc_8870: - ; sub_8486+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_8889 - jmp loc_86A3 -; --------------------------------------------------------------------------- - -loc_8889: - xor ax, ax - -loc_888B: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8486 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_88D4 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 1107h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_88D9 - -loc_88D4: - mov ax, 0FFFFh - jmp short loc_88E0 -; --------------------------------------------------------------------------- - -loc_88D9: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_88E0: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_893C - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_897A - -loc_893C: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8F18h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 8EFAh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_897A: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_89C5 - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8F18h - test dl, 1 - jz short loc_89C5 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_89C5: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5E3B - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__before(int, int, int, __int32, __int32) -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8A29 - xor ax, ax - jmp short loc_8A82 -; --------------------------------------------------------------------------- - -loc_8A29: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8A3B - mov ax, 1 - jmp short loc_8A82 -; --------------------------------------------------------------------------- - -loc_8A3B: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx ; s2 - push ax - nop - call _strcmp - add sp, 8 - or ax, ax - jge short loc_8A80 - mov ax, 1 - jmp short loc_8A82 -; --------------------------------------------------------------------------- - -loc_8A80: - xor ax, ax - -loc_8A82: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5E16 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8AE4 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 233Eh - push ax ; src - push cs ; int - mov ax, 8EE4h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8AE4: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B25 proc near - ; sub_8B25+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8B60 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_8B6A - -loc_8B60: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8B71 - -loc_8B6A: - xor dx, dx - xor ax, ax - jmp loc_8D65 -; --------------------------------------------------------------------------- - -loc_8B71: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8B83: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8B89: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_8BA4 - jmp loc_8D2D -; --------------------------------------------------------------------------- - -loc_8BA4: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_8BB1 - jmp loc_8D26 -; --------------------------------------------------------------------------- - -loc_8BB1: - cmp [bp+arg_1A], 0 - jz short loc_8BCB - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_8BCB - mov ax, 1 - jmp short loc_8BCD -; --------------------------------------------------------------------------- - -loc_8BCB: - xor ax, ax - -loc_8BCD: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_8C14 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_8C14: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_8C96 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_8C38 - jmp loc_8D26 -; --------------------------------------------------------------------------- - -loc_8C38: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8B25 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8C7F - jmp loc_8D26 -; --------------------------------------------------------------------------- - -loc_8C7F: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_8CF3 -; --------------------------------------------------------------------------- - -loc_8C96: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8CB7 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_8D26 - cmp ax, word ptr [bp+var_14] - jnz short loc_8D26 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8D65 -; --------------------------------------------------------------------------- - -loc_8CB7: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_8CF3 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8B25 - add sp, 20h - or ax, dx - jz short loc_8D26 - -loc_8CF3: - ; sub_8B25+198j - cmp [bp+var_E], 0 - jz short loc_8D11 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_8D11 - cmp ax, [bp+var_C] - jnz short loc_8D11 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_8D26 -; --------------------------------------------------------------------------- - -loc_8D11: - ; sub_8B25+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_8D26: - ; sub_8B25+110j ... - add word ptr [bp+var_4], 8 - jmp loc_8B89 -; --------------------------------------------------------------------------- - -loc_8D2D: - cmp [bp+var_6], 0 - jnz short loc_8D46 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8B83 -; --------------------------------------------------------------------------- - -loc_8D46: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8D5F - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8D5F: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8D65: - ; sub_8B25+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_8B25 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8D96 - jmp loc_8E9A -; --------------------------------------------------------------------------- - -loc_8D96: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_8DEC - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jz short loc_8DF5 - -loc_8DEC: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_8ECA -; --------------------------------------------------------------------------- - -loc_8DF5: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_5E3B - add sp, 8 - or ax, ax - jnz short loc_8E4E - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8B25 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_8E92 - -loc_8E4E: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8B25 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_8E9A - cmp [bp+var_16], 0 - jz short loc_8E9A - -loc_8E92: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_8ECA -; --------------------------------------------------------------------------- - -loc_8E9A: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_8EC6 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 233Fh - push ax ; src - push cs ; int - mov ax, 8ED0h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8EC6: - xor dx, dx - xor ax, ax - -loc_8ECA: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 1Ch, 8Fh - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0 - dd byte_8F1C - dd 0 - dd @typeinfo@0$bdtr$qv ; typeinfo::~typeinfo(void) -byte_8F1C db 8 - ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 95h, 89h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -21066,8 +14424,7 @@ word_E728 dw 0 word_E72A dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_E744 dw 1 word_E746 dw 0 @@ -21929,9 +15286,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_F966 dd ? -dword_F96A dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends diff --git a/th03_main.asm b/th03_main.asm index ba1923b6..75d59e41 100644 --- a/th03_main.asm +++ b/th03_main.asm @@ -5157,6643 +5157,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_594B proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_595F - mov dx, ds - mov ax, 10BAh - jmp short loc_596C -; --------------------------------------------------------------------------- - -loc_595F: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_596C: - pop di - pop si - pop bp - retf -sub_594B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5970 proc far - ; sub_5A0D+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5988 - cmp ax, word ptr [bp+arg_4] - jz short loc_5A04 - -loc_5988: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_59FC - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_59FC - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_59FC - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_59DE: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_5A00 - -loc_59FC: - xor ax, ax - jmp short loc_5A07 -; --------------------------------------------------------------------------- - -loc_5A00: - or dx, dx - jnz short loc_59DE - -loc_5A04: - mov ax, 1 - -loc_5A07: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5970 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5A0D proc near - ; sub_5A0D+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5A28: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5ABC - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5AB5 - cmp [bp+arg_C], 0 - jz short loc_5A64 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5A64 - mov ax, 1 - jmp short loc_5A66 -; --------------------------------------------------------------------------- - -loc_5A64: - xor ax, ax - -loc_5A66: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jz short loc_5A89 - cmp [bp+var_6], 0 - jz short loc_5A89 - jmp loc_5B4C -; --------------------------------------------------------------------------- - -loc_5A89: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5AB5 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5A0D - add sp, 0Eh - or ax, ax - jz short loc_5AB5 - jmp loc_5B4C -; --------------------------------------------------------------------------- - -loc_5AB5: - add word ptr [bp+var_4], 8 - jmp loc_5A28 -; --------------------------------------------------------------------------- - -loc_5ABC: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5ACF: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5B58 - cmp [bp+arg_C], 0 - jz short loc_5B01 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5B01 - mov ax, 1 - jmp short loc_5B03 -; --------------------------------------------------------------------------- - -loc_5B01: - xor ax, ax - -loc_5B03: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jz short loc_5B23 - cmp [bp+var_6], 0 - jnz short loc_5B4C - -loc_5B23: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5B51 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5A0D - add sp, 0Eh - or ax, ax - jz short loc_5B51 - -loc_5B4C: - mov ax, 1 - jmp short loc_5B5A -; --------------------------------------------------------------------------- - -loc_5B51: - ; sub_5A0D+13Dj - add word ptr [bp+var_4], 8 - jmp loc_5ACF -; --------------------------------------------------------------------------- - -loc_5B58: - xor ax, ax - -loc_5B5A: - pop di - pop si - mov sp, bp - pop bp - retn -sub_5A0D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5B60 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_5B6B: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5B7E - cmp ax, word ptr [bp+arg_4] - jnz short loc_5B7E - jmp loc_5C93 -; --------------------------------------------------------------------------- - -loc_5B7E: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_5C0E - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_5BB1 - jmp loc_5C54 -; --------------------------------------------------------------------------- - -loc_5BB1: - or cx, cx - jz short loc_5BB8 - jmp loc_5CCC -; --------------------------------------------------------------------------- - -loc_5BB8: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_5BEE - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_5BDC - jmp loc_5CCC -; --------------------------------------------------------------------------- - -loc_5BDC: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_5C54 - -loc_5BEE: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_5C02 - jmp loc_5CCC -; --------------------------------------------------------------------------- - -loc_5C02: - test byte ptr [bp+var_2+1], 10h - jnz short loc_5C0B - jmp loc_5CCC -; --------------------------------------------------------------------------- - -loc_5C0B: - jmp loc_5C93 -; --------------------------------------------------------------------------- - -loc_5C0E: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_5C7C - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_5C33 - cmp ax, es:[bx+0Ah] - jz short loc_5C54 - -loc_5C33: - or cx, cx - jz short loc_5C3A - jmp loc_5CCC -; --------------------------------------------------------------------------- - -loc_5C3A: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_5CCC - -loc_5C54: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_5B6B -; --------------------------------------------------------------------------- - -loc_5C7C: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jz short loc_5C98 - -loc_5C93: - ; sub_5B60:loc_5C0Bj - mov ax, 1 - jmp short loc_5CCE -; --------------------------------------------------------------------------- - -loc_5C98: - test byte ptr [bp+var_2], 2 - jz short loc_5CCC - test byte ptr [bp+var_4], 1 - jz short loc_5CCC - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_5CCC - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5A0D - add sp, 0Eh - jmp short loc_5CCE -; --------------------------------------------------------------------------- - -loc_5CCC: - xor ax, ax - -loc_5CCE: - ; sub_5B60+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_5B60 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5CD4 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_5D24 - cmp [bp+arg_0], 80h ; '€' - ja short loc_5D06 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_5D0B - -loc_5D06: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_5D0B: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_5D2A -; --------------------------------------------------------------------------- - -loc_5D24: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_5D2A: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5CD4 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_5D58 - cmp ax, [bp+6] - jnz short loc_5D58 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_5D65 -; --------------------------------------------------------------------------- - -loc_5D58: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_5D65: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5D69 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5B60 - add sp, 0Eh - or ax, ax - jz short loc_5D93 - jmp loc_5E2F -; --------------------------------------------------------------------------- - -loc_5D93: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_5E23 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5B60 - add sp, 0Eh - or ax, ax - jnz short loc_5E2F - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_5E66 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5B60 - add sp, 0Eh - or ax, ax - jnz short loc_5E2F - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_5E66 - -loc_5E23: - test byte ptr [bp+var_4], 10h - jz short loc_5E66 - test [bp+arg_C], 1 - jz short loc_5E34 - -loc_5E2F: - mov ax, 1 - jmp short loc_5E68 -; --------------------------------------------------------------------------- - -loc_5E34: - test byte ptr [bp+var_2], 10h - jz short loc_5E66 - test byte ptr [bp+var_2+1], 20h - jz short loc_5E46 - test byte ptr [bp+var_4+1], 20h - jz short loc_5E66 - -loc_5E46: - test byte ptr [bp+var_4], 40h - jz short loc_5E66 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_5E62 - mov ax, 1 - jmp short loc_5E64 -; --------------------------------------------------------------------------- - -loc_5E62: - xor ax, ax - -loc_5E64: - jmp short loc_5E68 -; --------------------------------------------------------------------------- - -loc_5E66: - xor ax, ax - -loc_5E68: - ; sub_5D69:loc_5E64j - pop di - pop si - mov sp, bp - pop bp - retn -sub_5D69 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5E6E proc near - ; sub_713F+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_5E99 - or [bp+var_4], 2 - -loc_5E99: - test byte ptr [bp+arg_C], 2 - jz short loc_5EAD - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_5EAD - or [bp+var_4], 20h - -loc_5EAD: - test byte ptr [bp+arg_C], 20h - jz short loc_5EB7 - or [bp+var_4], 8 - -loc_5EB7: - test byte ptr [bp+arg_C], 80h - jz short loc_5EC1 - or [bp+var_4], 10h - -loc_5EC1: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_5ECA - jmp loc_604F -; --------------------------------------------------------------------------- - -loc_5ECA: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_5ED5 - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5ED5: - add bx, bx - jmp cs:off_618C[bx] - -loc_5EDC: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5EEE: - ; sub_5E6E+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F00: - ; sub_5E6E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_5F26 -; --------------------------------------------------------------------------- - -loc_5F14: - ; sub_5E6E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5F26: - add sp, 0Ah - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F2C: - ; sub_5E6E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F3B: - ; sub_5E6E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F4A: - ; sub_5E6E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_5F70 -; --------------------------------------------------------------------------- - -loc_5F5E: - ; sub_5E6E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5F70: - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F73: - ; sub_5E6E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F83: - ; sub_5E6E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_5F8B: - push bx - pop bx - call [bp+arg_8] - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5F93: - ; sub_5E6E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5FA1: - call word ptr [bp+arg_8] - jmp short loc_5FB7 -; --------------------------------------------------------------------------- - -loc_5FA6: - ; sub_5E6E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5FB4: - call [bp+arg_8] - -loc_5FB7: - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5FBA: - ; sub_5E6E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_5FD4 -; --------------------------------------------------------------------------- - -loc_5FC8: - ; sub_5E6E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_5FD1: - call [bp+arg_8] - -loc_5FD4: - ; sub_5E6E+1FCj - pop cx - pop cx - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5FD9: - ; sub_5E6E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_5FF0: - ; sub_5E6E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_6007: - ; sub_5E6E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6010: - call word ptr [bp+arg_8] - jmp short loc_6021 -; --------------------------------------------------------------------------- - -loc_6015: - ; sub_5E6E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_601E: - call [bp+arg_8] - -loc_6021: - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_6024: - ; sub_5E6E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_6038: - ; sub_5E6E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_604C: - ; sub_5E6E+1EEj - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_604F: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_605A - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_605A: - add bx, bx - jmp cs:off_615C[bx] - -loc_6061: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_5FD4 -; --------------------------------------------------------------------------- - -loc_606D: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5FD1 -; --------------------------------------------------------------------------- - -loc_6076: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_6096 -; --------------------------------------------------------------------------- - -loc_6087: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6096: - add sp, 8 - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_609C: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6010 -; --------------------------------------------------------------------------- - -loc_60A5: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_601E -; --------------------------------------------------------------------------- - -loc_60AE: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6155 -; --------------------------------------------------------------------------- - -loc_60BC: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_5F8B -; --------------------------------------------------------------------------- - -loc_60C5: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5FA1 -; --------------------------------------------------------------------------- - -loc_60D4: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5FB4 -; --------------------------------------------------------------------------- - -loc_60E3: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_60EF: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_60FB: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_610D: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_611F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_612A: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_6135: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_6155 -; --------------------------------------------------------------------------- - -loc_6145: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6155: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_5E6E endp - -; --------------------------------------------------------------------------- -off_615C dw offset loc_6061 - dw offset loc_606D - dw offset loc_6076 - dw offset loc_6087 - dw offset loc_609C - dw offset loc_60A5 - dw offset loc_60C5 - dw offset loc_60D4 - dw offset loc_60AE - dw offset loc_60BC - dw offset loc_60C5 - dw offset loc_60D4 - dw offset loc_6155 - dw offset loc_6155 - dw offset loc_6155 - dw offset loc_6155 - dw offset loc_60E3 - dw offset loc_60EF - dw offset loc_60FB - dw offset loc_610D - dw offset loc_611F - dw offset loc_612A - dw offset loc_6135 - dw offset loc_6145 -off_618C dw offset loc_5EDC - dw offset loc_5EEE - dw offset loc_5F00 - dw offset loc_5F14 - dw offset loc_5F2C - dw offset loc_5F3B - dw offset loc_5F4A - dw offset loc_5F5E - dw offset loc_5F73 - dw offset loc_5F83 - dw offset loc_5F93 - dw offset loc_5FA6 - dw offset loc_604C - dw offset loc_604C - dw offset loc_604C - dw offset loc_604C - dw offset loc_5FBA - dw offset loc_5FC8 - dw offset loc_5FD9 - dw offset loc_5FF0 - dw offset loc_6007 - dw offset loc_6015 - dw offset loc_6024 - dw offset loc_6038 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_61BC proc near - ; sub_6E4B+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_61CF - mov ax, 2 - jmp short loc_61D1 -; --------------------------------------------------------------------------- - -loc_61CF: - xor ax, ax - -loc_61D1: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_61F7 - or [bp+var_6], 2 - -loc_61F7: - test byte ptr [bp+arg_8], 2 - jz short loc_620B - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_620B - or [bp+var_6], 20h - -loc_620B: - test byte ptr [bp+arg_8], 20h - jz short loc_6215 - or [bp+var_6], 8 - -loc_6215: - test byte ptr [bp+arg_8], 80h - jz short loc_621F - or [bp+var_6], 10h - -loc_621F: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_622A - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_622A: - add bx, bx - jmp cs:off_6344[bx] - -loc_6231: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_623F: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_624D: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_625F: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_6271: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62D7 -; --------------------------------------------------------------------------- - -loc_627C: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_62D4 -; --------------------------------------------------------------------------- - -loc_6284: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_629E -; --------------------------------------------------------------------------- - -loc_6292: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_629E: - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_62A1: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_62AF: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_633D -; --------------------------------------------------------------------------- - -loc_62BD: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62D7 -; --------------------------------------------------------------------------- - -loc_62CB: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_62D4: - call [bp+arg_4] - -loc_62D7: - ; sub_61BC+10Dj - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_62D9: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_62E5: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_62F1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_62FF: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_630D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_6318: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_6323: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_633D -; --------------------------------------------------------------------------- - -loc_6330: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_633D: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_61BC endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_6344 dw offset loc_6231 - dw offset loc_623F - dw offset loc_624D - dw offset loc_625F - dw offset loc_6271 - dw offset loc_627C - dw offset loc_6284 - dw offset loc_6292 - dw offset loc_62A1 - dw offset loc_62AF - dw offset loc_62BD - dw offset loc_62CB - dw offset loc_633D - dw offset loc_633D - dw offset loc_633D - dw offset loc_633D - dw offset loc_62D9 - dw offset loc_62E5 - dw offset loc_62F1 - dw offset loc_62FF - dw offset loc_630D - dw offset loc_6318 - dw offset loc_6323 - dw offset loc_6330 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6374 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_639F - or [bp+var_4], 2 - -loc_639F: - test byte ptr [bp+arg_8], 2 - jz short loc_63A9 - or [bp+var_4], 4 - -loc_63A9: - test byte ptr [bp+arg_8], 20h - jz short loc_63B3 - or [bp+var_4], 8 - -loc_63B3: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_6426 - add bx, bx - jmp cs:off_642D[bx] - -loc_63C2: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_63CB: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_63D4: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_63E8 -; --------------------------------------------------------------------------- - -loc_63DF: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_63E8: - pop cx - pop cx - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_63EC: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_63FA -; --------------------------------------------------------------------------- - -loc_63F4: - push [bp+arg_0] - call [bp+arg_4] - -loc_63FA: - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_63FC: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_6406: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_6426 -; --------------------------------------------------------------------------- - -loc_6410: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6424 -; --------------------------------------------------------------------------- - -loc_641B: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6424: - jmp short $+2 - -loc_6426: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6374 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_642D dw offset loc_63C2 - dw offset loc_63CB - dw offset loc_63D4 - dw offset loc_63DF - dw offset loc_63EC - dw offset loc_63F4 - dw offset loc_6410 - dw offset loc_641B - dw offset loc_63FC - dw offset loc_6406 - dw offset loc_6410 - dw offset loc_641B - db 4 dup(0), 3, 67h - dw seg seg000 - db 14h dup(0), 5Ch, 67h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 45h, 64h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 5Dh, 64h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6493 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_2 = word ptr 6 -arg_4 = word ptr 8 -src = dword ptr 0Ah -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h -arg_20 = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6475h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_4] - mov ax, [bp+arg_2] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_651F -; --------------------------------------------------------------------------- - -loc_64FC: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_651C - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_651C: - inc word ptr [bp+var_34] - -loc_651F: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_64FC - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_16] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_1A] - mov ax, [bp+arg_18] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - -loc_6566: - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_657C - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_657E -; --------------------------------------------------------------------------- - -loc_657C: - xor ax, ax - -loc_657E: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6598 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6598: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_5CD4 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_C] - mov ax, [bp+arg_A] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 5D30h - les bx, [bp+var_30] - mov ax, [bp+arg_16] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_1A] - mov ax, [bp+arg_18] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_10] - mov ax, [bp+arg_E] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_6722 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_5E6E - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_670D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_670D: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6722: - cmp [bp+arg_20], 0 - jnz short loc_6766 - test byte ptr [bp+var_2C], 2 - jz short loc_6766 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_61BC - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6766 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6766: - ; sub_6493+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6493 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ThrowException(void *, void *, void *, void *, unsigned int, unsigned int, unsigned int, unsigned char *) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_6493 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6856 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6856: - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_68A2 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_68AB -; --------------------------------------------------------------------------- - -loc_68A2: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_68AB: - push dx - push ax - les bx, [bp+var_8] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_6493 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_68C5 proc far - push si - push di - pop di - pop si - retf -sub_68C5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_68CA proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_68E4 - inc [bp+var_4] - -loc_68E4: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_68C5 - jmp short loc_6932 -; --------------------------------------------------------------------------- - -loc_68F1: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_691C - mov ax, dx - jmp short loc_6950 -; --------------------------------------------------------------------------- - -loc_691C: - cmp [bp+var_4], 0 - jz short loc_6929 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6929: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_6932: - cmp [bp+var_2], 0FFFFh - jz short loc_6940 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_68F1 - -loc_6940: - cmp [bp+var_4], 0 - jz short loc_694D - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_694D: - mov ax, 1 - -loc_6950: - pop di - pop si - mov sp, bp - pop bp - retf -sub_68CA endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_6981 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_6981: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_68CA - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_699D proc far - push si - push di - pop di - pop si - retf -sub_699D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 6E14 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_699D - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_69CB - jmp loc_6A81 -; --------------------------------------------------------------------------- - -loc_69CB: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6ACA -; --------------------------------------------------------------------------- - -loc_6A81: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6ACA: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_6AFB - cmp [bp+arg_0], 0FACEh - jnz short loc_6AFB - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_6B09 -; --------------------------------------------------------------------------- - -loc_6AFB: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_6B09: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_6BDA - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_6BDA: - cmp [bp+arg_A], 0 - jb short loc_6BF2 - ja short loc_6BE8 - cmp [bp+arg_8], 0Fh - jbe short loc_6BF2 - -loc_6BE8: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_6BF2: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_6C28 -; --------------------------------------------------------------------------- - -loc_6BFF: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_6C28: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_6BFF - jnz short loc_6C39 - cmp ax, [bp+arg_8] - jb short loc_6BFF - -loc_6C39: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_68CA - add sp, 8 - or ax, ax - jnz short loc_6C84 - test byte ptr [bp+arg_4], 1 - jz short loc_6CA4 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_6C39 -; --------------------------------------------------------------------------- - -loc_6C84: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_68CA - add sp, 8 - or ax, ax - jz short loc_6CA4 - jmp loc_6E0F -; --------------------------------------------------------------------------- - -loc_6CA4: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_6CAE - jmp loc_6D8E -; --------------------------------------------------------------------------- - -loc_6CAE: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_6E14 -; --------------------------------------------------------------------------- - -loc_6D8E: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_6E14 -; --------------------------------------------------------------------------- - -loc_6E0F: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_6E14: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 83h, 6Eh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 21h, 6Eh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6E4B proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 6E39h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_61BC - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6E8D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6E8D: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_6E4B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6E9B proc near - ; sub_73E5+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6F16 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_6F0E - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_6E4B - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6F0E: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_6F16: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_6F6D - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_6F65 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_6F65 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_6E4B - add sp, 0Ah - -loc_6F65: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_6F6D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6E9B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6493+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_6E9B - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6FF0 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_6FF8: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_7015 - xor ax, ax - jmp loc_70B6 -; --------------------------------------------------------------------------- - -loc_7015: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_7041 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7041: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_709A - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_70AF - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_70AF - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_6FF0 - add sp, 0Ch - or ax, ax - jz short loc_70AF - -loc_709A: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_70B6 -; --------------------------------------------------------------------------- - -loc_70AF: - add word ptr [bp+arg_0], 8 - jmp loc_6FF8 -; --------------------------------------------------------------------------- - -loc_70B6: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6FF0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_70BC proc far - ; sub_713F+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_712D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6FF0 - add sp, 0Ch - or ax, ax - jnz short loc_712D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6FF0 - add sp, 0Ch - or ax, ax - jz short loc_7135 - -loc_712D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7139 -; --------------------------------------------------------------------------- - -loc_7135: - xor dx, dx - xor ax, ax - -loc_7139: - pop di - pop si - mov sp, bp - pop bp - retf -sub_70BC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_713F proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_716E - jmp loc_73DF -; --------------------------------------------------------------------------- - -loc_716E: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_717B - jmp loc_73DF -; --------------------------------------------------------------------------- - -loc_717B: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_71EF - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_71EF: - test cl, 10h - jz short loc_7217 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_7217 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_7342 -; --------------------------------------------------------------------------- - -loc_7217: - test dl, 1 - jnz short loc_721F - jmp loc_72C3 -; --------------------------------------------------------------------------- - -loc_721F: - test cl, 30h - jnz short loc_7227 - jmp loc_72C3 -; --------------------------------------------------------------------------- - -loc_7227: - test cl, 20h - jz short loc_722E - jmp short loc_7251 -; --------------------------------------------------------------------------- - -loc_722E: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7258 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_7251: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7258: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_72B9 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_70BC - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_72B4 - cmp ax, [bp+var_18] - jz short loc_72B9 - -loc_72B4: - mov [bp+var_14], 1 - -loc_72B9: - ; sub_713F+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_738D -; --------------------------------------------------------------------------- - -loc_72C3: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7349 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_7312 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_70BC - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_7312: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_7390 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_5E6E - add sp, 0Eh - -loc_7342: - ; sub_713F+227j - mov [bp+var_14], 1 - jmp short loc_73A9 -; --------------------------------------------------------------------------- - -loc_7349: - test cl, 20h - jz short loc_7368 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_7342 -; --------------------------------------------------------------------------- - -loc_7368: - test cl, 10h - jz short loc_7390 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_7390 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_738D: - push ax - jmp short loc_7399 -; --------------------------------------------------------------------------- - -loc_7390: - ; sub_713F+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7399: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_73A9: - cmp [bp+var_14], 0 - jnz short loc_73DF - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_73D7 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6E4B - add sp, 0Ah - -loc_73D7: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_73DF: - pop di - pop si - mov sp, bp - pop bp - retn -sub_713F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_73E5 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_758A -; --------------------------------------------------------------------------- - -loc_743D: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7478 - jmp loc_7587 -; --------------------------------------------------------------------------- - -loc_7478: - add bx, bx - jmp cs:off_75A4[bx] - -loc_747F: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_263E6+2, dx - mov word ptr dword_263E6, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_263E6 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7587 -; --------------------------------------------------------------------------- - -loc_74BA: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_74E9 -; --------------------------------------------------------------------------- - -loc_74C9: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_74E3 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_74E3 - jmp short loc_7503 -; --------------------------------------------------------------------------- - -loc_74E3: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_74E9: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_74C9 - -loc_7503: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_6E9B - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7587 -; --------------------------------------------------------------------------- - -loc_753C: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_7FBB - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7587: - mov ax, [bp+var_8] - -loc_758A: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_759E - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_759E - jmp loc_743D -; --------------------------------------------------------------------------- - -loc_759E: - ; sub_73E5+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_73E5 endp - -; --------------------------------------------------------------------------- -off_75A4 dw offset loc_747F - dw offset loc_7587 - dw offset loc_7587 - dw offset loc_7587 - dw offset loc_74BA - dw offset loc_753C - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_73E5 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_73E5 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_75FA proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7668 -; --------------------------------------------------------------------------- - -loc_7613: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_765C - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5D69 - add sp, 10h - or ax, ax - jz short loc_7664 - -loc_765C: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7678 -; --------------------------------------------------------------------------- - -loc_7664: - add word ptr [bp+var_4], 10h - -loc_7668: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7613 - xor dx, dx - xor ax, ax - -loc_7678: - pop di - pop si - mov sp, bp - pop bp - retn -sub_75FA endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_7712 - jmp loc_77BA -; --------------------------------------------------------------------------- - -loc_7712: - xor ax, ax - push ax - push [bp+var_4] - call sub_73E5 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_772B - jmp loc_79ED -; --------------------------------------------------------------------------- - -loc_772B: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7735 - jmp loc_79ED -; --------------------------------------------------------------------------- - -loc_7735: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_7750 - jmp loc_79ED -; --------------------------------------------------------------------------- - -loc_7750: - jmp short loc_778E -; --------------------------------------------------------------------------- - -loc_7752: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5D69 - add sp, 10h - or ax, ax - jz short loc_778A - jmp loc_79ED -; --------------------------------------------------------------------------- - -loc_778A: - add word ptr [bp+var_20], 4 - -loc_778E: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7752 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_79ED -; --------------------------------------------------------------------------- - -loc_77BA: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_79E1 -; --------------------------------------------------------------------------- - -loc_77C4: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_77F5 - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_77F5: - add bx, bx - jmp cs:off_79F6[bx] - -loc_77FC: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_780A - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_780A: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7814 - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_7814: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_75FA - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_784E - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_784E: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7882: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_73E5 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_78D4 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_713F - add sp, 10h - -loc_78D4: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_78ED: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7902 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7902 - jmp loc_79DE -; --------------------------------------------------------------------------- - -loc_7902: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_263EA+2, dx - mov word ptr dword_263EA, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_263EA - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7999 -; --------------------------------------------------------------------------- - -loc_7964: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7978 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7978 - jmp short loc_79DE -; --------------------------------------------------------------------------- - -loc_7978: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7999: - cmp [bp+var_38], 0 - jge short loc_79B7 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_79B3 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_79B3: - xor ax, ax - jmp short loc_79F0 -; --------------------------------------------------------------------------- - -loc_79B7: - cmp [bp+var_38], 0 - jnz short loc_79BF - jmp short loc_79DE -; --------------------------------------------------------------------------- - -loc_79BF: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7882 -; --------------------------------------------------------------------------- - -loc_79DE: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_79E1: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_79ED - jmp loc_77C4 -; --------------------------------------------------------------------------- - -loc_79ED: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_79F0: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_79F6 dw offset loc_79DE - dw offset loc_78ED - dw offset loc_7964 - dw offset loc_77FC - dw offset loc_79DE - dw offset loc_79DE - db 4 dup(0), 95h, 7Ah - dw seg seg000 - db 14h dup(0), 0A5h, 7Ah - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 1Ah, 7Ah - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 2, 7Ah - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7A50 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7A32h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_61BC - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_7A9E -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7A9E: - mov [bp+var_12], 0 - jmp short loc_7AAE -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7AAE: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7A50 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7ABC proc far - ; sub_7B3D+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_7B2B -; --------------------------------------------------------------------------- - -loc_7AC9: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_7AF1 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7AF1: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7B2B - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_7B3D - add sp, 10h - xor cx, cx - -loc_7B2B: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7AC9 - pop di - pop si - mov sp, bp - pop bp - retf -sub_7ABC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7B3D proc far - ; sub_7B3D+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_7B54 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_7B5B -; --------------------------------------------------------------------------- - -loc_7B54: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_7B5B: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7B7D - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_7B96 - jnz short loc_7B7D - cmp ax, [bp+var_1C] - jb short loc_7B96 - -loc_7B7D: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7A50 - add sp, 0Ah - jmp loc_7E02 -; --------------------------------------------------------------------------- - -loc_7B96: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_7C2F - -loc_7BC1: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7C2F - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7C29 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7C22 - jnz short loc_7BF8 - cmp bx, [bp+var_1C] - jb short loc_7C22 - -loc_7BF8: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_7C12: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7ABC - add sp, 12h - jmp loc_7E02 -; --------------------------------------------------------------------------- - -loc_7C22: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7C29: - add word ptr [bp+var_10], 8 - jmp short loc_7BC1 -; --------------------------------------------------------------------------- - -loc_7C2F: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_7C48: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7CBE - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7CB8 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7CB1 - jnz short loc_7C7F - cmp bx, [bp+var_1C] - jb short loc_7CB1 - -loc_7C7F: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7ABC - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_7CAE - jmp loc_7E02 -; --------------------------------------------------------------------------- - -loc_7CAE: - jmp loc_7DE2 -; --------------------------------------------------------------------------- - -loc_7CB1: - ; sub_7B3D+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7CB8: - add word ptr [bp+var_8], 8 - jmp short loc_7C48 -; --------------------------------------------------------------------------- - -loc_7CBE: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_7CD7: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_7D11 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_7D11: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_7D35 - jb short loc_7D2B - cmp bx, [bp+var_1C] - jnb short loc_7D35 - -loc_7D2B: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_7DFB -; --------------------------------------------------------------------------- - -loc_7D35: - ; sub_7B3D+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_7D81 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_7E08 - add sp, 0Eh - jmp short loc_7DA1 -; --------------------------------------------------------------------------- - -loc_7D81: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_7B3D - add sp, 10h - -loc_7DA1: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_7DBA - jmp loc_7D35 -; --------------------------------------------------------------------------- - -loc_7DBA: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7ABC - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_7E02 - -loc_7DE2: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_7C12 -; --------------------------------------------------------------------------- - -loc_7DFB: - add word ptr [bp+var_18], 6 - jmp loc_7CD7 -; --------------------------------------------------------------------------- - -loc_7E02: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7B3D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7E08 proc far - ; sub_7FBB+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_7E62 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_7E62: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7EF2 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_7EDF -; --------------------------------------------------------------------------- - -loc_7EC0: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_7EDF: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7B3D - add sp, 10h - -loc_7EF2: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_7EC0 - pop di - pop si - mov sp, bp - pop bp - retf -sub_7E08 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F0A proc far - ; sub_7FBB+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_7FAF - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_7FAF - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_7F69 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_7F72 -; --------------------------------------------------------------------------- - -loc_7F69: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_7F72: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_7FAF: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F0A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7FBB proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_7FD1 - jmp loc_83BE -; --------------------------------------------------------------------------- - -loc_7FD1: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_802A - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_802A: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_8041 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_83C0 -; --------------------------------------------------------------------------- - -loc_8041: - cmp [bp+var_6], 0 - jg short loc_8073 - jnz short loc_804F - cmp [bp+var_8], 0 - ja short loc_8073 - -loc_804F: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_8061 - jmp loc_83BE -; --------------------------------------------------------------------------- - -loc_8061: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_81D8 -; --------------------------------------------------------------------------- - -loc_8073: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_807F: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8092 - sub word ptr [bp+var_C], 0Ah - jmp loc_81D8 -; --------------------------------------------------------------------------- - -loc_8092: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_80BA - jmp loc_8184 -; --------------------------------------------------------------------------- - -loc_80BA: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_80DE - jmp loc_8184 -; --------------------------------------------------------------------------- - -loc_80DE: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_80EB - jmp loc_8184 -; --------------------------------------------------------------------------- - -loc_80EB: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_80F8 - jmp loc_8184 -; --------------------------------------------------------------------------- - -loc_80F8: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8111 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_811F -; --------------------------------------------------------------------------- - -loc_8111: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_811F: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8147 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8150 -; --------------------------------------------------------------------------- - -loc_8147: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8150: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8161 - add word ptr [bp+var_1C], 4 - -loc_8161: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_7F0A - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8184: - ; sub_7FBB+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_81A9 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_81A9: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_81C7 - jnz short loc_81D8 - cmp ax, [bp+var_8] - jnb short loc_81D8 - -loc_81C7: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_807F -; --------------------------------------------------------------------------- - -loc_81D8: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_8207 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_8215 -; --------------------------------------------------------------------------- - -loc_8207: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_8215: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_8221 - jmp loc_82AB -; --------------------------------------------------------------------------- - -loc_8221: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8253 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_825C -; --------------------------------------------------------------------------- - -loc_8253: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_825C: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_827A - add [bp+var_18], 4 - -loc_827A: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_82AB - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_82AB - test byte ptr [bp+var_16+2], 8 - jz short loc_82AB - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7F0A - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_82AB: - ; sub_7FBB+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_82F9 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_82D9 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7E08 - add sp, 0Eh - jmp short loc_82F9 -; --------------------------------------------------------------------------- - -loc_82D9: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7B3D - add sp, 10h - -loc_82F9: - ; sub_7FBB+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_8307 - jmp loc_83A5 -; --------------------------------------------------------------------------- - -loc_8307: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_8316 - sub word ptr [bp+driver], 4 - -loc_8316: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8365 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8352 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8384 -; --------------------------------------------------------------------------- - -loc_8352: - test byte ptr [bp+var_16+2], 80h - jz short loc_83A5 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_83A3 -; --------------------------------------------------------------------------- - -loc_8365: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8392 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8384: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6374 - add sp, 0Ah - jmp short loc_83A5 -; --------------------------------------------------------------------------- - -loc_8392: - test byte ptr [bp+var_16+2], 80h - jz short loc_83A5 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_83A3: - pop cx - pop cx - -loc_83A5: - ; sub_7FBB+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_83BE - jmp loc_81D8 -; --------------------------------------------------------------------------- - -loc_83BE: - xor ax, ax - -loc_83C0: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7FBB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_8409 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 10C3h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_840E - -loc_8409: - mov ax, 0FFFFh - jmp short loc_8415 -; --------------------------------------------------------------------------- - -loc_840E: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_8415: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::typeinfo(typeinfo const &) -@typeinfo@0$bctr$qmx8typeinfo proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_8471 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_84AF - -loc_8471: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8A4Dh - xor ax, ax - push ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - mov [bp+var_2], 0 - mov [bp+var_4], 0 - lea ax, [bp+var_4] - push ss - push ax - push cs - mov ax, 8A2Fh - push ax - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_84AF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_84FA - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8A4Dh - test dl, 1 - jz short loc_84FA - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_84FA: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5970 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_855E - xor ax, ax - jmp short loc_85B7 -; --------------------------------------------------------------------------- - -loc_855E: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8570 - mov ax, 1 - jmp short loc_85B7 -; --------------------------------------------------------------------------- - -loc_8570: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_85B5 - mov ax, 1 - jmp short loc_85B7 -; --------------------------------------------------------------------------- - -loc_85B5: - xor ax, ax - -loc_85B7: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_594B - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; __GetTypeInfo(void *, void *, void *, void *) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8619 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push ds - mov ax, 8E8Eh - push ax - push cs - mov ax, 8A19h - push ax - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8619: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - sub ax, es:[bx-2] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - les bx, [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_865A proc near - ; sub_865A+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8695 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_869F - -loc_8695: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_86A6 - -loc_869F: - xor dx, dx - xor ax, ax - jmp loc_889A -; --------------------------------------------------------------------------- - -loc_86A6: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_86B8: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_86BE: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_86D9 - jmp loc_8862 -; --------------------------------------------------------------------------- - -loc_86D9: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_86E6 - jmp loc_885B -; --------------------------------------------------------------------------- - -loc_86E6: - cmp [bp+arg_1A], 0 - jz short loc_8700 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_8700 - mov ax, 1 - jmp short loc_8702 -; --------------------------------------------------------------------------- - -loc_8700: - xor ax, ax - -loc_8702: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_8749 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_8749: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_87CB - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_876D - jmp loc_885B -; --------------------------------------------------------------------------- - -loc_876D: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_865A - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_87B4 - jmp loc_885B -; --------------------------------------------------------------------------- - -loc_87B4: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_8828 -; --------------------------------------------------------------------------- - -loc_87CB: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_87EC - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_885B - cmp ax, word ptr [bp+var_14] - jnz short loc_885B - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_889A -; --------------------------------------------------------------------------- - -loc_87EC: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_8828 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_865A - add sp, 20h - or ax, dx - jz short loc_885B - -loc_8828: - ; sub_865A+198j - cmp [bp+var_E], 0 - jz short loc_8846 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_8846 - cmp ax, [bp+var_C] - jnz short loc_8846 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_885B -; --------------------------------------------------------------------------- - -loc_8846: - ; sub_865A+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_885B: - ; sub_865A+110j ... - add word ptr [bp+var_4], 8 - jmp loc_86BE -; --------------------------------------------------------------------------- - -loc_8862: - cmp [bp+var_6], 0 - jnz short loc_887B - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_86B8 -; --------------------------------------------------------------------------- - -loc_887B: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8894 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8894: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_889A: - ; sub_865A+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_865A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; __DynamicCast(void *, void *, void *, void *, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_88CB - jmp loc_89CF -; --------------------------------------------------------------------------- - -loc_88CB: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - sub ax, es:[bx-2] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - les bx, [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_8921 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jz short loc_892A - -loc_8921: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_89FF -; --------------------------------------------------------------------------- - -loc_892A: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_5970 - add sp, 8 - or ax, ax - jnz short loc_8983 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_865A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_89C7 - -loc_8983: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_865A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_89CF - cmp [bp+var_16], 0 - jz short loc_89CF - -loc_89C7: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_89FF -; --------------------------------------------------------------------------- - -loc_89CF: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_89FB - xor ax, ax - push ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push ds - mov ax, 8E8Fh - push ax - push cs - mov ax, 8A05h - push ax - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_89FB: - xor dx, dx - xor ax, ax - -loc_89FF: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 51h, 8Ah - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 51h, 8Ah - dw seg seg000 - db 4 dup(0), 0CAh, 84h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 0CAh, 84h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -52454,9 +45818,9 @@ byte_1D492 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h byte_1D504 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h db 0Dh dup(0), 2, 0, 2, 0, 31h, 93h dw seg seg000 - db 5, 0, 4Ah, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 2 dup(3Ah) - db 6Fh, 75h, 74h, 6Fh, 66h, 72h, 61h, 6Eh - dd loc_6566+1 + db 5, 0, 4Ah, 0 + db 'string::outofrange',0 + db 0 dd byte_1D492 dw 0 db 3, 1Bh dup(0) @@ -54444,8 +47808,7 @@ word_1E614 dw 0 word_1E616 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_1E630 dw 1 ; sub_1D347+11w @@ -62323,9 +55686,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_263E6 dd ? -dword_263EA dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends diff --git a/th03_mainl.asm b/th03_mainl.asm index eb32b1e6..52ea05f7 100644 --- a/th03_mainl.asm +++ b/th03_mainl.asm @@ -4496,6696 +4496,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5819 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_582D - mov dx, ds - mov ax, 1172h - jmp short loc_583A -; --------------------------------------------------------------------------- - -loc_582D: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_583A: - pop di - pop si - pop bp - retf -sub_5819 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_583E proc far - ; sub_58DB+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5856 - cmp ax, word ptr [bp+arg_4] - jz short loc_58D2 - -loc_5856: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_58CA - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_58CA - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_58CA - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_58AC: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_58CE - -loc_58CA: - xor ax, ax - jmp short loc_58D5 -; --------------------------------------------------------------------------- - -loc_58CE: - or dx, dx - jnz short loc_58AC - -loc_58D2: - mov ax, 1 - -loc_58D5: - pop di - pop si - mov sp, bp - pop bp - retf -sub_583E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_58DB proc near - ; sub_58DB+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_58F6: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_598A - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5983 - cmp [bp+arg_C], 0 - jz short loc_5932 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5932 - mov ax, 1 - jmp short loc_5934 -; --------------------------------------------------------------------------- - -loc_5932: - xor ax, ax - -loc_5934: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jz short loc_5957 - cmp [bp+var_6], 0 - jz short loc_5957 - jmp loc_5A1A -; --------------------------------------------------------------------------- - -loc_5957: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5983 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_58DB - add sp, 0Eh - or ax, ax - jz short loc_5983 - jmp loc_5A1A -; --------------------------------------------------------------------------- - -loc_5983: - add word ptr [bp+var_4], 8 - jmp loc_58F6 -; --------------------------------------------------------------------------- - -loc_598A: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_599D: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5A26 - cmp [bp+arg_C], 0 - jz short loc_59CF - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_59CF - mov ax, 1 - jmp short loc_59D1 -; --------------------------------------------------------------------------- - -loc_59CF: - xor ax, ax - -loc_59D1: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jz short loc_59F1 - cmp [bp+var_6], 0 - jnz short loc_5A1A - -loc_59F1: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5A1F - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_58DB - add sp, 0Eh - or ax, ax - jz short loc_5A1F - -loc_5A1A: - mov ax, 1 - jmp short loc_5A28 -; --------------------------------------------------------------------------- - -loc_5A1F: - ; sub_58DB+13Dj - add word ptr [bp+var_4], 8 - jmp loc_599D -; --------------------------------------------------------------------------- - -loc_5A26: - xor ax, ax - -loc_5A28: - pop di - pop si - mov sp, bp - pop bp - retn -sub_58DB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5A2E proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_5A39: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5A4C - cmp ax, word ptr [bp+arg_4] - jnz short loc_5A4C - jmp loc_5B61 -; --------------------------------------------------------------------------- - -loc_5A4C: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_5ADC - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_5A7F - jmp loc_5B22 -; --------------------------------------------------------------------------- - -loc_5A7F: - or cx, cx - jz short loc_5A86 - jmp loc_5B9A -; --------------------------------------------------------------------------- - -loc_5A86: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_5ABC - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_5AAA - jmp loc_5B9A -; --------------------------------------------------------------------------- - -loc_5AAA: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_5B22 - -loc_5ABC: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_5AD0 - jmp loc_5B9A -; --------------------------------------------------------------------------- - -loc_5AD0: - test byte ptr [bp+var_2+1], 10h - jnz short loc_5AD9 - jmp loc_5B9A -; --------------------------------------------------------------------------- - -loc_5AD9: - jmp loc_5B61 -; --------------------------------------------------------------------------- - -loc_5ADC: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_5B4A - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_5B01 - cmp ax, es:[bx+0Ah] - jz short loc_5B22 - -loc_5B01: - or cx, cx - jz short loc_5B08 - jmp loc_5B9A -; --------------------------------------------------------------------------- - -loc_5B08: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_5B9A - -loc_5B22: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_5A39 -; --------------------------------------------------------------------------- - -loc_5B4A: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jz short loc_5B66 - -loc_5B61: - ; sub_5A2E:loc_5AD9j - mov ax, 1 - jmp short loc_5B9C -; --------------------------------------------------------------------------- - -loc_5B66: - test byte ptr [bp+var_2], 2 - jz short loc_5B9A - test byte ptr [bp+var_4], 1 - jz short loc_5B9A - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_5B9A - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_58DB - add sp, 0Eh - jmp short loc_5B9C -; --------------------------------------------------------------------------- - -loc_5B9A: - xor ax, ax - -loc_5B9C: - ; sub_5A2E+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_5A2E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5BA2 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_5BF2 - cmp [bp+arg_0], 80h ; '€' - ja short loc_5BD4 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_5BD9 - -loc_5BD4: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_5BD9: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_5BF8 -; --------------------------------------------------------------------------- - -loc_5BF2: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_5BF8: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5BA2 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_5C26 - cmp ax, [bp+6] - jnz short loc_5C26 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_5C33 -; --------------------------------------------------------------------------- - -loc_5C26: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_5C33: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5C37 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5A2E - add sp, 0Eh - or ax, ax - jz short loc_5C61 - jmp loc_5CFD -; --------------------------------------------------------------------------- - -loc_5C61: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_5CF1 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5A2E - add sp, 0Eh - or ax, ax - jnz short loc_5CFD - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_5D34 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5A2E - add sp, 0Eh - or ax, ax - jnz short loc_5CFD - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_5D34 - -loc_5CF1: - test byte ptr [bp+var_4], 10h - jz short loc_5D34 - test [bp+arg_C], 1 - jz short loc_5D02 - -loc_5CFD: - mov ax, 1 - jmp short loc_5D36 -; --------------------------------------------------------------------------- - -loc_5D02: - test byte ptr [bp+var_2], 10h - jz short loc_5D34 - test byte ptr [bp+var_2+1], 20h - jz short loc_5D14 - test byte ptr [bp+var_4+1], 20h - jz short loc_5D34 - -loc_5D14: - test byte ptr [bp+var_4], 40h - jz short loc_5D34 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_5D30 - mov ax, 1 - jmp short loc_5D32 -; --------------------------------------------------------------------------- - -loc_5D30: - xor ax, ax - -loc_5D32: - jmp short loc_5D36 -; --------------------------------------------------------------------------- - -loc_5D34: - xor ax, ax - -loc_5D36: - ; sub_5C37:loc_5D32j - pop di - pop si - mov sp, bp - pop bp - retn -sub_5C37 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5D3C proc near - ; sub_700D+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_5D67 - or [bp+var_4], 2 - -loc_5D67: - test byte ptr [bp+arg_C], 2 - jz short loc_5D7B - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_5D7B - or [bp+var_4], 20h - -loc_5D7B: - test byte ptr [bp+arg_C], 20h - jz short loc_5D85 - or [bp+var_4], 8 - -loc_5D85: - test byte ptr [bp+arg_C], 80h - jz short loc_5D8F - or [bp+var_4], 10h - -loc_5D8F: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_5D98 - jmp loc_5F1D -; --------------------------------------------------------------------------- - -loc_5D98: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_5DA3 - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5DA3: - add bx, bx - jmp cs:off_605A[bx] - -loc_5DAA: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5DBC: - ; sub_5D3C+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5DCE: - ; sub_5D3C+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5DF4 -; --------------------------------------------------------------------------- - -loc_5DE2: - ; sub_5D3C+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5DF4: - add sp, 0Ah - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5DFA: - ; sub_5D3C+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E09: - ; sub_5D3C+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E18: - ; sub_5D3C+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5E3E -; --------------------------------------------------------------------------- - -loc_5E2C: - ; sub_5D3C+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5E3E: - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E41: - ; sub_5D3C+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E51: - ; sub_5D3C+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_5E59: - push bx - pop bx - call [bp+arg_8] - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E61: - ; sub_5D3C+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5E6F: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5E85 -; --------------------------------------------------------------------------- - -loc_5E74: - ; sub_5D3C+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_5E82: - call [bp+arg_8] - -loc_5E85: - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5E88: - ; sub_5D3C+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5EA2 -; --------------------------------------------------------------------------- - -loc_5E96: - ; sub_5D3C+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_5E9F: - call [bp+arg_8] - -loc_5EA2: - ; sub_5D3C+1FCj - pop cx - pop cx - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5EA7: - ; sub_5D3C+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5EBE: - ; sub_5D3C+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5ED5: - ; sub_5D3C+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_5EDE: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5EEF -; --------------------------------------------------------------------------- - -loc_5EE3: - ; sub_5D3C+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_5EEC: - call [bp+arg_8] - -loc_5EEF: - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5EF2: - ; sub_5D3C+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F06: - ; sub_5D3C+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F1A: - ; sub_5D3C+1EEj - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F1D: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_5F28 - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F28: - add bx, bx - jmp cs:off_602A[bx] - -loc_5F2F: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_5EA2 -; --------------------------------------------------------------------------- - -loc_5F3B: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5E9F -; --------------------------------------------------------------------------- - -loc_5F44: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_5F64 -; --------------------------------------------------------------------------- - -loc_5F55: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_5F64: - add sp, 8 - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F6A: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5EDE -; --------------------------------------------------------------------------- - -loc_5F73: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_5EEC -; --------------------------------------------------------------------------- - -loc_5F7C: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6023 -; --------------------------------------------------------------------------- - -loc_5F8A: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_5E59 -; --------------------------------------------------------------------------- - -loc_5F93: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5E6F -; --------------------------------------------------------------------------- - -loc_5FA2: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_5E82 -; --------------------------------------------------------------------------- - -loc_5FB1: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_5FBD: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_5FC9: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_5FDB: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_5FED: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_5FF8: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_6003: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_6023 -; --------------------------------------------------------------------------- - -loc_6013: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6023: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_5D3C endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_602A dw offset loc_5F2F - dw offset loc_5F3B - dw offset loc_5F44 - dw offset loc_5F55 - dw offset loc_5F6A - dw offset loc_5F73 - dw offset loc_5F93 - dw offset loc_5FA2 - dw offset loc_5F7C - dw offset loc_5F8A - dw offset loc_5F93 - dw offset loc_5FA2 - dw offset loc_6023 - dw offset loc_6023 - dw offset loc_6023 - dw offset loc_6023 - dw offset loc_5FB1 - dw offset loc_5FBD - dw offset loc_5FC9 - dw offset loc_5FDB - dw offset loc_5FED - dw offset loc_5FF8 - dw offset loc_6003 - dw offset loc_6013 -off_605A dw offset loc_5DAA - dw offset loc_5DBC - dw offset loc_5DCE - dw offset loc_5DE2 - dw offset loc_5DFA - dw offset loc_5E09 - dw offset loc_5E18 - dw offset loc_5E2C - dw offset loc_5E41 - dw offset loc_5E51 - dw offset loc_5E61 - dw offset loc_5E74 - dw offset loc_5F1A - dw offset loc_5F1A - dw offset loc_5F1A - dw offset loc_5F1A - dw offset loc_5E88 - dw offset loc_5E96 - dw offset loc_5EA7 - dw offset loc_5EBE - dw offset loc_5ED5 - dw offset loc_5EE3 - dw offset loc_5EF2 - dw offset loc_5F06 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_608A proc near - ; sub_6D19+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_609D - mov ax, 2 - jmp short loc_609F -; --------------------------------------------------------------------------- - -loc_609D: - xor ax, ax - -loc_609F: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_60C5 - or [bp+var_6], 2 - -loc_60C5: - test byte ptr [bp+arg_8], 2 - jz short loc_60D9 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_60D9 - or [bp+var_6], 20h - -loc_60D9: - test byte ptr [bp+arg_8], 20h - jz short loc_60E3 - or [bp+var_6], 8 - -loc_60E3: - test byte ptr [bp+arg_8], 80h - jz short loc_60ED - or [bp+var_6], 10h - -loc_60ED: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_60F8 - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_60F8: - add bx, bx - jmp cs:off_6212[bx] - -loc_60FF: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_610D: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_611B: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_612D: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_613F: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_61A5 -; --------------------------------------------------------------------------- - -loc_614A: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_61A2 -; --------------------------------------------------------------------------- - -loc_6152: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_616C -; --------------------------------------------------------------------------- - -loc_6160: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_616C: - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_616F: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_617D: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_620B -; --------------------------------------------------------------------------- - -loc_618B: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_61A5 -; --------------------------------------------------------------------------- - -loc_6199: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_61A2: - call [bp+arg_4] - -loc_61A5: - ; sub_608A+10Dj - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61A7: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61B3: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61BF: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61CD: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61DB: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61E6: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61F1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_620B -; --------------------------------------------------------------------------- - -loc_61FE: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_620B: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_608A endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_6212 dw offset loc_60FF - dw offset loc_610D - dw offset loc_611B - dw offset loc_612D - dw offset loc_613F - dw offset loc_614A - dw offset loc_6152 - dw offset loc_6160 - dw offset loc_616F - dw offset loc_617D - dw offset loc_618B - dw offset loc_6199 - dw offset loc_620B - dw offset loc_620B - dw offset loc_620B - dw offset loc_620B - dw offset loc_61A7 - dw offset loc_61B3 - dw offset loc_61BF - dw offset loc_61CD - dw offset loc_61DB - dw offset loc_61E6 - dw offset loc_61F1 - dw offset loc_61FE - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6242 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_626D - or [bp+var_4], 2 - -loc_626D: - test byte ptr [bp+arg_8], 2 - jz short loc_6277 - or [bp+var_4], 4 - -loc_6277: - test byte ptr [bp+arg_8], 20h - jz short loc_6281 - or [bp+var_4], 8 - -loc_6281: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_62F4 - add bx, bx - jmp cs:off_62FB[bx] - -loc_6290: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_6299: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_62A2: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62B6 -; --------------------------------------------------------------------------- - -loc_62AD: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_62B6: - pop cx - pop cx - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_62BA: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62C8 -; --------------------------------------------------------------------------- - -loc_62C2: - push [bp+arg_0] - call [bp+arg_4] - -loc_62C8: - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_62CA: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_62D4: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_62F4 -; --------------------------------------------------------------------------- - -loc_62DE: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_62F2 -; --------------------------------------------------------------------------- - -loc_62E9: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_62F2: - jmp short $+2 - -loc_62F4: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6242 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_62FB dw offset loc_6290 - dw offset loc_6299 - dw offset loc_62A2 - dw offset loc_62AD - dw offset loc_62BA - dw offset loc_62C2 - dw offset loc_62DE - dw offset loc_62E9 - dw offset loc_62CA - dw offset loc_62D4 - dw offset loc_62DE - dw offset loc_62E9 - db 4 dup(0), 0D1h, 65h - dw seg seg000 - db 14h dup(0), 2Ah, 66h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 13h, 63h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 2Bh, 63h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6361(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6361 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6343h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_63ED -; --------------------------------------------------------------------------- - -loc_63CA: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_63EA - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_63EA: - inc word ptr [bp+var_34] - -loc_63ED: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_63CA - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_644A - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_644C -; --------------------------------------------------------------------------- - -loc_644A: - xor ax, ax - -loc_644C: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6466 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6466: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_5BA2 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 5BFEh - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_65F0 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_5D3C - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_65DB -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_65DB: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_65F0: - cmp [bp+arg_1E], 0 - jnz short loc_6634 - test byte ptr [bp+var_2C], 2 - jz short loc_6634 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_608A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6634 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6634: - ; sub_6361+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6361 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6361 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6724 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6724: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6770 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6779 -; --------------------------------------------------------------------------- - -loc_6770: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6779: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6361 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6793 proc far - push si - push di - pop di - pop si - retf -sub_6793 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6798 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_67B2 - inc [bp+var_4] - -loc_67B2: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6793 - jmp short loc_6800 -; --------------------------------------------------------------------------- - -loc_67BF: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_67EA - mov ax, dx - jmp short loc_681E -; --------------------------------------------------------------------------- - -loc_67EA: - cmp [bp+var_4], 0 - jz short loc_67F7 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_67F7: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_6800: - cmp [bp+var_2], 0FFFFh - jz short loc_680E - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_67BF - -loc_680E: - cmp [bp+var_4], 0 - jz short loc_681B - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_681B: - mov ax, 1 - -loc_681E: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6798 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_684F - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_684F: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6798 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_686B proc far - push si - push di - pop di - pop si - retf -sub_686B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 6CE2 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_686B - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_6899 - jmp loc_694F -; --------------------------------------------------------------------------- - -loc_6899: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6998 -; --------------------------------------------------------------------------- - -loc_694F: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6998: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_69C9 - cmp [bp+arg_0], 0FACEh - jnz short loc_69C9 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_69D7 -; --------------------------------------------------------------------------- - -loc_69C9: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_69D7: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_6AA8 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_6AA8: - cmp [bp+arg_A], 0 - jb short loc_6AC0 - ja short loc_6AB6 - cmp [bp+arg_8], 0Fh - jbe short loc_6AC0 - -loc_6AB6: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_6AC0: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_6AF6 -; --------------------------------------------------------------------------- - -loc_6ACD: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_6AF6: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_6ACD - jnz short loc_6B07 - cmp ax, [bp+arg_8] - jb short loc_6ACD - -loc_6B07: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6798 - add sp, 8 - or ax, ax - jnz short loc_6B52 - test byte ptr [bp+arg_4], 1 - jz short loc_6B72 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_6B07 -; --------------------------------------------------------------------------- - -loc_6B52: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6798 - add sp, 8 - or ax, ax - jz short loc_6B72 - jmp loc_6CDD -; --------------------------------------------------------------------------- - -loc_6B72: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_6B7C - jmp loc_6C5C -; --------------------------------------------------------------------------- - -loc_6B7C: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_6CE2 -; --------------------------------------------------------------------------- - -loc_6C5C: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_6CE2 -; --------------------------------------------------------------------------- - -loc_6CDD: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_6CE2: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 51h, 6Dh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0EFh, 6Ch - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D19 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 6D07h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_608A - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6D5B -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6D5B: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_6D19 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D69 proc near - ; sub_72B3+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6DE4 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_6DDC - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_6D19 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_6DDC: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_6DE4: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_6E3B - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_6E33 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_6E33 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_6D19 - add sp, 0Ah - -loc_6E33: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_6E3B: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6D69 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6361+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_6D69 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6EBE proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_6EC6: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_6EE3 - xor ax, ax - jmp loc_6F84 -; --------------------------------------------------------------------------- - -loc_6EE3: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_6F0F - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6F0F: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_6F68 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_6F7D - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_6F7D - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_6EBE - add sp, 0Ch - or ax, ax - jz short loc_6F7D - -loc_6F68: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_6F84 -; --------------------------------------------------------------------------- - -loc_6F7D: - add word ptr [bp+arg_0], 8 - jmp loc_6EC6 -; --------------------------------------------------------------------------- - -loc_6F84: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6EBE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6F8A proc far - ; sub_700D+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_6FFB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6EBE - add sp, 0Ch - or ax, ax - jnz short loc_6FFB - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_6EBE - add sp, 0Ch - or ax, ax - jz short loc_7003 - -loc_6FFB: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7007 -; --------------------------------------------------------------------------- - -loc_7003: - xor dx, dx - xor ax, ax - -loc_7007: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6F8A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_700D proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_703C - jmp loc_72AD -; --------------------------------------------------------------------------- - -loc_703C: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7049 - jmp loc_72AD -; --------------------------------------------------------------------------- - -loc_7049: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_70BD - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_70BD: - test cl, 10h - jz short loc_70E5 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_70E5 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_7210 -; --------------------------------------------------------------------------- - -loc_70E5: - test dl, 1 - jnz short loc_70ED - jmp loc_7191 -; --------------------------------------------------------------------------- - -loc_70ED: - test cl, 30h - jnz short loc_70F5 - jmp loc_7191 -; --------------------------------------------------------------------------- - -loc_70F5: - test cl, 20h - jz short loc_70FC - jmp short loc_711F -; --------------------------------------------------------------------------- - -loc_70FC: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7126 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_711F: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7126: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_7187 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_6F8A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_7182 - cmp ax, [bp+var_18] - jz short loc_7187 - -loc_7182: - mov [bp+var_14], 1 - -loc_7187: - ; sub_700D+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_725B -; --------------------------------------------------------------------------- - -loc_7191: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7217 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_71E0 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_6F8A - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_71E0: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_725E - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_5D3C - add sp, 0Eh - -loc_7210: - ; sub_700D+227j - mov [bp+var_14], 1 - jmp short loc_7277 -; --------------------------------------------------------------------------- - -loc_7217: - test cl, 20h - jz short loc_7236 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_7210 -; --------------------------------------------------------------------------- - -loc_7236: - test cl, 10h - jz short loc_725E - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_725E - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_725B: - push ax - jmp short loc_7267 -; --------------------------------------------------------------------------- - -loc_725E: - ; sub_700D+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7267: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7277: - cmp [bp+var_14], 0 - jnz short loc_72AD - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_72A5 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6D19 - add sp, 0Ah - -loc_72A5: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_72AD: - pop di - pop si - mov sp, bp - pop bp - retn -sub_700D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_72B3 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7458 -; --------------------------------------------------------------------------- - -loc_730B: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7346 - jmp loc_7455 -; --------------------------------------------------------------------------- - -loc_7346: - add bx, bx - jmp cs:off_7472[bx] - -loc_734D: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_10C66+2, dx - mov word ptr dword_10C66, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_10C66 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7455 -; --------------------------------------------------------------------------- - -loc_7388: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_73B7 -; --------------------------------------------------------------------------- - -loc_7397: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_73B1 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_73B1 - jmp short loc_73D1 -; --------------------------------------------------------------------------- - -loc_73B1: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_73B7: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7397 - -loc_73D1: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_6D69 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7455 -; --------------------------------------------------------------------------- - -loc_740A: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_7E89 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7455: - mov ax, [bp+var_8] - -loc_7458: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_746C - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_746C - jmp loc_730B -; --------------------------------------------------------------------------- - -loc_746C: - ; sub_72B3+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_72B3 endp - -; --------------------------------------------------------------------------- -off_7472 dw offset loc_734D - dw offset loc_7455 - dw offset loc_7455 - dw offset loc_7455 - dw offset loc_7388 - dw offset loc_740A - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_72B3 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_72B3 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_74C8 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7536 -; --------------------------------------------------------------------------- - -loc_74E1: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_752A - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5C37 - add sp, 10h - or ax, ax - jz short loc_7532 - -loc_752A: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7546 -; --------------------------------------------------------------------------- - -loc_7532: - add word ptr [bp+var_4], 10h - -loc_7536: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_74E1 - xor dx, dx - xor ax, ax - -loc_7546: - pop di - pop si - mov sp, bp - pop bp - retn -sub_74C8 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_75E0 - jmp loc_7688 -; --------------------------------------------------------------------------- - -loc_75E0: - xor ax, ax - push ax - push [bp+var_4] - call sub_72B3 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_75F9 - jmp loc_78BB -; --------------------------------------------------------------------------- - -loc_75F9: - cmp word ptr ss:[bx], 0FACEh - jz short loc_7603 - jmp loc_78BB -; --------------------------------------------------------------------------- - -loc_7603: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_761E - jmp loc_78BB -; --------------------------------------------------------------------------- - -loc_761E: - jmp short loc_765C -; --------------------------------------------------------------------------- - -loc_7620: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5C37 - add sp, 10h - or ax, ax - jz short loc_7658 - jmp loc_78BB -; --------------------------------------------------------------------------- - -loc_7658: - add word ptr [bp+var_20], 4 - -loc_765C: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7620 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_78BB -; --------------------------------------------------------------------------- - -loc_7688: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_78AF -; --------------------------------------------------------------------------- - -loc_7692: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_76C3 - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_76C3: - add bx, bx - jmp cs:off_78C4[bx] - -loc_76CA: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_76D8 - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_76D8: - cmp word ptr ss:[bx], 0FACEh - jz short loc_76E2 - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_76E2: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_74C8 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_771C - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_771C: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7750: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_72B3 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_77A2 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_700D - add sp, 10h - -loc_77A2: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_77BB: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_77D0 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_77D0 - jmp loc_78AC -; --------------------------------------------------------------------------- - -loc_77D0: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_10C6A+2, dx - mov word ptr dword_10C6A, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_10C6A - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7867 -; --------------------------------------------------------------------------- - -loc_7832: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7846 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7846 - jmp short loc_78AC -; --------------------------------------------------------------------------- - -loc_7846: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7867: - cmp [bp+var_38], 0 - jge short loc_7885 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_7881 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_7881: - xor ax, ax - jmp short loc_78BE -; --------------------------------------------------------------------------- - -loc_7885: - cmp [bp+var_38], 0 - jnz short loc_788D - jmp short loc_78AC -; --------------------------------------------------------------------------- - -loc_788D: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7750 -; --------------------------------------------------------------------------- - -loc_78AC: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_78AF: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_78BB - jmp loc_7692 -; --------------------------------------------------------------------------- - -loc_78BB: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_78BE: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_78C4 dw offset loc_78AC - dw offset loc_77BB - dw offset loc_7832 - dw offset loc_76CA - dw offset loc_78AC - dw offset loc_78AC - db 4 dup(0), 63h, 79h - dw seg seg000 - db 14h dup(0), 73h, 79h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0E8h, 78h - dw seg seg000 - dw 0 - db 4, 0, 6, 0, 3, 0, 0D0h, 78h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_791E proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7900h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_608A - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_796C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_796C: - mov [bp+var_12], 0 - jmp short loc_797C -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_797C: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_791E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_798A proc far - ; sub_7A0B+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_79F9 -; --------------------------------------------------------------------------- - -loc_7997: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_79BF - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_79BF: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_79F9 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_7A0B - add sp, 10h - xor cx, cx - -loc_79F9: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7997 - pop di - pop si - mov sp, bp - pop bp - retf -sub_798A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7A0B proc far - ; sub_7A0B+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_7A22 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_7A29 -; --------------------------------------------------------------------------- - -loc_7A22: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_7A29: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7A4B - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_7A64 - jnz short loc_7A4B - cmp ax, [bp+var_1C] - jb short loc_7A64 - -loc_7A4B: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_791E - add sp, 0Ah - jmp loc_7CD0 -; --------------------------------------------------------------------------- - -loc_7A64: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_7AFD - -loc_7A8F: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7AFD - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7AF7 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7AF0 - jnz short loc_7AC6 - cmp bx, [bp+var_1C] - jb short loc_7AF0 - -loc_7AC6: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_7AE0: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_798A - add sp, 12h - jmp loc_7CD0 -; --------------------------------------------------------------------------- - -loc_7AF0: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7AF7: - add word ptr [bp+var_10], 8 - jmp short loc_7A8F -; --------------------------------------------------------------------------- - -loc_7AFD: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_7B16: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7B8C - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7B86 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7B7F - jnz short loc_7B4D - cmp bx, [bp+var_1C] - jb short loc_7B7F - -loc_7B4D: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_798A - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_7B7C - jmp loc_7CD0 -; --------------------------------------------------------------------------- - -loc_7B7C: - jmp loc_7CB0 -; --------------------------------------------------------------------------- - -loc_7B7F: - ; sub_7A0B+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7B86: - add word ptr [bp+var_8], 8 - jmp short loc_7B16 -; --------------------------------------------------------------------------- - -loc_7B8C: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_7BA5: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_7BDF - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_7BDF: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_7C03 - jb short loc_7BF9 - cmp bx, [bp+var_1C] - jnb short loc_7C03 - -loc_7BF9: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_7CC9 -; --------------------------------------------------------------------------- - -loc_7C03: - ; sub_7A0B+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_7C4F - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_7CD6 - add sp, 0Eh - jmp short loc_7C6F -; --------------------------------------------------------------------------- - -loc_7C4F: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_7A0B - add sp, 10h - -loc_7C6F: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_7C88 - jmp loc_7C03 -; --------------------------------------------------------------------------- - -loc_7C88: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_798A - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_7CD0 - -loc_7CB0: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_7AE0 -; --------------------------------------------------------------------------- - -loc_7CC9: - add word ptr [bp+var_18], 6 - jmp loc_7BA5 -; --------------------------------------------------------------------------- - -loc_7CD0: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7A0B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CD6 proc far - ; sub_7E89+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_7D30 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_7D30: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7DC0 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_7DAD -; --------------------------------------------------------------------------- - -loc_7D8E: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_7DAD: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7A0B - add sp, 10h - -loc_7DC0: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_7D8E - pop di - pop si - mov sp, bp - pop bp - retf -sub_7CD6 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7DD8 proc far - ; sub_7E89+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_7E7D - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_7E7D - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_7E37 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_7E40 -; --------------------------------------------------------------------------- - -loc_7E37: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_7E40: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_7E7D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_7DD8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7E89 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_7E9F - jmp loc_828C -; --------------------------------------------------------------------------- - -loc_7E9F: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_7EF8 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_7EF8: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_7F0F - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_828E -; --------------------------------------------------------------------------- - -loc_7F0F: - cmp [bp+var_6], 0 - jg short loc_7F41 - jnz short loc_7F1D - cmp [bp+var_8], 0 - ja short loc_7F41 - -loc_7F1D: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_7F2F - jmp loc_828C -; --------------------------------------------------------------------------- - -loc_7F2F: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_80A6 -; --------------------------------------------------------------------------- - -loc_7F41: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_7F4D: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7F60 - sub word ptr [bp+var_C], 0Ah - jmp loc_80A6 -; --------------------------------------------------------------------------- - -loc_7F60: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_7F88 - jmp loc_8052 -; --------------------------------------------------------------------------- - -loc_7F88: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_7FAC - jmp loc_8052 -; --------------------------------------------------------------------------- - -loc_7FAC: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_7FB9 - jmp loc_8052 -; --------------------------------------------------------------------------- - -loc_7FB9: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_7FC6 - jmp loc_8052 -; --------------------------------------------------------------------------- - -loc_7FC6: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_7FDF - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_7FED -; --------------------------------------------------------------------------- - -loc_7FDF: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_7FED: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8015 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_801E -; --------------------------------------------------------------------------- - -loc_8015: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_801E: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_802F - add word ptr [bp+var_1C], 4 - -loc_802F: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_7DD8 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8052: - ; sub_7E89+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8077 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8077: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8095 - jnz short loc_80A6 - cmp ax, [bp+var_8] - jnb short loc_80A6 - -loc_8095: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_7F4D -; --------------------------------------------------------------------------- - -loc_80A6: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_80D5 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_80E3 -; --------------------------------------------------------------------------- - -loc_80D5: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_80E3: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_80EF - jmp loc_8179 -; --------------------------------------------------------------------------- - -loc_80EF: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8121 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_812A -; --------------------------------------------------------------------------- - -loc_8121: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_812A: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_8148 - add [bp+var_18], 4 - -loc_8148: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8179 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8179 - test byte ptr [bp+var_16+2], 8 - jz short loc_8179 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7DD8 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8179: - ; sub_7E89+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_81C7 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_81A7 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7CD6 - add sp, 0Eh - jmp short loc_81C7 -; --------------------------------------------------------------------------- - -loc_81A7: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7A0B - add sp, 10h - -loc_81C7: - ; sub_7E89+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_81D5 - jmp loc_8273 -; --------------------------------------------------------------------------- - -loc_81D5: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_81E4 - sub word ptr [bp+driver], 4 - -loc_81E4: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8233 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8220 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8252 -; --------------------------------------------------------------------------- - -loc_8220: - test byte ptr [bp+var_16+2], 80h - jz short loc_8273 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8271 -; --------------------------------------------------------------------------- - -loc_8233: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8260 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8252: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6242 - add sp, 0Ah - jmp short loc_8273 -; --------------------------------------------------------------------------- - -loc_8260: - test byte ptr [bp+var_16+2], 80h - jz short loc_8273 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8271: - pop cx - pop cx - -loc_8273: - ; sub_7E89+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_828C - jmp loc_80A6 -; --------------------------------------------------------------------------- - -loc_828C: - xor ax, ax - -loc_828E: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7E89 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_82D7 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 117Bh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_82DC - -loc_82D7: - mov ax, 0FFFFh - jmp short loc_82E3 -; --------------------------------------------------------------------------- - -loc_82DC: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_82E3: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_833F - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_837D - -loc_833F: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 891Bh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 88FDh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_837D: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_83C8 - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 891Bh - test dl, 1 - jz short loc_83C8 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_83C8: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_583E - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_842C - xor ax, ax - jmp short loc_8485 -; --------------------------------------------------------------------------- - -loc_842C: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_843E - mov ax, 1 - jmp short loc_8485 -; --------------------------------------------------------------------------- - -loc_843E: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8483 - mov ax, 1 - jmp short loc_8485 -; --------------------------------------------------------------------------- - -loc_8483: - xor ax, ax - -loc_8485: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5819 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_84E7 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 287Eh - push ax ; src - push cs ; int - mov ax, 88E7h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_84E7: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8528 proc near - ; sub_8528+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8563 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_856D - -loc_8563: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8574 - -loc_856D: - xor dx, dx - xor ax, ax - jmp loc_8768 -; --------------------------------------------------------------------------- - -loc_8574: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8586: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_858C: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_85A7 - jmp loc_8730 -; --------------------------------------------------------------------------- - -loc_85A7: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_85B4 - jmp loc_8729 -; --------------------------------------------------------------------------- - -loc_85B4: - cmp [bp+arg_1A], 0 - jz short loc_85CE - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_85CE - mov ax, 1 - jmp short loc_85D0 -; --------------------------------------------------------------------------- - -loc_85CE: - xor ax, ax - -loc_85D0: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_8617 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_8617: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_8699 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_863B - jmp loc_8729 -; --------------------------------------------------------------------------- - -loc_863B: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8528 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8682 - jmp loc_8729 -; --------------------------------------------------------------------------- - -loc_8682: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_86F6 -; --------------------------------------------------------------------------- - -loc_8699: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_86BA - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_8729 - cmp ax, word ptr [bp+var_14] - jnz short loc_8729 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8768 -; --------------------------------------------------------------------------- - -loc_86BA: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_86F6 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8528 - add sp, 20h - or ax, dx - jz short loc_8729 - -loc_86F6: - ; sub_8528+198j - cmp [bp+var_E], 0 - jz short loc_8714 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_8714 - cmp ax, [bp+var_C] - jnz short loc_8714 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_8729 -; --------------------------------------------------------------------------- - -loc_8714: - ; sub_8528+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_8729: - ; sub_8528+110j ... - add word ptr [bp+var_4], 8 - jmp loc_858C -; --------------------------------------------------------------------------- - -loc_8730: - cmp [bp+var_6], 0 - jnz short loc_8749 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8586 -; --------------------------------------------------------------------------- - -loc_8749: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8762 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8762: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8768: - ; sub_8528+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_8528 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8799 - jmp loc_889D -; --------------------------------------------------------------------------- - -loc_8799: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_87EF - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jz short loc_87F8 - -loc_87EF: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_88CD -; --------------------------------------------------------------------------- - -loc_87F8: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_583E - add sp, 8 - or ax, ax - jnz short loc_8851 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8528 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_8895 - -loc_8851: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8528 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_889D - cmp [bp+var_16], 0 - jz short loc_889D - -loc_8895: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_88CD -; --------------------------------------------------------------------------- - -loc_889D: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_88C9 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 287Fh - push ax ; src - push cs ; int - mov ax, 88D3h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_88C9: - xor dx, dx - xor ax, ax - -loc_88CD: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 1Fh, 89h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 1Fh, 89h - dw seg seg000 - db 4 dup(0), 98h, 83h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 98h, 83h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -23110,8 +16421,7 @@ word_F55C dw 0 word_F55E dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_F578 dw 1 word_F57A dw 0 @@ -24291,9 +17601,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_10C66 dd ? -dword_10C6A dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends diff --git a/th03_op.asm b/th03_op.asm index 60f1ad2c..759956b0 100644 --- a/th03_op.asm +++ b/th03_op.asm @@ -4897,6692 +4897,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5AFB proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_5B0F - mov dx, ds - mov ax, 0FBEh - jmp short loc_5B1C -; --------------------------------------------------------------------------- - -loc_5B0F: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_5B1C: - pop di - pop si - pop bp - retf -sub_5AFB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5B20 proc far - ; sub_5BBD+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5B38 - cmp ax, word ptr [bp+arg_4] - jz short loc_5BB4 - -loc_5B38: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_5BAC - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_5BAC - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_5BAC - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_5B8E: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_5BB0 - -loc_5BAC: - xor ax, ax - jmp short loc_5BB7 -; --------------------------------------------------------------------------- - -loc_5BB0: - or dx, dx - jnz short loc_5B8E - -loc_5BB4: - mov ax, 1 - -loc_5BB7: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5B20 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5BBD proc near - ; sub_5BBD+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5BD8: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5C6C - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_5C65 - cmp [bp+arg_C], 0 - jz short loc_5C14 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5C14 - mov ax, 1 - jmp short loc_5C16 -; --------------------------------------------------------------------------- - -loc_5C14: - xor ax, ax - -loc_5C16: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jz short loc_5C39 - cmp [bp+var_6], 0 - jz short loc_5C39 - jmp loc_5CFC -; --------------------------------------------------------------------------- - -loc_5C39: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5C65 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5BBD - add sp, 0Eh - or ax, ax - jz short loc_5C65 - jmp loc_5CFC -; --------------------------------------------------------------------------- - -loc_5C65: - add word ptr [bp+var_4], 8 - jmp loc_5BD8 -; --------------------------------------------------------------------------- - -loc_5C6C: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_5C7F: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_5D08 - cmp [bp+arg_C], 0 - jz short loc_5CB1 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_5CB1 - mov ax, 1 - jmp short loc_5CB3 -; --------------------------------------------------------------------------- - -loc_5CB1: - xor ax, ax - -loc_5CB3: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jz short loc_5CD3 - cmp [bp+var_6], 0 - jnz short loc_5CFC - -loc_5CD3: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_5D01 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_5BBD - add sp, 0Eh - or ax, ax - jz short loc_5D01 - -loc_5CFC: - mov ax, 1 - jmp short loc_5D0A -; --------------------------------------------------------------------------- - -loc_5D01: - ; sub_5BBD+13Dj - add word ptr [bp+var_4], 8 - jmp loc_5C7F -; --------------------------------------------------------------------------- - -loc_5D08: - xor ax, ax - -loc_5D0A: - pop di - pop si - mov sp, bp - pop bp - retn -sub_5BBD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5D10 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_5D1B: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_5D2E - cmp ax, word ptr [bp+arg_4] - jnz short loc_5D2E - jmp loc_5E43 -; --------------------------------------------------------------------------- - -loc_5D2E: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_5DBE - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_5D61 - jmp loc_5E04 -; --------------------------------------------------------------------------- - -loc_5D61: - or cx, cx - jz short loc_5D68 - jmp loc_5E7C -; --------------------------------------------------------------------------- - -loc_5D68: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_5D9E - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_5D8C - jmp loc_5E7C -; --------------------------------------------------------------------------- - -loc_5D8C: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_5E04 - -loc_5D9E: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_5DB2 - jmp loc_5E7C -; --------------------------------------------------------------------------- - -loc_5DB2: - test byte ptr [bp+var_2+1], 10h - jnz short loc_5DBB - jmp loc_5E7C -; --------------------------------------------------------------------------- - -loc_5DBB: - jmp loc_5E43 -; --------------------------------------------------------------------------- - -loc_5DBE: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_5E2C - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_5DE3 - cmp ax, es:[bx+0Ah] - jz short loc_5E04 - -loc_5DE3: - or cx, cx - jz short loc_5DEA - jmp loc_5E7C -; --------------------------------------------------------------------------- - -loc_5DEA: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_5E7C - -loc_5E04: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_5D1B -; --------------------------------------------------------------------------- - -loc_5E2C: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jz short loc_5E48 - -loc_5E43: - ; sub_5D10:loc_5DBBj - mov ax, 1 - jmp short loc_5E7E -; --------------------------------------------------------------------------- - -loc_5E48: - test byte ptr [bp+var_2], 2 - jz short loc_5E7C - test byte ptr [bp+var_4], 1 - jz short loc_5E7C - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_5E7C - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5BBD - add sp, 0Eh - jmp short loc_5E7E -; --------------------------------------------------------------------------- - -loc_5E7C: - xor ax, ax - -loc_5E7E: - ; sub_5D10+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_5D10 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5E84 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_5ED4 - cmp [bp+arg_0], 80h ; '€' - ja short loc_5EB6 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_5EBB - -loc_5EB6: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_5EBB: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_5EDA -; --------------------------------------------------------------------------- - -loc_5ED4: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_5EDA: - pop di - pop si - mov sp, bp - pop bp - retf -sub_5E84 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_5F08 - cmp ax, [bp+6] - jnz short loc_5F08 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_5F15 -; --------------------------------------------------------------------------- - -loc_5F08: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_5F15: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_5F19 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5D10 - add sp, 0Eh - or ax, ax - jz short loc_5F43 - jmp loc_5FDF -; --------------------------------------------------------------------------- - -loc_5F43: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_5FD3 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5D10 - add sp, 0Eh - or ax, ax - jnz short loc_5FDF - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6016 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_5D10 - add sp, 0Eh - or ax, ax - jnz short loc_5FDF - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6016 - -loc_5FD3: - test byte ptr [bp+var_4], 10h - jz short loc_6016 - test [bp+arg_C], 1 - jz short loc_5FE4 - -loc_5FDF: - mov ax, 1 - jmp short loc_6018 -; --------------------------------------------------------------------------- - -loc_5FE4: - test byte ptr [bp+var_2], 10h - jz short loc_6016 - test byte ptr [bp+var_2+1], 20h - jz short loc_5FF6 - test byte ptr [bp+var_4+1], 20h - jz short loc_6016 - -loc_5FF6: - test byte ptr [bp+var_4], 40h - jz short loc_6016 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_6012 - mov ax, 1 - jmp short loc_6014 -; --------------------------------------------------------------------------- - -loc_6012: - xor ax, ax - -loc_6014: - jmp short loc_6018 -; --------------------------------------------------------------------------- - -loc_6016: - xor ax, ax - -loc_6018: - ; sub_5F19:loc_6014j - pop di - pop si - mov sp, bp - pop bp - retn -sub_5F19 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_601E proc near - ; sub_72EF+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6049 - or [bp+var_4], 2 - -loc_6049: - test byte ptr [bp+arg_C], 2 - jz short loc_605D - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_605D - or [bp+var_4], 20h - -loc_605D: - test byte ptr [bp+arg_C], 20h - jz short loc_6067 - or [bp+var_4], 8 - -loc_6067: - test byte ptr [bp+arg_C], 80h - jz short loc_6071 - or [bp+var_4], 10h - -loc_6071: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_607A - jmp loc_61FF -; --------------------------------------------------------------------------- - -loc_607A: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6085 - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_6085: - add bx, bx - jmp cs:off_633C[bx] - -loc_608C: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_609E: - ; sub_601E+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_60B0: - ; sub_601E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_60D6 -; --------------------------------------------------------------------------- - -loc_60C4: - ; sub_601E+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_60D6: - add sp, 0Ah - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_60DC: - ; sub_601E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_60EB: - ; sub_601E+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_60FA: - ; sub_601E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6120 -; --------------------------------------------------------------------------- - -loc_610E: - ; sub_601E+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6120: - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_6123: - ; sub_601E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_6133: - ; sub_601E+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_613B: - push bx - pop bx - call [bp+arg_8] - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_6143: - ; sub_601E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6151: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6167 -; --------------------------------------------------------------------------- - -loc_6156: - ; sub_601E+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6164: - call [bp+arg_8] - -loc_6167: - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_616A: - ; sub_601E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6184 -; --------------------------------------------------------------------------- - -loc_6178: - ; sub_601E+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_6181: - call [bp+arg_8] - -loc_6184: - ; sub_601E+1FCj - pop cx - pop cx - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_6189: - ; sub_601E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61A0: - ; sub_601E+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61B7: - ; sub_601E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_61C0: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_61D1 -; --------------------------------------------------------------------------- - -loc_61C5: - ; sub_601E+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_61CE: - call [bp+arg_8] - -loc_61D1: - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61D4: - ; sub_601E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61E8: - ; sub_601E+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61FC: - ; sub_601E+1EEj - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_61FF: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_620A - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_620A: - add bx, bx - jmp cs:off_630C[bx] - -loc_6211: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6184 -; --------------------------------------------------------------------------- - -loc_621D: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6181 -; --------------------------------------------------------------------------- - -loc_6226: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6246 -; --------------------------------------------------------------------------- - -loc_6237: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6246: - add sp, 8 - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_624C: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_61C0 -; --------------------------------------------------------------------------- - -loc_6255: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_61CE -; --------------------------------------------------------------------------- - -loc_625E: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6305 -; --------------------------------------------------------------------------- - -loc_626C: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_613B -; --------------------------------------------------------------------------- - -loc_6275: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6151 -; --------------------------------------------------------------------------- - -loc_6284: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6164 -; --------------------------------------------------------------------------- - -loc_6293: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_629F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62AB: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62BD: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62CF: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62DA: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62E5: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_6305 -; --------------------------------------------------------------------------- - -loc_62F5: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6305: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_601E endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_630C dw offset loc_6211 - dw offset loc_621D - dw offset loc_6226 - dw offset loc_6237 - dw offset loc_624C - dw offset loc_6255 - dw offset loc_6275 - dw offset loc_6284 - dw offset loc_625E - dw offset loc_626C - dw offset loc_6275 - dw offset loc_6284 - dw offset loc_6305 - dw offset loc_6305 - dw offset loc_6305 - dw offset loc_6305 - dw offset loc_6293 - dw offset loc_629F - dw offset loc_62AB - dw offset loc_62BD - dw offset loc_62CF - dw offset loc_62DA - dw offset loc_62E5 - dw offset loc_62F5 -off_633C dw offset loc_608C - dw offset loc_609E - dw offset loc_60B0 - dw offset loc_60C4 - dw offset loc_60DC - dw offset loc_60EB - dw offset loc_60FA - dw offset loc_610E - dw offset loc_6123 - dw offset loc_6133 - dw offset loc_6143 - dw offset loc_6156 - dw offset loc_61FC - dw offset loc_61FC - dw offset loc_61FC - dw offset loc_61FC - dw offset loc_616A - dw offset loc_6178 - dw offset loc_6189 - dw offset loc_61A0 - dw offset loc_61B7 - dw offset loc_61C5 - dw offset loc_61D4 - dw offset loc_61E8 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_636C proc near - ; sub_6FFB+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_637F - mov ax, 2 - jmp short loc_6381 -; --------------------------------------------------------------------------- - -loc_637F: - xor ax, ax - -loc_6381: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_63A7 - or [bp+var_6], 2 - -loc_63A7: - test byte ptr [bp+arg_8], 2 - jz short loc_63BB - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_63BB - or [bp+var_6], 20h - -loc_63BB: - test byte ptr [bp+arg_8], 20h - jz short loc_63C5 - or [bp+var_6], 8 - -loc_63C5: - test byte ptr [bp+arg_8], 80h - jz short loc_63CF - or [bp+var_6], 10h - -loc_63CF: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_63DA - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_63DA: - add bx, bx - jmp cs:off_64F4[bx] - -loc_63E1: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_63EF: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_63FD: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_640F: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_6421: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6487 -; --------------------------------------------------------------------------- - -loc_642C: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_6484 -; --------------------------------------------------------------------------- - -loc_6434: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_644E -; --------------------------------------------------------------------------- - -loc_6442: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_644E: - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_6451: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_645F: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_64ED -; --------------------------------------------------------------------------- - -loc_646D: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6487 -; --------------------------------------------------------------------------- - -loc_647B: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_6484: - call [bp+arg_4] - -loc_6487: - ; sub_636C+10Dj - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_6489: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_6495: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64A1: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64AF: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64BD: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64C8: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64D3: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_64ED -; --------------------------------------------------------------------------- - -loc_64E0: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_64ED: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_636C endp - -; --------------------------------------------------------------------------- -off_64F4 dw offset loc_63E1 - dw offset loc_63EF - dw offset loc_63FD - dw offset loc_640F - dw offset loc_6421 - dw offset loc_642C - dw offset loc_6434 - dw offset loc_6442 - dw offset loc_6451 - dw offset loc_645F - dw offset loc_646D - dw offset loc_647B - dw offset loc_64ED - dw offset loc_64ED - dw offset loc_64ED - dw offset loc_64ED - dw offset loc_6489 - dw offset loc_6495 - dw offset loc_64A1 - dw offset loc_64AF - dw offset loc_64BD - dw offset loc_64C8 - dw offset loc_64D3 - dw offset loc_64E0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6524 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_654F - or [bp+var_4], 2 - -loc_654F: - test byte ptr [bp+arg_8], 2 - jz short loc_6559 - or [bp+var_4], 4 - -loc_6559: - test byte ptr [bp+arg_8], 20h - jz short loc_6563 - or [bp+var_4], 8 - -loc_6563: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_65D6 - add bx, bx - jmp cs:off_65DD[bx] - -loc_6572: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_657B: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_6584: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_6598 -; --------------------------------------------------------------------------- - -loc_658F: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6598: - pop cx - pop cx - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_659C: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_65AA -; --------------------------------------------------------------------------- - -loc_65A4: - push [bp+arg_0] - call [bp+arg_4] - -loc_65AA: - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_65AC: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_65B6: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_65D6 -; --------------------------------------------------------------------------- - -loc_65C0: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_65D4 -; --------------------------------------------------------------------------- - -loc_65CB: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_65D4: - jmp short $+2 - -loc_65D6: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6524 endp - -; --------------------------------------------------------------------------- -off_65DD dw offset loc_6572 - dw offset loc_657B - dw offset loc_6584 - dw offset loc_658F - dw offset loc_659C - dw offset loc_65A4 - dw offset loc_65C0 - dw offset loc_65CB - dw offset loc_65AC - dw offset loc_65B6 - dw offset loc_65C0 - dw offset loc_65CB - db 4 dup(0), 0B3h, 68h - dw seg seg000 - db 14h dup(0), 0Ch, 69h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0F5h, 65h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0Dh, 66h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6643(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6643 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6625h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_66CF -; --------------------------------------------------------------------------- - -loc_66AC: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_66CC - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_66CC: - inc word ptr [bp+var_34] - -loc_66CF: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_66AC - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_672C - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_672E -; --------------------------------------------------------------------------- - -loc_672C: - xor ax, ax - -loc_672E: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6748 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6748: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_5E84 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 5EE0h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_68D2 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_601E - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_68BD -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_68BD: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_68D2: - cmp [bp+arg_1E], 0 - jnz short loc_6916 - test byte ptr [bp+var_2C], 2 - jz short loc_6916 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_636C - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_6916 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_6916: - ; sub_6643+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6643 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6643 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_6A06 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_6A06: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_6A52 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_6A5B -; --------------------------------------------------------------------------- - -loc_6A52: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_6A5B: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6643 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6A75 proc far - push si - push di - pop di - pop si - retf -sub_6A75 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6A7A proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_6A94 - inc [bp+var_4] - -loc_6A94: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_6A75 - jmp short loc_6AE2 -; --------------------------------------------------------------------------- - -loc_6AA1: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_6ACC - mov ax, dx - jmp short loc_6B00 -; --------------------------------------------------------------------------- - -loc_6ACC: - cmp [bp+var_4], 0 - jz short loc_6AD9 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6AD9: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_6AE2: - cmp [bp+var_2], 0FFFFh - jz short loc_6AF0 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_6AA1 - -loc_6AF0: - cmp [bp+var_4], 0 - jz short loc_6AFD - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_6AFD: - mov ax, 1 - -loc_6B00: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6A7A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_6B31 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_6B31: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_6A7A - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_6B4D proc far - push si - push di - pop di - pop si - retf -sub_6B4D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 6FC4 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_6B4D - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_6B7B - jmp loc_6C31 -; --------------------------------------------------------------------------- - -loc_6B7B: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_6C7A -; --------------------------------------------------------------------------- - -loc_6C31: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_6C7A: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_6CAB - cmp [bp+arg_0], 0FACEh - jnz short loc_6CAB - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_6CB9 -; --------------------------------------------------------------------------- - -loc_6CAB: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_6CB9: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_6D8A - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_6D8A: - cmp [bp+arg_A], 0 - jb short loc_6DA2 - ja short loc_6D98 - cmp [bp+arg_8], 0Fh - jbe short loc_6DA2 - -loc_6D98: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_6DA2: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_6DD8 -; --------------------------------------------------------------------------- - -loc_6DAF: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_6DD8: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_6DAF - jnz short loc_6DE9 - cmp ax, [bp+arg_8] - jb short loc_6DAF - -loc_6DE9: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6A7A - add sp, 8 - or ax, ax - jnz short loc_6E34 - test byte ptr [bp+arg_4], 1 - jz short loc_6E54 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_6DE9 -; --------------------------------------------------------------------------- - -loc_6E34: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_6A7A - add sp, 8 - or ax, ax - jz short loc_6E54 - jmp loc_6FBF -; --------------------------------------------------------------------------- - -loc_6E54: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_6E5E - jmp loc_6F3E -; --------------------------------------------------------------------------- - -loc_6E5E: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_6FC4 -; --------------------------------------------------------------------------- - -loc_6F3E: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_6FC4 -; --------------------------------------------------------------------------- - -loc_6FBF: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_6FC4: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 33h, 70h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0D1h, 6Fh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6FFB proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 6FE9h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_636C - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_703D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_703D: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_6FFB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_704B proc near - ; sub_7595+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_70C6 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_70BE - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_6FFB - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_70BE: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_70C6: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_711D - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7115 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7115 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_6FFB - add sp, 0Ah - -loc_7115: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_711D: - pop di - pop si - mov sp, bp - pop bp - retn -sub_704B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6643+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_704B - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_71A0 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_71A8: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_71C5 - xor ax, ax - jmp loc_7266 -; --------------------------------------------------------------------------- - -loc_71C5: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_71F1 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_71F1: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_724A - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_725F - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_725F - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_71A0 - add sp, 0Ch - or ax, ax - jz short loc_725F - -loc_724A: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_7266 -; --------------------------------------------------------------------------- - -loc_725F: - add word ptr [bp+arg_0], 8 - jmp loc_71A8 -; --------------------------------------------------------------------------- - -loc_7266: - pop di - pop si - mov sp, bp - pop bp - retn -sub_71A0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_726C proc far - ; sub_72EF+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_72DD - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_71A0 - add sp, 0Ch - or ax, ax - jnz short loc_72DD - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_71A0 - add sp, 0Ch - or ax, ax - jz short loc_72E5 - -loc_72DD: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_72E9 -; --------------------------------------------------------------------------- - -loc_72E5: - xor dx, dx - xor ax, ax - -loc_72E9: - pop di - pop si - mov sp, bp - pop bp - retf -sub_726C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_72EF proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_731E - jmp loc_758F -; --------------------------------------------------------------------------- - -loc_731E: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_732B - jmp loc_758F -; --------------------------------------------------------------------------- - -loc_732B: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_739F - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_739F: - test cl, 10h - jz short loc_73C7 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_73C7 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_74F2 -; --------------------------------------------------------------------------- - -loc_73C7: - test dl, 1 - jnz short loc_73CF - jmp loc_7473 -; --------------------------------------------------------------------------- - -loc_73CF: - test cl, 30h - jnz short loc_73D7 - jmp loc_7473 -; --------------------------------------------------------------------------- - -loc_73D7: - test cl, 20h - jz short loc_73DE - jmp short loc_7401 -; --------------------------------------------------------------------------- - -loc_73DE: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7408 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_7401: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7408: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_7469 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_726C - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_7464 - cmp ax, [bp+var_18] - jz short loc_7469 - -loc_7464: - mov [bp+var_14], 1 - -loc_7469: - ; sub_72EF+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_753D -; --------------------------------------------------------------------------- - -loc_7473: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_74F9 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_74C2 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_726C - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_74C2: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_7540 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_601E - add sp, 0Eh - -loc_74F2: - ; sub_72EF+227j - mov [bp+var_14], 1 - jmp short loc_7559 -; --------------------------------------------------------------------------- - -loc_74F9: - test cl, 20h - jz short loc_7518 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_74F2 -; --------------------------------------------------------------------------- - -loc_7518: - test cl, 10h - jz short loc_7540 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_7540 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_753D: - push ax - jmp short loc_7549 -; --------------------------------------------------------------------------- - -loc_7540: - ; sub_72EF+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7549: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7559: - cmp [bp+var_14], 0 - jnz short loc_758F - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7587 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6FFB - add sp, 0Ah - -loc_7587: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_758F: - pop di - pop si - mov sp, bp - pop bp - retn -sub_72EF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7595 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_773A -; --------------------------------------------------------------------------- - -loc_75ED: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7628 - jmp loc_7737 -; --------------------------------------------------------------------------- - -loc_7628: - add bx, bx - jmp cs:off_7754[bx] - -loc_762F: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_FCF6+2, dx - mov word ptr dword_FCF6, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_FCF6 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7737 -; --------------------------------------------------------------------------- - -loc_766A: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_7699 -; --------------------------------------------------------------------------- - -loc_7679: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_7693 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_7693 - jmp short loc_76B3 -; --------------------------------------------------------------------------- - -loc_7693: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_7699: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7679 - -loc_76B3: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_704B - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7737 -; --------------------------------------------------------------------------- - -loc_76EC: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_816B - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7737: - mov ax, [bp+var_8] - -loc_773A: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_774E - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_774E - jmp loc_75ED -; --------------------------------------------------------------------------- - -loc_774E: - ; sub_7595+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_7595 endp - -; --------------------------------------------------------------------------- -off_7754 dw offset loc_762F - dw offset loc_7737 - dw offset loc_7737 - dw offset loc_7737 - dw offset loc_766A - dw offset loc_76EC - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_7595 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_7595 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_77AA proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7818 -; --------------------------------------------------------------------------- - -loc_77C3: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_780C - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5F19 - add sp, 10h - or ax, ax - jz short loc_7814 - -loc_780C: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7828 -; --------------------------------------------------------------------------- - -loc_7814: - add word ptr [bp+var_4], 10h - -loc_7818: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_77C3 - xor dx, dx - xor ax, ax - -loc_7828: - pop di - pop si - mov sp, bp - pop bp - retn -sub_77AA endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_78C2 - jmp loc_796A -; --------------------------------------------------------------------------- - -loc_78C2: - xor ax, ax - push ax - push [bp+var_4] - call sub_7595 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_78DB - jmp loc_7B9D -; --------------------------------------------------------------------------- - -loc_78DB: - cmp word ptr ss:[bx], 0FACEh - jz short loc_78E5 - jmp loc_7B9D -; --------------------------------------------------------------------------- - -loc_78E5: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_7900 - jmp loc_7B9D -; --------------------------------------------------------------------------- - -loc_7900: - jmp short loc_793E -; --------------------------------------------------------------------------- - -loc_7902: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_5F19 - add sp, 10h - or ax, ax - jz short loc_793A - jmp loc_7B9D -; --------------------------------------------------------------------------- - -loc_793A: - add word ptr [bp+var_20], 4 - -loc_793E: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7902 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_7B9D -; --------------------------------------------------------------------------- - -loc_796A: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_7B91 -; --------------------------------------------------------------------------- - -loc_7974: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_79A5 - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_79A5: - add bx, bx - jmp cs:off_7BA6[bx] - -loc_79AC: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_79BA - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_79BA: - cmp word ptr ss:[bx], 0FACEh - jz short loc_79C4 - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_79C4: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_77AA - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_79FE - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_79FE: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_7A32: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_7595 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_7A84 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_72EF - add sp, 10h - -loc_7A84: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_7A9D: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7AB2 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7AB2 - jmp loc_7B8E -; --------------------------------------------------------------------------- - -loc_7AB2: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_FCFA+2, dx - mov word ptr dword_FCFA, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_FCFA - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_7B49 -; --------------------------------------------------------------------------- - -loc_7B14: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_7B28 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_7B28 - jmp short loc_7B8E -; --------------------------------------------------------------------------- - -loc_7B28: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_7B49: - cmp [bp+var_38], 0 - jge short loc_7B67 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_7B63 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_7B63: - xor ax, ax - jmp short loc_7BA0 -; --------------------------------------------------------------------------- - -loc_7B67: - cmp [bp+var_38], 0 - jnz short loc_7B6F - jmp short loc_7B8E -; --------------------------------------------------------------------------- - -loc_7B6F: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_7A32 -; --------------------------------------------------------------------------- - -loc_7B8E: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_7B91: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_7B9D - jmp loc_7974 -; --------------------------------------------------------------------------- - -loc_7B9D: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_7BA0: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_7BA6 dw offset loc_7B8E - dw offset loc_7A9D - dw offset loc_7B14 - dw offset loc_79AC - dw offset loc_7B8E - dw offset loc_7B8E - db 4 dup(0), 45h, 7Ch - dw seg seg000 - db 14h dup(0), 55h, 7Ch - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0CAh, 7Bh - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 0B2h, 7Bh - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7C00 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7BE2h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_636C - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_7C4E -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7C4E: - mov [bp+var_12], 0 - jmp short loc_7C5E -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7C5E: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7C00 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7C6C proc far - ; sub_7CED+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_7CDB -; --------------------------------------------------------------------------- - -loc_7C79: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_7CA1 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7CA1: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7CDB - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_7CED - add sp, 10h - xor cx, cx - -loc_7CDB: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_7C79 - pop di - pop si - mov sp, bp - pop bp - retf -sub_7C6C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CED proc far - ; sub_7CED+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_7D04 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_7D0B -; --------------------------------------------------------------------------- - -loc_7D04: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_7D0B: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_7D2D - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_7D46 - jnz short loc_7D2D - cmp ax, [bp+var_1C] - jb short loc_7D46 - -loc_7D2D: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7C00 - add sp, 0Ah - jmp loc_7FB2 -; --------------------------------------------------------------------------- - -loc_7D46: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_7DDF - -loc_7D71: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7DDF - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7DD9 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7DD2 - jnz short loc_7DA8 - cmp bx, [bp+var_1C] - jb short loc_7DD2 - -loc_7DA8: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_7DC2: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7C6C - add sp, 12h - jmp loc_7FB2 -; --------------------------------------------------------------------------- - -loc_7DD2: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7DD9: - add word ptr [bp+var_10], 8 - jmp short loc_7D71 -; --------------------------------------------------------------------------- - -loc_7DDF: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_7DF8: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_7E6E - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_7E68 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_7E61 - jnz short loc_7E2F - cmp bx, [bp+var_1C] - jb short loc_7E61 - -loc_7E2F: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7C6C - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_7E5E - jmp loc_7FB2 -; --------------------------------------------------------------------------- - -loc_7E5E: - jmp loc_7F92 -; --------------------------------------------------------------------------- - -loc_7E61: - ; sub_7CED+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_7E68: - add word ptr [bp+var_8], 8 - jmp short loc_7DF8 -; --------------------------------------------------------------------------- - -loc_7E6E: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_7E87: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_7EC1 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_7EC1: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_7EE5 - jb short loc_7EDB - cmp bx, [bp+var_1C] - jnb short loc_7EE5 - -loc_7EDB: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_7FAB -; --------------------------------------------------------------------------- - -loc_7EE5: - ; sub_7CED+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_7F31 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_7FB8 - add sp, 0Eh - jmp short loc_7F51 -; --------------------------------------------------------------------------- - -loc_7F31: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_7CED - add sp, 10h - -loc_7F51: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_7F6A - jmp loc_7EE5 -; --------------------------------------------------------------------------- - -loc_7F6A: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7C6C - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_7FB2 - -loc_7F92: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_7DC2 -; --------------------------------------------------------------------------- - -loc_7FAB: - add word ptr [bp+var_18], 6 - jmp loc_7E87 -; --------------------------------------------------------------------------- - -loc_7FB2: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7CED endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7FB8 proc far - ; sub_816B+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_8012 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_8012: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_80A2 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_808F -; --------------------------------------------------------------------------- - -loc_8070: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_808F: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_7CED - add sp, 10h - -loc_80A2: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8070 - pop di - pop si - mov sp, bp - pop bp - retf -sub_7FB8 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_80BA proc far - ; sub_816B+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_815F - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_815F - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8119 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_8122 -; --------------------------------------------------------------------------- - -loc_8119: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_8122: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_815F: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_80BA endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_816B proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_8181 - jmp loc_856E -; --------------------------------------------------------------------------- - -loc_8181: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_81DA - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_81DA: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_81F1 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_8570 -; --------------------------------------------------------------------------- - -loc_81F1: - cmp [bp+var_6], 0 - jg short loc_8223 - jnz short loc_81FF - cmp [bp+var_8], 0 - ja short loc_8223 - -loc_81FF: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_8211 - jmp loc_856E -; --------------------------------------------------------------------------- - -loc_8211: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_8388 -; --------------------------------------------------------------------------- - -loc_8223: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_822F: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8242 - sub word ptr [bp+var_C], 0Ah - jmp loc_8388 -; --------------------------------------------------------------------------- - -loc_8242: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_826A - jmp loc_8334 -; --------------------------------------------------------------------------- - -loc_826A: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_828E - jmp loc_8334 -; --------------------------------------------------------------------------- - -loc_828E: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_829B - jmp loc_8334 -; --------------------------------------------------------------------------- - -loc_829B: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_82A8 - jmp loc_8334 -; --------------------------------------------------------------------------- - -loc_82A8: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_82C1 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_82CF -; --------------------------------------------------------------------------- - -loc_82C1: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_82CF: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_82F7 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8300 -; --------------------------------------------------------------------------- - -loc_82F7: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8300: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8311 - add word ptr [bp+var_1C], 4 - -loc_8311: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_80BA - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8334: - ; sub_816B+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8359 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8359: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8377 - jnz short loc_8388 - cmp ax, [bp+var_8] - jnb short loc_8388 - -loc_8377: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_822F -; --------------------------------------------------------------------------- - -loc_8388: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_83B7 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_83C5 -; --------------------------------------------------------------------------- - -loc_83B7: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_83C5: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_83D1 - jmp loc_845B -; --------------------------------------------------------------------------- - -loc_83D1: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8403 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_840C -; --------------------------------------------------------------------------- - -loc_8403: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_840C: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_842A - add [bp+var_18], 4 - -loc_842A: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_845B - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_845B - test byte ptr [bp+var_16+2], 8 - jz short loc_845B - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_80BA - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_845B: - ; sub_816B+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_84A9 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8489 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7FB8 - add sp, 0Eh - jmp short loc_84A9 -; --------------------------------------------------------------------------- - -loc_8489: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_7CED - add sp, 10h - -loc_84A9: - ; sub_816B+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_84B7 - jmp loc_8555 -; --------------------------------------------------------------------------- - -loc_84B7: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_84C6 - sub word ptr [bp+driver], 4 - -loc_84C6: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8515 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8502 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8534 -; --------------------------------------------------------------------------- - -loc_8502: - test byte ptr [bp+var_16+2], 80h - jz short loc_8555 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8553 -; --------------------------------------------------------------------------- - -loc_8515: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8542 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8534: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6524 - add sp, 0Ah - jmp short loc_8555 -; --------------------------------------------------------------------------- - -loc_8542: - test byte ptr [bp+var_16+2], 80h - jz short loc_8555 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8553: - pop cx - pop cx - -loc_8555: - ; sub_816B+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_856E - jmp loc_8388 -; --------------------------------------------------------------------------- - -loc_856E: - xor ax, ax - -loc_8570: - pop di - pop si - mov sp, bp - pop bp - retn -sub_816B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_85B9 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 0FC7h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_85BE - -loc_85B9: - mov ax, 0FFFFh - jmp short loc_85C5 -; --------------------------------------------------------------------------- - -loc_85BE: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_85C5: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_8621 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_865F - -loc_8621: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8BFDh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 8BDFh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_865F: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_86AA - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 8BFDh - test dl, 1 - jz short loc_86AA - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_86AA: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5B20 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_870E - xor ax, ax - jmp short loc_8767 -; --------------------------------------------------------------------------- - -loc_870E: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8720 - mov ax, 1 - jmp short loc_8767 -; --------------------------------------------------------------------------- - -loc_8720: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8765 - mov ax, 1 - jmp short loc_8767 -; --------------------------------------------------------------------------- - -loc_8765: - xor ax, ax - -loc_8767: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_5AFB - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_87C9 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 250Eh - push ax ; src - push cs ; int - mov ax, 8BC9h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_87C9: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_880A proc near - ; sub_880A+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_8845 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_884F - -loc_8845: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_8856 - -loc_884F: - xor dx, dx - xor ax, ax - jmp loc_8A4A -; --------------------------------------------------------------------------- - -loc_8856: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_8868: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_886E: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_8889 - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8889: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_8896 - jmp loc_8A0B -; --------------------------------------------------------------------------- - -loc_8896: - cmp [bp+arg_1A], 0 - jz short loc_88B0 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_88B0 - mov ax, 1 - jmp short loc_88B2 -; --------------------------------------------------------------------------- - -loc_88B0: - xor ax, ax - -loc_88B2: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_88F9 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_88F9: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_897B - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_891D - jmp loc_8A0B -; --------------------------------------------------------------------------- - -loc_891D: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_880A - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_8964 - jmp loc_8A0B -; --------------------------------------------------------------------------- - -loc_8964: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_89D8 -; --------------------------------------------------------------------------- - -loc_897B: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_899C - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_8A0B - cmp ax, word ptr [bp+var_14] - jnz short loc_8A0B - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_8A4A -; --------------------------------------------------------------------------- - -loc_899C: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_89D8 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_880A - add sp, 20h - or ax, dx - jz short loc_8A0B - -loc_89D8: - ; sub_880A+198j - cmp [bp+var_E], 0 - jz short loc_89F6 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_89F6 - cmp ax, [bp+var_C] - jnz short loc_89F6 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_8A0B -; --------------------------------------------------------------------------- - -loc_89F6: - ; sub_880A+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_8A0B: - ; sub_880A+110j ... - add word ptr [bp+var_4], 8 - jmp loc_886E -; --------------------------------------------------------------------------- - -loc_8A12: - cmp [bp+var_6], 0 - jnz short loc_8A2B - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_8868 -; --------------------------------------------------------------------------- - -loc_8A2B: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_8A44 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_8A44: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_8A4A: - ; sub_880A+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_880A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8A7B - jmp loc_8B7F -; --------------------------------------------------------------------------- - -loc_8A7B: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_8AD1 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jz short loc_8ADA - -loc_8AD1: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_8BAF -; --------------------------------------------------------------------------- - -loc_8ADA: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_5B20 - add sp, 8 - or ax, ax - jnz short loc_8B33 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_880A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_8B77 - -loc_8B33: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_880A - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_8B7F - cmp [bp+var_16], 0 - jz short loc_8B7F - -loc_8B77: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_8BAF -; --------------------------------------------------------------------------- - -loc_8B7F: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_8BAB - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 250Fh - push ax ; src - push cs ; int - mov ax, 8BB5h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8BAB: - xor dx, dx - xor ax, ax - -loc_8BAF: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 1, 8Ch - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 1, 8Ch - dw seg seg000 - db 4 dup(0), 7Ah, 86h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 7Ah, 86h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -21297,8 +14612,7 @@ word_E7A8 dw 0 word_E7AA dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_E7C4 dw 1 word_E7C6 dw 0 @@ -22356,9 +15670,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_FCF6 dd ? -dword_FCFA dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends diff --git a/th04_main.asm b/th04_main.asm index 449bba8a..342ddc65 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -6230,6694 +6230,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D57 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_6D6B - mov dx, ds - mov ax, 2986h - jmp short loc_6D78 -; --------------------------------------------------------------------------- - -loc_6D6B: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_6D78: - pop di - pop si - pop bp - retf -sub_6D57 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D7C proc far - ; sub_6E19+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6D94 - cmp ax, word ptr [bp+arg_4] - jz short loc_6E10 - -loc_6D94: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_6E08 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_6E08 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_6E08 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6DEA: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6E0C - -loc_6E08: - xor ax, ax - jmp short loc_6E13 -; --------------------------------------------------------------------------- - -loc_6E0C: - or dx, dx - jnz short loc_6DEA - -loc_6E10: - mov ax, 1 - -loc_6E13: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6D7C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6E19 proc near - ; sub_6E19+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6E34: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6EC8 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_6EC1 - cmp [bp+arg_C], 0 - jz short loc_6E70 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6E70 - mov ax, 1 - jmp short loc_6E72 -; --------------------------------------------------------------------------- - -loc_6E70: - xor ax, ax - -loc_6E72: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jz short loc_6E95 - cmp [bp+var_6], 0 - jz short loc_6E95 - jmp loc_6F58 -; --------------------------------------------------------------------------- - -loc_6E95: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6EC1 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6E19 - add sp, 0Eh - or ax, ax - jz short loc_6EC1 - jmp loc_6F58 -; --------------------------------------------------------------------------- - -loc_6EC1: - add word ptr [bp+var_4], 8 - jmp loc_6E34 -; --------------------------------------------------------------------------- - -loc_6EC8: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6EDB: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6F64 - cmp [bp+arg_C], 0 - jz short loc_6F0D - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6F0D - mov ax, 1 - jmp short loc_6F0F -; --------------------------------------------------------------------------- - -loc_6F0D: - xor ax, ax - -loc_6F0F: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jz short loc_6F2F - cmp [bp+var_6], 0 - jnz short loc_6F58 - -loc_6F2F: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6F5D - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6E19 - add sp, 0Eh - or ax, ax - jz short loc_6F5D - -loc_6F58: - mov ax, 1 - jmp short loc_6F66 -; --------------------------------------------------------------------------- - -loc_6F5D: - ; sub_6E19+13Dj - add word ptr [bp+var_4], 8 - jmp loc_6EDB -; --------------------------------------------------------------------------- - -loc_6F64: - xor ax, ax - -loc_6F66: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6E19 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6F6C proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_6F77: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6F8A - cmp ax, word ptr [bp+arg_4] - jnz short loc_6F8A - jmp loc_709F -; --------------------------------------------------------------------------- - -loc_6F8A: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_701A - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6FBD - jmp loc_7060 -; --------------------------------------------------------------------------- - -loc_6FBD: - or cx, cx - jz short loc_6FC4 - jmp loc_70D8 -; --------------------------------------------------------------------------- - -loc_6FC4: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6FFA - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6FE8 - jmp loc_70D8 -; --------------------------------------------------------------------------- - -loc_6FE8: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_7060 - -loc_6FFA: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_700E - jmp loc_70D8 -; --------------------------------------------------------------------------- - -loc_700E: - test byte ptr [bp+var_2+1], 10h - jnz short loc_7017 - jmp loc_70D8 -; --------------------------------------------------------------------------- - -loc_7017: - jmp loc_709F -; --------------------------------------------------------------------------- - -loc_701A: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_7088 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_703F - cmp ax, es:[bx+0Ah] - jz short loc_7060 - -loc_703F: - or cx, cx - jz short loc_7046 - jmp loc_70D8 -; --------------------------------------------------------------------------- - -loc_7046: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_70D8 - -loc_7060: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_6F77 -; --------------------------------------------------------------------------- - -loc_7088: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jz short loc_70A4 - -loc_709F: - ; sub_6F6C:loc_7017j - mov ax, 1 - jmp short loc_70DA -; --------------------------------------------------------------------------- - -loc_70A4: - test byte ptr [bp+var_2], 2 - jz short loc_70D8 - test byte ptr [bp+var_4], 1 - jz short loc_70D8 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_70D8 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6E19 - add sp, 0Eh - jmp short loc_70DA -; --------------------------------------------------------------------------- - -loc_70D8: - xor ax, ax - -loc_70DA: - ; sub_6F6C+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_6F6C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_70E0 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7130 - cmp [bp+arg_0], 80h ; '€' - ja short loc_7112 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_7117 - -loc_7112: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_7117: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_7136 -; --------------------------------------------------------------------------- - -loc_7130: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_7136: - pop di - pop si - mov sp, bp - pop bp - retf -sub_70E0 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_7164 - cmp ax, [bp+6] - jnz short loc_7164 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_7171 -; --------------------------------------------------------------------------- - -loc_7164: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_7171: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7175 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6F6C - add sp, 0Eh - or ax, ax - jz short loc_719F - jmp loc_723B -; --------------------------------------------------------------------------- - -loc_719F: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_722F - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6F6C - add sp, 0Eh - or ax, ax - jnz short loc_723B - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_7272 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6F6C - add sp, 0Eh - or ax, ax - jnz short loc_723B - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_7272 - -loc_722F: - test byte ptr [bp+var_4], 10h - jz short loc_7272 - test [bp+arg_C], 1 - jz short loc_7240 - -loc_723B: - mov ax, 1 - jmp short loc_7274 -; --------------------------------------------------------------------------- - -loc_7240: - test byte ptr [bp+var_2], 10h - jz short loc_7272 - test byte ptr [bp+var_2+1], 20h - jz short loc_7252 - test byte ptr [bp+var_4+1], 20h - jz short loc_7272 - -loc_7252: - test byte ptr [bp+var_4], 40h - jz short loc_7272 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_726E - mov ax, 1 - jmp short loc_7270 -; --------------------------------------------------------------------------- - -loc_726E: - xor ax, ax - -loc_7270: - jmp short loc_7274 -; --------------------------------------------------------------------------- - -loc_7272: - xor ax, ax - -loc_7274: - ; sub_7175:loc_7270j - pop di - pop si - mov sp, bp - pop bp - retn -sub_7175 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_727A proc near - ; sub_854B+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_72A5 - or [bp+var_4], 2 - -loc_72A5: - test byte ptr [bp+arg_C], 2 - jz short loc_72B9 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_72B9 - or [bp+var_4], 20h - -loc_72B9: - test byte ptr [bp+arg_C], 20h - jz short loc_72C3 - or [bp+var_4], 8 - -loc_72C3: - test byte ptr [bp+arg_C], 80h - jz short loc_72CD - or [bp+var_4], 10h - -loc_72CD: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_72D6 - jmp loc_745B -; --------------------------------------------------------------------------- - -loc_72D6: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_72E1 - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_72E1: - add bx, bx - jmp cs:off_7598[bx] - -loc_72E8: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_72FA: - ; sub_727A+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_730C: - ; sub_727A+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7332 -; --------------------------------------------------------------------------- - -loc_7320: - ; sub_727A+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_7332: - add sp, 0Ah - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7338: - ; sub_727A+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7347: - ; sub_727A+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7356: - ; sub_727A+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_737C -; --------------------------------------------------------------------------- - -loc_736A: - ; sub_727A+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_737C: - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_737F: - ; sub_727A+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_738F: - ; sub_727A+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_7397: - push bx - pop bx - call [bp+arg_8] - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_739F: - ; sub_727A+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_73AD: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_73C3 -; --------------------------------------------------------------------------- - -loc_73B2: - ; sub_727A+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_73C0: - call [bp+arg_8] - -loc_73C3: - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_73C6: - ; sub_727A+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_73E0 -; --------------------------------------------------------------------------- - -loc_73D4: - ; sub_727A+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_73DD: - call [bp+arg_8] - -loc_73E0: - ; sub_727A+1FCj - pop cx - pop cx - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_73E5: - ; sub_727A+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_73FC: - ; sub_727A+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7413: - ; sub_727A+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_741C: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_742D -; --------------------------------------------------------------------------- - -loc_7421: - ; sub_727A+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_742A: - call [bp+arg_8] - -loc_742D: - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7430: - ; sub_727A+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7444: - ; sub_727A+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7458: - ; sub_727A+1EEj - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_745B: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7466 - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_7466: - add bx, bx - jmp cs:off_7568[bx] - -loc_746D: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_73E0 -; --------------------------------------------------------------------------- - -loc_7479: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_73DD -; --------------------------------------------------------------------------- - -loc_7482: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_74A2 -; --------------------------------------------------------------------------- - -loc_7493: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_74A2: - add sp, 8 - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_74A8: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_741C -; --------------------------------------------------------------------------- - -loc_74B1: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_742A -; --------------------------------------------------------------------------- - -loc_74BA: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7561 -; --------------------------------------------------------------------------- - -loc_74C8: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_7397 -; --------------------------------------------------------------------------- - -loc_74D1: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_73AD -; --------------------------------------------------------------------------- - -loc_74E0: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_73C0 -; --------------------------------------------------------------------------- - -loc_74EF: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_74FB: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_7507: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_7519: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_752B: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_7536: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_7541: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_7561 -; --------------------------------------------------------------------------- - -loc_7551: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_7561: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_727A endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7568 dw offset loc_746D - dw offset loc_7479 - dw offset loc_7482 - dw offset loc_7493 - dw offset loc_74A8 - dw offset loc_74B1 - dw offset loc_74D1 - dw offset loc_74E0 - dw offset loc_74BA - dw offset loc_74C8 - dw offset loc_74D1 - dw offset loc_74E0 - dw offset loc_7561 - dw offset loc_7561 - dw offset loc_7561 - dw offset loc_7561 - dw offset loc_74EF - dw offset loc_74FB - dw offset loc_7507 - dw offset loc_7519 - dw offset loc_752B - dw offset loc_7536 - dw offset loc_7541 - dw offset loc_7551 -off_7598 dw offset loc_72E8 - dw offset loc_72FA - dw offset loc_730C - dw offset loc_7320 - dw offset loc_7338 - dw offset loc_7347 - dw offset loc_7356 - dw offset loc_736A - dw offset loc_737F - dw offset loc_738F - dw offset loc_739F - dw offset loc_73B2 - dw offset loc_7458 - dw offset loc_7458 - dw offset loc_7458 - dw offset loc_7458 - dw offset loc_73C6 - dw offset loc_73D4 - dw offset loc_73E5 - dw offset loc_73FC - dw offset loc_7413 - dw offset loc_7421 - dw offset loc_7430 - dw offset loc_7444 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_75C8 proc near - ; sub_8257+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_75DB - mov ax, 2 - jmp short loc_75DD -; --------------------------------------------------------------------------- - -loc_75DB: - xor ax, ax - -loc_75DD: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7603 - or [bp+var_6], 2 - -loc_7603: - test byte ptr [bp+arg_8], 2 - jz short loc_7617 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_7617 - or [bp+var_6], 20h - -loc_7617: - test byte ptr [bp+arg_8], 20h - jz short loc_7621 - or [bp+var_6], 8 - -loc_7621: - test byte ptr [bp+arg_8], 80h - jz short loc_762B - or [bp+var_6], 10h - -loc_762B: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_7636 - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_7636: - add bx, bx - jmp cs:off_7750[bx] - -loc_763D: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_764B: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_7659: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_766B: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_767D: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_76E3 -; --------------------------------------------------------------------------- - -loc_7688: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_76E0 -; --------------------------------------------------------------------------- - -loc_7690: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_76AA -; --------------------------------------------------------------------------- - -loc_769E: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_76AA: - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_76AD: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_76BB: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_7749 -; --------------------------------------------------------------------------- - -loc_76C9: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_76E3 -; --------------------------------------------------------------------------- - -loc_76D7: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_76E0: - call [bp+arg_4] - -loc_76E3: - ; sub_75C8+10Dj - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_76E5: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_76F1: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_76FD: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_770B: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_7719: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_7724: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_772F: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_7749 -; --------------------------------------------------------------------------- - -loc_773C: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_7749: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_75C8 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7750 dw offset loc_763D - dw offset loc_764B - dw offset loc_7659 - dw offset loc_766B - dw offset loc_767D - dw offset loc_7688 - dw offset loc_7690 - dw offset loc_769E - dw offset loc_76AD - dw offset loc_76BB - dw offset loc_76C9 - dw offset loc_76D7 - dw offset loc_7749 - dw offset loc_7749 - dw offset loc_7749 - dw offset loc_7749 - dw offset loc_76E5 - dw offset loc_76F1 - dw offset loc_76FD - dw offset loc_770B - dw offset loc_7719 - dw offset loc_7724 - dw offset loc_772F - dw offset loc_773C - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7780 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_77AB - or [bp+var_4], 2 - -loc_77AB: - test byte ptr [bp+arg_8], 2 - jz short loc_77B5 - or [bp+var_4], 4 - -loc_77B5: - test byte ptr [bp+arg_8], 20h - jz short loc_77BF - or [bp+var_4], 8 - -loc_77BF: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_7832 - add bx, bx - jmp cs:off_7839[bx] - -loc_77CE: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_77D7: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_77E0: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_77F4 -; --------------------------------------------------------------------------- - -loc_77EB: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_77F4: - pop cx - pop cx - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_77F8: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7806 -; --------------------------------------------------------------------------- - -loc_7800: - push [bp+arg_0] - call [bp+arg_4] - -loc_7806: - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_7808: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_7812: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_7832 -; --------------------------------------------------------------------------- - -loc_781C: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7830 -; --------------------------------------------------------------------------- - -loc_7827: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7830: - jmp short $+2 - -loc_7832: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7780 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7839 dw offset loc_77CE - dw offset loc_77D7 - dw offset loc_77E0 - dw offset loc_77EB - dw offset loc_77F8 - dw offset loc_7800 - dw offset loc_781C - dw offset loc_7827 - dw offset loc_7808 - dw offset loc_7812 - dw offset loc_781C - dw offset loc_7827 - db 4 dup(0), 0Fh, 7Bh - dw seg seg000 - db 14h dup(0), 68h, 7Bh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 51h, 78h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 69h, 78h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_789F(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_789F proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 7881h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_792B -; --------------------------------------------------------------------------- - -loc_7908: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_7928 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_7928: - inc word ptr [bp+var_34] - -loc_792B: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_7908 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_7988 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_798A -; --------------------------------------------------------------------------- - -loc_7988: - xor ax, ax - -loc_798A: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_79A4 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_79A4: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_70E0 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 713Ch - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_7B2E - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_727A - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_7B19 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7B19: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7B2E: - cmp [bp+arg_1E], 0 - jnz short loc_7B72 - test byte ptr [bp+var_2C], 2 - jz short loc_7B72 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_75C8 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7B72 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7B72: - ; sub_789F+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_789F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_789F - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_7C62 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_7C62: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7CAE - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_7CB7 -; --------------------------------------------------------------------------- - -loc_7CAE: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_7CB7: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_789F - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7CD1 proc far - push si - push di - pop di - pop si - retf -sub_7CD1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CD6 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_7CF0 - inc [bp+var_4] - -loc_7CF0: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_7CD1 - jmp short loc_7D3E -; --------------------------------------------------------------------------- - -loc_7CFD: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_7D28 - mov ax, dx - jmp short loc_7D5C -; --------------------------------------------------------------------------- - -loc_7D28: - cmp [bp+var_4], 0 - jz short loc_7D35 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_7D35: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_7D3E: - cmp [bp+var_2], 0FFFFh - jz short loc_7D4C - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_7CFD - -loc_7D4C: - cmp [bp+var_4], 0 - jz short loc_7D59 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_7D59: - mov ax, 1 - -loc_7D5C: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7CD6 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_7D8D - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_7D8D: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_7CD6 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7DA9 proc far - push si - push di - pop di - pop si - retf -sub_7DA9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 8220 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_7DA9 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_7DD7 - jmp loc_7E8D -; --------------------------------------------------------------------------- - -loc_7DD7: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_7ED6 -; --------------------------------------------------------------------------- - -loc_7E8D: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_7ED6: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_7F07 - cmp [bp+arg_0], 0FACEh - jnz short loc_7F07 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_7F15 -; --------------------------------------------------------------------------- - -loc_7F07: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_7F15: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_7FE6 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_7FE6: - cmp [bp+arg_A], 0 - jb short loc_7FFE - ja short loc_7FF4 - cmp [bp+arg_8], 0Fh - jbe short loc_7FFE - -loc_7FF4: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7FFE: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_8034 -; --------------------------------------------------------------------------- - -loc_800B: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_8034: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_800B - jnz short loc_8045 - cmp ax, [bp+arg_8] - jb short loc_800B - -loc_8045: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_7CD6 - add sp, 8 - or ax, ax - jnz short loc_8090 - test byte ptr [bp+arg_4], 1 - jz short loc_80B0 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_8045 -; --------------------------------------------------------------------------- - -loc_8090: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_7CD6 - add sp, 8 - or ax, ax - jz short loc_80B0 - jmp loc_821B -; --------------------------------------------------------------------------- - -loc_80B0: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_80BA - jmp loc_819A -; --------------------------------------------------------------------------- - -loc_80BA: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - assume gs:nothing - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_8220 -; --------------------------------------------------------------------------- - -loc_819A: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_8220 -; --------------------------------------------------------------------------- - -loc_821B: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_8220: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 8Fh, 82h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 2Dh, 82h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8257 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8245h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_75C8 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_8299 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8299: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_8257 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_82A7 proc near - ; sub_87F1+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_8322 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_831A - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_8257 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_831A: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_8322: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_8379 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_8371 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8371 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_8257 - add sp, 0Ah - -loc_8371: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_8379: - pop di - pop si - mov sp, bp - pop bp - retn -sub_82A7 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_789F+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_82A7 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_83FC proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_8404: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_8421 - xor ax, ax - jmp loc_84C2 -; --------------------------------------------------------------------------- - -loc_8421: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_844D - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_844D: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_84A6 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_84BB - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_84BB - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_83FC - add sp, 0Ch - or ax, ax - jz short loc_84BB - -loc_84A6: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_84C2 -; --------------------------------------------------------------------------- - -loc_84BB: - add word ptr [bp+arg_0], 8 - jmp loc_8404 -; --------------------------------------------------------------------------- - -loc_84C2: - pop di - pop si - mov sp, bp - pop bp - retn -sub_83FC endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_84C8 proc far - ; sub_854B+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_8539 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_83FC - add sp, 0Ch - or ax, ax - jnz short loc_8539 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_83FC - add sp, 0Ch - or ax, ax - jz short loc_8541 - -loc_8539: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_8545 -; --------------------------------------------------------------------------- - -loc_8541: - xor dx, dx - xor ax, ax - -loc_8545: - pop di - pop si - mov sp, bp - pop bp - retf -sub_84C8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_854B proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_857A - jmp loc_87EB -; --------------------------------------------------------------------------- - -loc_857A: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_8587 - jmp loc_87EB -; --------------------------------------------------------------------------- - -loc_8587: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_85FB - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_85FB: - test cl, 10h - jz short loc_8623 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_8623 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_874E -; --------------------------------------------------------------------------- - -loc_8623: - test dl, 1 - jnz short loc_862B - jmp loc_86CF -; --------------------------------------------------------------------------- - -loc_862B: - test cl, 30h - jnz short loc_8633 - jmp loc_86CF -; --------------------------------------------------------------------------- - -loc_8633: - test cl, 20h - jz short loc_863A - jmp short loc_865D -; --------------------------------------------------------------------------- - -loc_863A: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_8664 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_865D: - mov [bp+var_14], 1 - jmp short $+2 - -loc_8664: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_86C5 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_84C8 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_86C0 - cmp ax, [bp+var_18] - jz short loc_86C5 - -loc_86C0: - mov [bp+var_14], 1 - -loc_86C5: - ; sub_854B+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_8799 -; --------------------------------------------------------------------------- - -loc_86CF: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_8755 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_871E - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_84C8 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_871E: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_879C - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_727A - add sp, 0Eh - -loc_874E: - ; sub_854B+227j - mov [bp+var_14], 1 - jmp short loc_87B5 -; --------------------------------------------------------------------------- - -loc_8755: - test cl, 20h - jz short loc_8774 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_874E -; --------------------------------------------------------------------------- - -loc_8774: - test cl, 10h - jz short loc_879C - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_879C - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_8799: - push ax - jmp short loc_87A5 -; --------------------------------------------------------------------------- - -loc_879C: - ; sub_854B+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_87A5: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_87B5: - cmp [bp+var_14], 0 - jnz short loc_87EB - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_87E3 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_8257 - add sp, 0Ah - -loc_87E3: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_87EB: - pop di - pop si - mov sp, bp - pop bp - retn -sub_854B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_87F1 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_8996 -; --------------------------------------------------------------------------- - -loc_8849: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_8884 - jmp loc_8993 -; --------------------------------------------------------------------------- - -loc_8884: - add bx, bx - jmp cs:off_89B0[bx] - -loc_888B: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_2D0E8+2, dx - mov word ptr dword_2D0E8, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_2D0E8 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_8993 -; --------------------------------------------------------------------------- - -loc_88C6: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_88F5 -; --------------------------------------------------------------------------- - -loc_88D5: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_88EF - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_88EF - jmp short loc_890F -; --------------------------------------------------------------------------- - -loc_88EF: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_88F5: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_88D5 - -loc_890F: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_82A7 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_8993 -; --------------------------------------------------------------------------- - -loc_8948: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_93C7 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_8993: - mov ax, [bp+var_8] - -loc_8996: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_89AA - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_89AA - jmp loc_8849 -; --------------------------------------------------------------------------- - -loc_89AA: - ; sub_87F1+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_87F1 endp - -; --------------------------------------------------------------------------- -off_89B0 dw offset loc_888B - dw offset loc_8993 - dw offset loc_8993 - dw offset loc_8993 - dw offset loc_88C6 - dw offset loc_8948 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_87F1 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_87F1 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8A06 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_8A74 -; --------------------------------------------------------------------------- - -loc_8A1F: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_8A68 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_7175 - add sp, 10h - or ax, ax - jz short loc_8A70 - -loc_8A68: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_8A84 -; --------------------------------------------------------------------------- - -loc_8A70: - add word ptr [bp+var_4], 10h - -loc_8A74: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8A1F - xor dx, dx - xor ax, ax - -loc_8A84: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8A06 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8B1E - jmp loc_8BC6 -; --------------------------------------------------------------------------- - -loc_8B1E: - xor ax, ax - push ax - push [bp+var_4] - call sub_87F1 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_8B37 - jmp loc_8DF9 -; --------------------------------------------------------------------------- - -loc_8B37: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8B41 - jmp loc_8DF9 -; --------------------------------------------------------------------------- - -loc_8B41: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_8B5C - jmp loc_8DF9 -; --------------------------------------------------------------------------- - -loc_8B5C: - jmp short loc_8B9A -; --------------------------------------------------------------------------- - -loc_8B5E: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_7175 - add sp, 10h - or ax, ax - jz short loc_8B96 - jmp loc_8DF9 -; --------------------------------------------------------------------------- - -loc_8B96: - add word ptr [bp+var_20], 4 - -loc_8B9A: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8B5E - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_8DF9 -; --------------------------------------------------------------------------- - -loc_8BC6: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_8DED -; --------------------------------------------------------------------------- - -loc_8BD0: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8C01 - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8C01: - add bx, bx - jmp cs:off_8E02[bx] - -loc_8C08: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_8C16 - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8C16: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8C20 - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8C20: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_8A06 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_8C5A - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8C5A: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_8C8E: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_87F1 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_8CE0 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_854B - add sp, 10h - -loc_8CE0: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8CF9: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8D0E - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8D0E - jmp loc_8DEA -; --------------------------------------------------------------------------- - -loc_8D0E: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_2D0EC+2, dx - mov word ptr dword_2D0EC, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_2D0EC - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_8DA5 -; --------------------------------------------------------------------------- - -loc_8D70: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8D84 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8D84 - jmp short loc_8DEA -; --------------------------------------------------------------------------- - -loc_8D84: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_8DA5: - cmp [bp+var_38], 0 - jge short loc_8DC3 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_8DBF - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_8DBF: - xor ax, ax - jmp short loc_8DFC -; --------------------------------------------------------------------------- - -loc_8DC3: - cmp [bp+var_38], 0 - jnz short loc_8DCB - jmp short loc_8DEA -; --------------------------------------------------------------------------- - -loc_8DCB: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_8C8E -; --------------------------------------------------------------------------- - -loc_8DEA: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_8DED: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_8DF9 - jmp loc_8BD0 -; --------------------------------------------------------------------------- - -loc_8DF9: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_8DFC: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_8E02 dw offset loc_8DEA - dw offset loc_8CF9 - dw offset loc_8D70 - dw offset loc_8C08 - dw offset loc_8DEA - dw offset loc_8DEA - db 4 dup(0), 0A1h, 8Eh - dw seg seg000 - db 14h dup(0), 0B1h, 8Eh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 26h, 8Eh - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 0Eh, 8Eh - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8E5C proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8E3Eh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_75C8 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_8EAA -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8EAA: - mov [bp+var_12], 0 - jmp short loc_8EBA -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8EBA: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_8E5C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8EC8 proc far - ; sub_8F49+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_8F37 -; --------------------------------------------------------------------------- - -loc_8ED5: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_8EFD - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8EFD: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8F37 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_8F49 - add sp, 10h - xor cx, cx - -loc_8F37: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_8ED5 - pop di - pop si - mov sp, bp - pop bp - retf -sub_8EC8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8F49 proc far - ; sub_8F49+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_8F60 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_8F67 -; --------------------------------------------------------------------------- - -loc_8F60: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_8F67: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8F89 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_8FA2 - jnz short loc_8F89 - cmp ax, [bp+var_1C] - jb short loc_8FA2 - -loc_8F89: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8E5C - add sp, 0Ah - jmp loc_920E -; --------------------------------------------------------------------------- - -loc_8FA2: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_903B - -loc_8FCD: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_903B - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_9035 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_902E - jnz short loc_9004 - cmp bx, [bp+var_1C] - jb short loc_902E - -loc_9004: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_901E: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8EC8 - add sp, 12h - jmp loc_920E -; --------------------------------------------------------------------------- - -loc_902E: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_9035: - add word ptr [bp+var_10], 8 - jmp short loc_8FCD -; --------------------------------------------------------------------------- - -loc_903B: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_9054: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_90CA - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_90C4 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_90BD - jnz short loc_908B - cmp bx, [bp+var_1C] - jb short loc_90BD - -loc_908B: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8EC8 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_90BA - jmp loc_920E -; --------------------------------------------------------------------------- - -loc_90BA: - jmp loc_91EE -; --------------------------------------------------------------------------- - -loc_90BD: - ; sub_8F49+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_90C4: - add word ptr [bp+var_8], 8 - jmp short loc_9054 -; --------------------------------------------------------------------------- - -loc_90CA: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_90E3: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_911D - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_911D: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_9141 - jb short loc_9137 - cmp bx, [bp+var_1C] - jnb short loc_9141 - -loc_9137: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_9207 -; --------------------------------------------------------------------------- - -loc_9141: - ; sub_8F49+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_918D - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_9214 - add sp, 0Eh - jmp short loc_91AD -; --------------------------------------------------------------------------- - -loc_918D: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_8F49 - add sp, 10h - -loc_91AD: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_91C6 - jmp loc_9141 -; --------------------------------------------------------------------------- - -loc_91C6: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8EC8 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_920E - -loc_91EE: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_901E -; --------------------------------------------------------------------------- - -loc_9207: - add word ptr [bp+var_18], 6 - jmp loc_90E3 -; --------------------------------------------------------------------------- - -loc_920E: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8F49 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9214 proc far - ; sub_93C7+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_926E - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_926E: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_92FE - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_92EB -; --------------------------------------------------------------------------- - -loc_92CC: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_92EB: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8F49 - add sp, 10h - -loc_92FE: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_92CC - pop di - pop si - mov sp, bp - pop bp - retf -sub_9214 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9316 proc far - ; sub_93C7+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_93BB - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_93BB - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_9375 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_937E -; --------------------------------------------------------------------------- - -loc_9375: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_937E: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_93BB: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_9316 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_93C7 proc near - -font = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_93DD - jmp loc_97CA -; --------------------------------------------------------------------------- - -loc_93DD: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_9436 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_9436: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_944D - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_97CC -; --------------------------------------------------------------------------- - -loc_944D: - cmp [bp+var_6], 0 - jg short loc_947F - jnz short loc_945B - cmp [bp+var_8], 0 - ja short loc_947F - -loc_945B: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_946D - jmp loc_97CA -; --------------------------------------------------------------------------- - -loc_946D: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_95E4 -; --------------------------------------------------------------------------- - -loc_947F: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_948B: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_949E - sub word ptr [bp+var_C], 0Ah - jmp loc_95E4 -; --------------------------------------------------------------------------- - -loc_949E: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_94C6 - jmp loc_9590 -; --------------------------------------------------------------------------- - -loc_94C6: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_94EA - jmp loc_9590 -; --------------------------------------------------------------------------- - -loc_94EA: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_94F7 - jmp loc_9590 -; --------------------------------------------------------------------------- - -loc_94F7: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_9504 - jmp loc_9590 -; --------------------------------------------------------------------------- - -loc_9504: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_951D - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_952B -; --------------------------------------------------------------------------- - -loc_951D: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_952B: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+font+2], dx - mov word ptr [bp+font], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_9553 - les bx, [bp+font] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_955C -; --------------------------------------------------------------------------- - -loc_9553: - les bx, [bp+font] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_955C: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_956D - add word ptr [bp+var_1C], 4 - -loc_956D: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_9316 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9590: - ; sub_93C7+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_95B5 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_95B5: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_95D3 - jnz short loc_95E4 - cmp ax, [bp+var_8] - jnb short loc_95E4 - -loc_95D3: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_948B -; --------------------------------------------------------------------------- - -loc_95E4: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_9613 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_9621 -; --------------------------------------------------------------------------- - -loc_9613: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_9621: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_962D - jmp loc_96B7 -; --------------------------------------------------------------------------- - -loc_962D: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_965F - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_9668 -; --------------------------------------------------------------------------- - -loc_965F: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_9668: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+font+2], dx - mov word ptr [bp+font], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_9686 - add [bp+var_18], 4 - -loc_9686: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_96B7 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_96B7 - test byte ptr [bp+var_16+2], 8 - jz short loc_96B7 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9316 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_96B7: - ; sub_93C7+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_9705 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_96E5 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9214 - add sp, 0Eh - jmp short loc_9705 -; --------------------------------------------------------------------------- - -loc_96E5: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8F49 - add sp, 10h - -loc_9705: - ; sub_93C7+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_9713 - jmp loc_97B1 -; --------------------------------------------------------------------------- - -loc_9713: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_9722 - sub word ptr [bp+font], 4 - -loc_9722: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9771 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_975E - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_9790 -; --------------------------------------------------------------------------- - -loc_975E: - test byte ptr [bp+var_16+2], 80h - jz short loc_97B1 - push word ptr [bp+font+2] - push word ptr [bp+font] ; font - nopcall @$bdla$qnv - jmp short loc_97AF -; --------------------------------------------------------------------------- - -loc_9771: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_979E - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_9790: - push word ptr [bp+font+2] - push word ptr [bp+font] - call sub_7780 - add sp, 0Ah - jmp short loc_97B1 -; --------------------------------------------------------------------------- - -loc_979E: - test byte ptr [bp+var_16+2], 80h - jz short loc_97B1 - push word ptr [bp+font+2] - push word ptr [bp+font] - nopcall @$bdele$qnv - -loc_97AF: - pop cx - pop cx - -loc_97B1: - ; sub_93C7+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_97CA - jmp loc_95E4 -; --------------------------------------------------------------------------- - -loc_97CA: - xor ax, ax - -loc_97CC: - pop di - pop si - mov sp, bp - pop bp - retn -sub_93C7 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_9815 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 298Fh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_981A - -loc_9815: - mov ax, 0FFFFh - jmp short loc_9821 -; --------------------------------------------------------------------------- - -loc_981A: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9821: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_987D - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_98BB - -loc_987D: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 9E59h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 9E3Bh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_98BB: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo___typeinfo(int, int, int, __int32, int) -@typeinfo@0$bdtr$qv proc far - -arg_0 = word ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, [bp+arg_0] - or ax, [bp+arg_0+2] - jz short loc_9906 - les bx, dword ptr [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 9E59h - test dl, 1 - jz short loc_9906 - push [bp+arg_0+2] - push [bp+arg_0] - nopcall @$bdele$qnv - pop cx - pop cx - -loc_9906: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_6D7C - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_996A - xor ax, ax - jmp short loc_99C3 -; --------------------------------------------------------------------------- - -loc_996A: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_997C - mov ax, 1 - jmp short loc_99C3 -; --------------------------------------------------------------------------- - -loc_997C: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_99C1 - mov ax, 1 - jmp short loc_99C3 -; --------------------------------------------------------------------------- - -loc_99C1: - xor ax, ax - -loc_99C3: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_6D57 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_9A25 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0BDB0h - push ax ; src - push cs ; int - mov ax, 9E25h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9A25: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9A66 proc near - ; sub_9A66+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_9AA1 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_9AAB - -loc_9AA1: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_9AB2 - -loc_9AAB: - xor dx, dx - xor ax, ax - jmp loc_9CA6 -; --------------------------------------------------------------------------- - -loc_9AB2: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_9AC4: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9ACA: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_9AE5 - jmp loc_9C6E -; --------------------------------------------------------------------------- - -loc_9AE5: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_9AF2 - jmp loc_9C67 -; --------------------------------------------------------------------------- - -loc_9AF2: - cmp [bp+arg_1A], 0 - jz short loc_9B0C - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9B0C - mov ax, 1 - jmp short loc_9B0E -; --------------------------------------------------------------------------- - -loc_9B0C: - xor ax, ax - -loc_9B0E: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_9B55 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_9B55: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_9BD7 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_9B79 - jmp loc_9C67 -; --------------------------------------------------------------------------- - -loc_9B79: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_9A66 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_9BC0 - jmp loc_9C67 -; --------------------------------------------------------------------------- - -loc_9BC0: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_9C34 -; --------------------------------------------------------------------------- - -loc_9BD7: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9BF8 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_9C67 - cmp ax, word ptr [bp+var_14] - jnz short loc_9C67 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_9CA6 -; --------------------------------------------------------------------------- - -loc_9BF8: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_9C34 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_9A66 - add sp, 20h - or ax, dx - jz short loc_9C67 - -loc_9C34: - ; sub_9A66+198j - cmp [bp+var_E], 0 - jz short loc_9C52 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_9C52 - cmp ax, [bp+var_C] - jnz short loc_9C52 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_9C67 -; --------------------------------------------------------------------------- - -loc_9C52: - ; sub_9A66+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_9C67: - ; sub_9A66+110j ... - add word ptr [bp+var_4], 8 - jmp loc_9ACA -; --------------------------------------------------------------------------- - -loc_9C6E: - cmp [bp+var_6], 0 - jnz short loc_9C87 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_9AC4 -; --------------------------------------------------------------------------- - -loc_9C87: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_9CA0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_9CA0: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_9CA6: - ; sub_9A66+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_9A66 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_9CD7 - jmp loc_9DDB -; --------------------------------------------------------------------------- - -loc_9CD7: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_9D2D - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jz short loc_9D36 - -loc_9D2D: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_9E0B -; --------------------------------------------------------------------------- - -loc_9D36: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_6D7C - add sp, 8 - or ax, ax - jnz short loc_9D8F - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_9A66 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_9DD3 - -loc_9D8F: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_9A66 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_9DDB - cmp [bp+var_16], 0 - jz short loc_9DDB - -loc_9DD3: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_9E0B -; --------------------------------------------------------------------------- - -loc_9DDB: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_9E07 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0BDB1h - push ax ; src - push cs ; int - mov ax, 9E11h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9E07: - xor dx, dx - xor ax, ax - -loc_9E0B: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 5Dh, 9Eh - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 5Dh, 9Eh - dw seg seg000 - db 4 dup(0), 0D6h, 98h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 0D6h, 98h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -37518,8 +30831,7 @@ word_23CC0 dw 0 word_23CC2 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_23CDC dw 1 word_23CDE dw 0 @@ -47543,9 +40855,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_2D0E8 dd ? -dword_2D0EC dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? diff --git a/th04_maine.asm b/th04_maine.asm index d8a56eb8..000b88bb 100644 --- a/th04_maine.asm +++ b/th04_maine.asm @@ -4526,6647 +4526,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_62BF proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_62D3 - mov dx, ds - mov ax, 0DD6h - jmp short loc_62E0 -; --------------------------------------------------------------------------- - -loc_62D3: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_62E0: - pop di - pop si - pop bp - retf -sub_62BF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_62E4 proc far - ; sub_6381+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_62FC - cmp ax, word ptr [bp+arg_4] - jz short loc_6378 - -loc_62FC: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_6370 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_6370 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_6370 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6352: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6374 - -loc_6370: - xor ax, ax - jmp short loc_637B -; --------------------------------------------------------------------------- - -loc_6374: - or dx, dx - jnz short loc_6352 - -loc_6378: - mov ax, 1 - -loc_637B: - pop di - pop si - mov sp, bp - pop bp - retf -sub_62E4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6381 proc near - ; sub_6381+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_639C: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6430 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_6429 - cmp [bp+arg_C], 0 - jz short loc_63D8 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_63D8 - mov ax, 1 - jmp short loc_63DA -; --------------------------------------------------------------------------- - -loc_63D8: - xor ax, ax - -loc_63DA: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jz short loc_63FD - cmp [bp+var_6], 0 - jz short loc_63FD - jmp loc_64C0 -; --------------------------------------------------------------------------- - -loc_63FD: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6429 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6381 - add sp, 0Eh - or ax, ax - jz short loc_6429 - jmp loc_64C0 -; --------------------------------------------------------------------------- - -loc_6429: - add word ptr [bp+var_4], 8 - jmp loc_639C -; --------------------------------------------------------------------------- - -loc_6430: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6443: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_64CC - cmp [bp+arg_C], 0 - jz short loc_6475 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6475 - mov ax, 1 - jmp short loc_6477 -; --------------------------------------------------------------------------- - -loc_6475: - xor ax, ax - -loc_6477: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jz short loc_6497 - cmp [bp+var_6], 0 - jnz short loc_64C0 - -loc_6497: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_64C5 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6381 - add sp, 0Eh - or ax, ax - jz short loc_64C5 - -loc_64C0: - mov ax, 1 - jmp short loc_64CE -; --------------------------------------------------------------------------- - -loc_64C5: - ; sub_6381+13Dj - add word ptr [bp+var_4], 8 - jmp loc_6443 -; --------------------------------------------------------------------------- - -loc_64CC: - xor ax, ax - -loc_64CE: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6381 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_64D4 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_64DF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_64F2 - cmp ax, word ptr [bp+arg_4] - jnz short loc_64F2 - jmp loc_6607 -; --------------------------------------------------------------------------- - -loc_64F2: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_6582 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6525 - jmp loc_65C8 -; --------------------------------------------------------------------------- - -loc_6525: - or cx, cx - jz short loc_652C - jmp loc_6640 -; --------------------------------------------------------------------------- - -loc_652C: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6562 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6550 - jmp loc_6640 -; --------------------------------------------------------------------------- - -loc_6550: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_65C8 - -loc_6562: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6576 - jmp loc_6640 -; --------------------------------------------------------------------------- - -loc_6576: - test byte ptr [bp+var_2+1], 10h - jnz short loc_657F - jmp loc_6640 -; --------------------------------------------------------------------------- - -loc_657F: - jmp loc_6607 -; --------------------------------------------------------------------------- - -loc_6582: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_65F0 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_65A7 - cmp ax, es:[bx+0Ah] - jz short loc_65C8 - -loc_65A7: - or cx, cx - jz short loc_65AE - jmp loc_6640 -; --------------------------------------------------------------------------- - -loc_65AE: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6640 - -loc_65C8: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_64DF -; --------------------------------------------------------------------------- - -loc_65F0: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jz short loc_660C - -loc_6607: - ; sub_64D4:loc_657Fj - mov ax, 1 - jmp short loc_6642 -; --------------------------------------------------------------------------- - -loc_660C: - test byte ptr [bp+var_2], 2 - jz short loc_6640 - test byte ptr [bp+var_4], 1 - jz short loc_6640 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6640 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6381 - add sp, 0Eh - jmp short loc_6642 -; --------------------------------------------------------------------------- - -loc_6640: - xor ax, ax - -loc_6642: - ; sub_64D4+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_64D4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6648 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_6698 - cmp [bp+arg_0], 80h ; '€' - ja short loc_667A - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_667F - -loc_667A: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_667F: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_669E -; --------------------------------------------------------------------------- - -loc_6698: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_669E: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6648 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_66CC - cmp ax, [bp+6] - jnz short loc_66CC - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_66D9 -; --------------------------------------------------------------------------- - -loc_66CC: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_66D9: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_66DD proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_64D4 - add sp, 0Eh - or ax, ax - jz short loc_6707 - jmp loc_67A3 -; --------------------------------------------------------------------------- - -loc_6707: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_6797 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_64D4 - add sp, 0Eh - or ax, ax - jnz short loc_67A3 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_67DA - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_64D4 - add sp, 0Eh - or ax, ax - jnz short loc_67A3 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_67DA - -loc_6797: - test byte ptr [bp+var_4], 10h - jz short loc_67DA - test [bp+arg_C], 1 - jz short loc_67A8 - -loc_67A3: - mov ax, 1 - jmp short loc_67DC -; --------------------------------------------------------------------------- - -loc_67A8: - test byte ptr [bp+var_2], 10h - jz short loc_67DA - test byte ptr [bp+var_2+1], 20h - jz short loc_67BA - test byte ptr [bp+var_4+1], 20h - jz short loc_67DA - -loc_67BA: - test byte ptr [bp+var_4], 40h - jz short loc_67DA - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_67D6 - mov ax, 1 - jmp short loc_67D8 -; --------------------------------------------------------------------------- - -loc_67D6: - xor ax, ax - -loc_67D8: - jmp short loc_67DC -; --------------------------------------------------------------------------- - -loc_67DA: - xor ax, ax - -loc_67DC: - ; sub_66DD:loc_67D8j - pop di - pop si - mov sp, bp - pop bp - retn -sub_66DD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_67E2 proc near - ; sub_7AB3+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_680D - or [bp+var_4], 2 - -loc_680D: - test byte ptr [bp+arg_C], 2 - jz short loc_6821 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6821 - or [bp+var_4], 20h - -loc_6821: - test byte ptr [bp+arg_C], 20h - jz short loc_682B - or [bp+var_4], 8 - -loc_682B: - test byte ptr [bp+arg_C], 80h - jz short loc_6835 - or [bp+var_4], 10h - -loc_6835: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_683E - jmp loc_69C3 -; --------------------------------------------------------------------------- - -loc_683E: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6849 - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6849: - add bx, bx - jmp cs:off_6B00[bx] - -loc_6850: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6862: - ; sub_67E2+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6874: - ; sub_67E2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_689A -; --------------------------------------------------------------------------- - -loc_6888: - ; sub_67E2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_689A: - add sp, 0Ah - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_68A0: - ; sub_67E2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_68AF: - ; sub_67E2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_68BE: - ; sub_67E2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_68E4 -; --------------------------------------------------------------------------- - -loc_68D2: - ; sub_67E2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_68E4: - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_68E7: - ; sub_67E2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_68F7: - ; sub_67E2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_68FF: - push bx - pop bx - call [bp+arg_8] - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6907: - ; sub_67E2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6915: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_692B -; --------------------------------------------------------------------------- - -loc_691A: - ; sub_67E2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6928: - call [bp+arg_8] - -loc_692B: - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_692E: - ; sub_67E2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6948 -; --------------------------------------------------------------------------- - -loc_693C: - ; sub_67E2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_6945: - call [bp+arg_8] - -loc_6948: - ; sub_67E2+1FCj - pop cx - pop cx - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_694D: - ; sub_67E2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6964: - ; sub_67E2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_697B: - ; sub_67E2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6984: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6995 -; --------------------------------------------------------------------------- - -loc_6989: - ; sub_67E2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6992: - call [bp+arg_8] - -loc_6995: - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6998: - ; sub_67E2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_69AC: - ; sub_67E2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_69C0: - ; sub_67E2+1EEj - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_69C3: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_69CE - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_69CE: - add bx, bx - jmp cs:off_6AD0[bx] - -loc_69D5: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6948 -; --------------------------------------------------------------------------- - -loc_69E1: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6945 -; --------------------------------------------------------------------------- - -loc_69EA: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6A0A -; --------------------------------------------------------------------------- - -loc_69FB: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6A0A: - add sp, 8 - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A10: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6984 -; --------------------------------------------------------------------------- - -loc_6A19: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6992 -; --------------------------------------------------------------------------- - -loc_6A22: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A30: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_68FF -; --------------------------------------------------------------------------- - -loc_6A39: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6915 -; --------------------------------------------------------------------------- - -loc_6A48: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6928 -; --------------------------------------------------------------------------- - -loc_6A57: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A63: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A6F: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A81: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A93: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6A9E: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6AA9: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_6AC9 -; --------------------------------------------------------------------------- - -loc_6AB9: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6AC9: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_67E2 endp - -; --------------------------------------------------------------------------- -off_6AD0 dw offset loc_69D5 - dw offset loc_69E1 - dw offset loc_69EA - dw offset loc_69FB - dw offset loc_6A10 - dw offset loc_6A19 - dw offset loc_6A39 - dw offset loc_6A48 - dw offset loc_6A22 - dw offset loc_6A30 - dw offset loc_6A39 - dw offset loc_6A48 - dw offset loc_6AC9 - dw offset loc_6AC9 - dw offset loc_6AC9 - dw offset loc_6AC9 - dw offset loc_6A57 - dw offset loc_6A63 - dw offset loc_6A6F - dw offset loc_6A81 - dw offset loc_6A93 - dw offset loc_6A9E - dw offset loc_6AA9 - dw offset loc_6AB9 -off_6B00 dw offset loc_6850 - dw offset loc_6862 - dw offset loc_6874 - dw offset loc_6888 - dw offset loc_68A0 - dw offset loc_68AF - dw offset loc_68BE - dw offset loc_68D2 - dw offset loc_68E7 - dw offset loc_68F7 - dw offset loc_6907 - dw offset loc_691A - dw offset loc_69C0 - dw offset loc_69C0 - dw offset loc_69C0 - dw offset loc_69C0 - dw offset loc_692E - dw offset loc_693C - dw offset loc_694D - dw offset loc_6964 - dw offset loc_697B - dw offset loc_6989 - dw offset loc_6998 - dw offset loc_69AC - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6B30 proc near - ; sub_77BF+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_6B43 - mov ax, 2 - jmp short loc_6B45 -; --------------------------------------------------------------------------- - -loc_6B43: - xor ax, ax - -loc_6B45: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6B6B - or [bp+var_6], 2 - -loc_6B6B: - test byte ptr [bp+arg_8], 2 - jz short loc_6B7F - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_6B7F - or [bp+var_6], 20h - -loc_6B7F: - test byte ptr [bp+arg_8], 20h - jz short loc_6B89 - or [bp+var_6], 8 - -loc_6B89: - test byte ptr [bp+arg_8], 80h - jz short loc_6B93 - or [bp+var_6], 10h - -loc_6B93: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_6B9E - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6B9E: - add bx, bx - jmp cs:off_6CB8[bx] - -loc_6BA5: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - pop cx - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6BB3: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6BC1: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - add sp, 6 - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6BD3: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6BE5: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6C4B -; --------------------------------------------------------------------------- - -loc_6BF0: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_6C48 -; --------------------------------------------------------------------------- - -loc_6BF8: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6C12 -; --------------------------------------------------------------------------- - -loc_6C06: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_6C12: - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C15: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call word ptr [bp+arg_4] - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C23: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C31: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_6C4B -; --------------------------------------------------------------------------- - -loc_6C3F: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_6C48: - call [bp+arg_4] - -loc_6C4B: - ; sub_6B30+10Dj - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C4D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C59: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C65: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - pop ds - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C73: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C81: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C8C: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6C97: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop ds - jmp short loc_6CB1 -; --------------------------------------------------------------------------- - -loc_6CA4: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_6CB1: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6B30 endp - -; --------------------------------------------------------------------------- -off_6CB8 dw offset loc_6BA5 - dw offset loc_6BB3 - dw offset loc_6BC1 - dw offset loc_6BD3 - dw offset loc_6BE5 - dw offset loc_6BF0 - dw offset loc_6BF8 - dw offset loc_6C06 - dw offset loc_6C15 - dw offset loc_6C23 - dw offset loc_6C31 - dw offset loc_6C3F - dw offset loc_6CB1 - dw offset loc_6CB1 - dw offset loc_6CB1 - dw offset loc_6CB1 - dw offset loc_6C4D - dw offset loc_6C59 - dw offset loc_6C65 - dw offset loc_6C73 - dw offset loc_6C81 - dw offset loc_6C8C - dw offset loc_6C97 - dw offset loc_6CA4 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6CE8 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6D13 - or [bp+var_4], 2 - -loc_6D13: - test byte ptr [bp+arg_8], 2 - jz short loc_6D1D - or [bp+var_4], 4 - -loc_6D1D: - test byte ptr [bp+arg_8], 20h - jz short loc_6D27 - or [bp+var_4], 8 - -loc_6D27: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_6D9A - add bx, bx - jmp cs:off_6DA1[bx] - -loc_6D36: - push [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D3F: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D48: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6D5C -; --------------------------------------------------------------------------- - -loc_6D53: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6D5C: - pop cx - pop cx - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D60: - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6D6E -; --------------------------------------------------------------------------- - -loc_6D68: - push [bp+arg_0] - call [bp+arg_4] - -loc_6D6E: - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D70: - mov bx, [bp+arg_0] - push bx - pop bx - call word ptr [bp+arg_4] - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D7A: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_6D9A -; --------------------------------------------------------------------------- - -loc_6D84: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6D98 -; --------------------------------------------------------------------------- - -loc_6D8F: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_6D98: - jmp short $+2 - -loc_6D9A: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6CE8 endp - -; --------------------------------------------------------------------------- -off_6DA1 dw offset loc_6D36 - dw offset loc_6D3F - dw offset loc_6D48 - dw offset loc_6D53 - dw offset loc_6D60 - dw offset loc_6D68 - dw offset loc_6D84 - dw offset loc_6D8F - dw offset loc_6D70 - dw offset loc_6D7A - dw offset loc_6D84 - dw offset loc_6D8F - db 4 dup(0), 77h, 70h - dw seg seg000 - db 14h dup(0), 0D0h, 70h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0B9h, 6Dh - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0D1h, 6Dh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_6E07(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_6E07 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 6DE9h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_6E93 -; --------------------------------------------------------------------------- - -loc_6E70: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_6E90 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_6E90: - inc word ptr [bp+var_34] - -loc_6E93: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_6E70 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_6EF0 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_6EF2 -; --------------------------------------------------------------------------- - -loc_6EF0: - xor ax, ax - -loc_6EF2: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_6F0C - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_6F0C: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_6648 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 66A4h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_7096 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_67E2 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_7081 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7081: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7096: - cmp [bp+arg_1E], 0 - jnz short loc_70DA - test byte ptr [bp+var_2C], 2 - jz short loc_70DA - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6B30 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_70DA -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_70DA: - ; sub_6E07+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_6E07 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_6E07 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_71CA - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_71CA: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7216 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_721F -; --------------------------------------------------------------------------- - -loc_7216: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_721F: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_6E07 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7239 proc far - push si - push di - pop di - pop si - retf -sub_7239 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_723E proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_7258 - inc [bp+var_4] - -loc_7258: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_7239 - jmp short loc_72A6 -; --------------------------------------------------------------------------- - -loc_7265: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_7290 - mov ax, dx - jmp short loc_72C4 -; --------------------------------------------------------------------------- - -loc_7290: - cmp [bp+var_4], 0 - jz short loc_729D - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_729D: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_72A6: - cmp [bp+var_2], 0FFFFh - jz short loc_72B4 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_7265 - -loc_72B4: - cmp [bp+var_4], 0 - jz short loc_72C1 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_72C1: - mov ax, 1 - -loc_72C4: - pop di - pop si - mov sp, bp - pop bp - retf -sub_723E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_72F5 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_72F5: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_723E - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7311 proc far - push si - push di - pop di - pop si - retf -sub_7311 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 7788 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_7311 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_733F - jmp loc_73F5 -; --------------------------------------------------------------------------- - -loc_733F: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_743E -; --------------------------------------------------------------------------- - -loc_73F5: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_743E: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_746F - cmp [bp+arg_0], 0FACEh - jnz short loc_746F - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_747D -; --------------------------------------------------------------------------- - -loc_746F: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_747D: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_754E - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_754E: - cmp [bp+arg_A], 0 - jb short loc_7566 - ja short loc_755C - cmp [bp+arg_8], 0Fh - jbe short loc_7566 - -loc_755C: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7566: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_759C -; --------------------------------------------------------------------------- - -loc_7573: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_759C: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_7573 - jnz short loc_75AD - cmp ax, [bp+arg_8] - jb short loc_7573 - -loc_75AD: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_723E - add sp, 8 - or ax, ax - jnz short loc_75F8 - test byte ptr [bp+arg_4], 1 - jz short loc_7618 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_75AD -; --------------------------------------------------------------------------- - -loc_75F8: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_723E - add sp, 8 - or ax, ax - jz short loc_7618 - jmp loc_7783 -; --------------------------------------------------------------------------- - -loc_7618: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_7622 - jmp loc_7702 -; --------------------------------------------------------------------------- - -loc_7622: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7788 -; --------------------------------------------------------------------------- - -loc_7702: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7788 -; --------------------------------------------------------------------------- - -loc_7783: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_7788: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 0F7h, 77h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 95h, 77h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_77BF proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 77ADh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_6B30 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7801 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7801: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_77BF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_780F proc near - ; sub_7D59+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_788A - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_7882 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_77BF - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7882: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_788A: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_78E1 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_78D9 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_78D9 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_77BF - add sp, 0Ah - -loc_78D9: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_78E1: - pop di - pop si - mov sp, bp - pop bp - retn -sub_780F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_6E07+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_780F - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7964 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_796C: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_7989 - xor ax, ax - jmp loc_7A2A -; --------------------------------------------------------------------------- - -loc_7989: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_79B5 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_79B5: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_7A0E - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_7A23 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_7A23 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_7964 - add sp, 0Ch - or ax, ax - jz short loc_7A23 - -loc_7A0E: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_7A2A -; --------------------------------------------------------------------------- - -loc_7A23: - add word ptr [bp+arg_0], 8 - jmp loc_796C -; --------------------------------------------------------------------------- - -loc_7A2A: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7964 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7A30 proc far - ; sub_7AB3+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_7AA1 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7964 - add sp, 0Ch - or ax, ax - jnz short loc_7AA1 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7964 - add sp, 0Ch - or ax, ax - jz short loc_7AA9 - -loc_7AA1: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7AAD -; --------------------------------------------------------------------------- - -loc_7AA9: - xor dx, dx - xor ax, ax - -loc_7AAD: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7A30 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7AB3 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7AE2 - jmp loc_7D53 -; --------------------------------------------------------------------------- - -loc_7AE2: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7AEF - jmp loc_7D53 -; --------------------------------------------------------------------------- - -loc_7AEF: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_7B63 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_7B63: - test cl, 10h - jz short loc_7B8B - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_7B8B - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_7CB6 -; --------------------------------------------------------------------------- - -loc_7B8B: - test dl, 1 - jnz short loc_7B93 - jmp loc_7C37 -; --------------------------------------------------------------------------- - -loc_7B93: - test cl, 30h - jnz short loc_7B9B - jmp loc_7C37 -; --------------------------------------------------------------------------- - -loc_7B9B: - test cl, 20h - jz short loc_7BA2 - jmp short loc_7BC5 -; --------------------------------------------------------------------------- - -loc_7BA2: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7BCC - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_7BC5: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7BCC: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_7C2D - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7A30 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_7C28 - cmp ax, [bp+var_18] - jz short loc_7C2D - -loc_7C28: - mov [bp+var_14], 1 - -loc_7C2D: - ; sub_7AB3+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_7D01 -; --------------------------------------------------------------------------- - -loc_7C37: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7CBD - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_7C86 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7A30 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_7C86: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_7D04 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_67E2 - add sp, 0Eh - -loc_7CB6: - ; sub_7AB3+227j - mov [bp+var_14], 1 - jmp short loc_7D1D -; --------------------------------------------------------------------------- - -loc_7CBD: - test cl, 20h - jz short loc_7CDC - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_7CB6 -; --------------------------------------------------------------------------- - -loc_7CDC: - test cl, 10h - jz short loc_7D04 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_7D04 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_7D01: - push ax - jmp short loc_7D0D -; --------------------------------------------------------------------------- - -loc_7D04: - ; sub_7AB3+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_7D0D: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_7D1D: - cmp [bp+var_14], 0 - jnz short loc_7D53 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7D4B - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_77BF - add sp, 0Ah - -loc_7D4B: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_7D53: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7AB3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7D59 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_7EFE -; --------------------------------------------------------------------------- - -loc_7DB1: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_7DEC - jmp loc_7EFB -; --------------------------------------------------------------------------- - -loc_7DEC: - add bx, bx - jmp cs:off_7F18[bx] - -loc_7DF3: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_12646+2, dx - mov word ptr dword_12646, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_12646 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_7EFB -; --------------------------------------------------------------------------- - -loc_7E2E: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_7E5D -; --------------------------------------------------------------------------- - -loc_7E3D: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_7E57 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_7E57 - jmp short loc_7E77 -; --------------------------------------------------------------------------- - -loc_7E57: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_7E5D: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_7E3D - -loc_7E77: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_780F - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_7EFB -; --------------------------------------------------------------------------- - -loc_7EB0: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_892F - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_7EFB: - mov ax, [bp+var_8] - -loc_7EFE: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_7F12 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_7F12 - jmp loc_7DB1 -; --------------------------------------------------------------------------- - -loc_7F12: - ; sub_7D59+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_7D59 endp - -; --------------------------------------------------------------------------- -off_7F18 dw offset loc_7DF3 - dw offset loc_7EFB - dw offset loc_7EFB - dw offset loc_7EFB - dw offset loc_7E2E - dw offset loc_7EB0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_7D59 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_7D59 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F6E proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_7FDC -; --------------------------------------------------------------------------- - -loc_7F87: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_7FD0 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_66DD - add sp, 10h - or ax, ax - jz short loc_7FD8 - -loc_7FD0: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_7FEC -; --------------------------------------------------------------------------- - -loc_7FD8: - add word ptr [bp+var_4], 10h - -loc_7FDC: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_7F87 - xor dx, dx - xor ax, ax - -loc_7FEC: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7F6E endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8086 - jmp loc_812E -; --------------------------------------------------------------------------- - -loc_8086: - xor ax, ax - push ax - push [bp+var_4] - call sub_7D59 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_809F - jmp loc_8361 -; --------------------------------------------------------------------------- - -loc_809F: - cmp word ptr ss:[bx], 0FACEh - jz short loc_80A9 - jmp loc_8361 -; --------------------------------------------------------------------------- - -loc_80A9: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_80C4 - jmp loc_8361 -; --------------------------------------------------------------------------- - -loc_80C4: - jmp short loc_8102 -; --------------------------------------------------------------------------- - -loc_80C6: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_66DD - add sp, 10h - or ax, ax - jz short loc_80FE - jmp loc_8361 -; --------------------------------------------------------------------------- - -loc_80FE: - add word ptr [bp+var_20], 4 - -loc_8102: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_80C6 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_8361 -; --------------------------------------------------------------------------- - -loc_812E: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_8355 -; --------------------------------------------------------------------------- - -loc_8138: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8169 - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_8169: - add bx, bx - jmp cs:off_836A[bx] - -loc_8170: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_817E - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_817E: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8188 - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_8188: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_7F6E - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_81C2 - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_81C2: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_81F6: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_7D59 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_8248 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_7AB3 - add sp, 10h - -loc_8248: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_8261: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8276 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8276 - jmp loc_8352 -; --------------------------------------------------------------------------- - -loc_8276: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_1264A+2, dx - mov word ptr dword_1264A, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_1264A - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_830D -; --------------------------------------------------------------------------- - -loc_82D8: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_82EC - cmp word ptr ss:[bx], 0FACEh - jnz short loc_82EC - jmp short loc_8352 -; --------------------------------------------------------------------------- - -loc_82EC: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_830D: - cmp [bp+var_38], 0 - jge short loc_832B - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_8327 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_8327: - xor ax, ax - jmp short loc_8364 -; --------------------------------------------------------------------------- - -loc_832B: - cmp [bp+var_38], 0 - jnz short loc_8333 - jmp short loc_8352 -; --------------------------------------------------------------------------- - -loc_8333: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_81F6 -; --------------------------------------------------------------------------- - -loc_8352: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_8355: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_8361 - jmp loc_8138 -; --------------------------------------------------------------------------- - -loc_8361: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_8364: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_836A dw offset loc_8352 - dw offset loc_8261 - dw offset loc_82D8 - dw offset loc_8170 - dw offset loc_8352 - dw offset loc_8352 - db 4 dup(0), 9, 84h - dw seg seg000 - db 14h dup(0), 19h, 84h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 8Eh, 83h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 76h, 83h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_83C4 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 83A6h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_6B30 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_8412 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8412: - mov [bp+var_12], 0 - jmp short loc_8422 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8422: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_83C4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8430 proc far - ; sub_84B1+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_849F -; --------------------------------------------------------------------------- - -loc_843D: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_8465 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8465: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_849F - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_84B1 - add sp, 10h - xor cx, cx - -loc_849F: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_843D - pop di - pop si - mov sp, bp - pop bp - retf -sub_8430 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_84B1 proc far - ; sub_84B1+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_84C8 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_84CF -; --------------------------------------------------------------------------- - -loc_84C8: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_84CF: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_84F1 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_850A - jnz short loc_84F1 - cmp ax, [bp+var_1C] - jb short loc_850A - -loc_84F1: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_83C4 - add sp, 0Ah - jmp loc_8776 -; --------------------------------------------------------------------------- - -loc_850A: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_85A3 - -loc_8535: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_85A3 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_859D - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8596 - jnz short loc_856C - cmp bx, [bp+var_1C] - jb short loc_8596 - -loc_856C: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8586: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8430 - add sp, 12h - jmp loc_8776 -; --------------------------------------------------------------------------- - -loc_8596: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_859D: - add word ptr [bp+var_10], 8 - jmp short loc_8535 -; --------------------------------------------------------------------------- - -loc_85A3: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_85BC: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8632 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_862C - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8625 - jnz short loc_85F3 - cmp bx, [bp+var_1C] - jb short loc_8625 - -loc_85F3: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8430 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8622 - jmp loc_8776 -; --------------------------------------------------------------------------- - -loc_8622: - jmp loc_8756 -; --------------------------------------------------------------------------- - -loc_8625: - ; sub_84B1+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_862C: - add word ptr [bp+var_8], 8 - jmp short loc_85BC -; --------------------------------------------------------------------------- - -loc_8632: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_864B: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8685 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8685: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_86A9 - jb short loc_869F - cmp bx, [bp+var_1C] - jnb short loc_86A9 - -loc_869F: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_876F -; --------------------------------------------------------------------------- - -loc_86A9: - ; sub_84B1+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_86F5 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_877C - add sp, 0Eh - jmp short loc_8715 -; --------------------------------------------------------------------------- - -loc_86F5: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_84B1 - add sp, 10h - -loc_8715: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_872E - jmp loc_86A9 -; --------------------------------------------------------------------------- - -loc_872E: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8430 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8776 - -loc_8756: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8586 -; --------------------------------------------------------------------------- - -loc_876F: - add word ptr [bp+var_18], 6 - jmp loc_864B -; --------------------------------------------------------------------------- - -loc_8776: - pop di - pop si - mov sp, bp - pop bp - retf -sub_84B1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_877C proc far - ; sub_892F+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_87D6 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_87D6: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8866 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_8853 -; --------------------------------------------------------------------------- - -loc_8834: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_8853: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_84B1 - add sp, 10h - -loc_8866: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8834 - pop di - pop si - mov sp, bp - pop bp - retf -sub_877C endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_887E proc far - ; sub_892F+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_8923 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_8923 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_88DD - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_88E6 -; --------------------------------------------------------------------------- - -loc_88DD: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_88E6: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_8923: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_887E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_892F proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_8945 - jmp loc_8D32 -; --------------------------------------------------------------------------- - -loc_8945: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_899E - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_899E: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_89B5 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_8D34 -; --------------------------------------------------------------------------- - -loc_89B5: - cmp [bp+var_6], 0 - jg short loc_89E7 - jnz short loc_89C3 - cmp [bp+var_8], 0 - ja short loc_89E7 - -loc_89C3: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_89D5 - jmp loc_8D32 -; --------------------------------------------------------------------------- - -loc_89D5: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_8B4C -; --------------------------------------------------------------------------- - -loc_89E7: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_89F3: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8A06 - sub word ptr [bp+var_C], 0Ah - jmp loc_8B4C -; --------------------------------------------------------------------------- - -loc_8A06: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_8A2E - jmp loc_8AF8 -; --------------------------------------------------------------------------- - -loc_8A2E: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_8A52 - jmp loc_8AF8 -; --------------------------------------------------------------------------- - -loc_8A52: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_8A5F - jmp loc_8AF8 -; --------------------------------------------------------------------------- - -loc_8A5F: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_8A6C - jmp loc_8AF8 -; --------------------------------------------------------------------------- - -loc_8A6C: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8A85 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_8A93 -; --------------------------------------------------------------------------- - -loc_8A85: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_8A93: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8ABB - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8AC4 -; --------------------------------------------------------------------------- - -loc_8ABB: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8AC4: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8AD5 - add word ptr [bp+var_1C], 4 - -loc_8AD5: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_887E - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8AF8: - ; sub_892F+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8B1D - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8B1D: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8B3B - jnz short loc_8B4C - cmp ax, [bp+var_8] - jnb short loc_8B4C - -loc_8B3B: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_89F3 -; --------------------------------------------------------------------------- - -loc_8B4C: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_8B7B - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_8B89 -; --------------------------------------------------------------------------- - -loc_8B7B: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_8B89: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_8B95 - jmp loc_8C1F -; --------------------------------------------------------------------------- - -loc_8B95: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8BC7 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_8BD0 -; --------------------------------------------------------------------------- - -loc_8BC7: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_8BD0: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_8BEE - add [bp+var_18], 4 - -loc_8BEE: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8C1F - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8C1F - test byte ptr [bp+var_16+2], 8 - jz short loc_8C1F - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_887E - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8C1F: - ; sub_892F+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_8C6D - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8C4D - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_877C - add sp, 0Eh - jmp short loc_8C6D -; --------------------------------------------------------------------------- - -loc_8C4D: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_84B1 - add sp, 10h - -loc_8C6D: - ; sub_892F+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_8C7B - jmp loc_8D19 -; --------------------------------------------------------------------------- - -loc_8C7B: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_8C8A - sub word ptr [bp+driver], 4 - -loc_8C8A: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8CD9 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8CC6 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_8CF8 -; --------------------------------------------------------------------------- - -loc_8CC6: - test byte ptr [bp+var_16+2], 80h - jz short loc_8D19 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_8D17 -; --------------------------------------------------------------------------- - -loc_8CD9: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_8D06 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_8CF8: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6CE8 - add sp, 0Ah - jmp short loc_8D19 -; --------------------------------------------------------------------------- - -loc_8D06: - test byte ptr [bp+var_16+2], 80h - jz short loc_8D19 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_8D17: - pop cx - pop cx - -loc_8D19: - ; sub_892F+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_8D32 - jmp loc_8B4C -; --------------------------------------------------------------------------- - -loc_8D32: - xor ax, ax - -loc_8D34: - pop di - pop si - mov sp, bp - pop bp - retn -sub_892F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_8D7D - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 0DDFh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_8D82 - -loc_8D7D: - mov ax, 0FFFFh - jmp short loc_8D89 -; --------------------------------------------------------------------------- - -loc_8D82: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_8D89: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_8DE5 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_8E23 - -loc_8DE5: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 93C1h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 93A3h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8E23: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_8E6E - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 93C1h - test dl, 1 - jz short loc_8E6E - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_8E6E: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_62E4 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8ED2 - xor ax, ax - jmp short loc_8F2B -; --------------------------------------------------------------------------- - -loc_8ED2: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_8EE4 - mov ax, 1 - jmp short loc_8F2B -; --------------------------------------------------------------------------- - -loc_8EE4: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_8F29 - mov ax, 1 - jmp short loc_8F2B -; --------------------------------------------------------------------------- - -loc_8F29: - xor ax, ax - -loc_8F2B: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_62BF - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_8F8D - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 411Eh - push ax ; src - push cs ; int - mov ax, 938Dh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_8F8D: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8FCE proc near - ; sub_8FCE+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_9009 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_9013 - -loc_9009: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_901A - -loc_9013: - xor dx, dx - xor ax, ax - jmp loc_920E -; --------------------------------------------------------------------------- - -loc_901A: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_902C: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9032: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_904D - jmp loc_91D6 -; --------------------------------------------------------------------------- - -loc_904D: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_905A - jmp loc_91CF -; --------------------------------------------------------------------------- - -loc_905A: - cmp [bp+arg_1A], 0 - jz short loc_9074 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9074 - mov ax, 1 - jmp short loc_9076 -; --------------------------------------------------------------------------- - -loc_9074: - xor ax, ax - -loc_9076: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_90BD - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_90BD: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_913F - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_90E1 - jmp loc_91CF -; --------------------------------------------------------------------------- - -loc_90E1: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8FCE - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_9128 - jmp loc_91CF -; --------------------------------------------------------------------------- - -loc_9128: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_919C -; --------------------------------------------------------------------------- - -loc_913F: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9160 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_91CF - cmp ax, word ptr [bp+var_14] - jnz short loc_91CF - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_920E -; --------------------------------------------------------------------------- - -loc_9160: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_919C - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_8FCE - add sp, 20h - or ax, dx - jz short loc_91CF - -loc_919C: - ; sub_8FCE+198j - cmp [bp+var_E], 0 - jz short loc_91BA - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_91BA - cmp ax, [bp+var_C] - jnz short loc_91BA - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_91CF -; --------------------------------------------------------------------------- - -loc_91BA: - ; sub_8FCE+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_91CF: - ; sub_8FCE+110j ... - add word ptr [bp+var_4], 8 - jmp loc_9032 -; --------------------------------------------------------------------------- - -loc_91D6: - cmp [bp+var_6], 0 - jnz short loc_91EF - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_902C -; --------------------------------------------------------------------------- - -loc_91EF: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_9208 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_9208: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_920E: - ; sub_8FCE+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_8FCE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_923F - jmp loc_9343 -; --------------------------------------------------------------------------- - -loc_923F: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_9295 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jz short loc_929E - -loc_9295: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_9373 -; --------------------------------------------------------------------------- - -loc_929E: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_62E4 - add sp, 8 - or ax, ax - jnz short loc_92F7 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8FCE - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_933B - -loc_92F7: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_8FCE - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_9343 - cmp [bp+var_16], 0 - jz short loc_9343 - -loc_933B: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_9373 -; --------------------------------------------------------------------------- - -loc_9343: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_936F - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 411Fh - push ax ; src - push cs ; int - mov ax, 9379h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_936F: - xor dx, dx - xor ax, ax - -loc_9373: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0C5h, 93h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 0C5h, 93h - dw seg seg000 - db 4 dup(0), 3Eh, 8Eh - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 3Eh, 8Eh - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -21429,8 +14789,7 @@ word_F300 dw 0 word_F302 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_F31C dw 1 word_F31E dw 0 @@ -24800,9 +18159,7 @@ include libs/BorlandC/sigdata[bss].asm word_1263E dw ? word_12640 dw ? include libs/BorlandC/signal[bss].asm -dword_12646 dd ? -dword_1264A dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dseg ends diff --git a/th04_op.asm b/th04_op.asm index 5c01dea1..30f8efde 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -4953,6694 +4953,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_697F proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_6993 - mov dx, ds - mov ax, 199Ah - jmp short loc_69A0 -; --------------------------------------------------------------------------- - -loc_6993: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_69A0: - pop di - pop si - pop bp - retf -sub_697F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_69A4 proc far - ; sub_6A41+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_69BC - cmp ax, word ptr [bp+arg_4] - jz short loc_6A38 - -loc_69BC: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_6A30 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_6A30 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_6A30 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6A12: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6A34 - -loc_6A30: - xor ax, ax - jmp short loc_6A3B -; --------------------------------------------------------------------------- - -loc_6A34: - or dx, dx - jnz short loc_6A12 - -loc_6A38: - mov ax, 1 - -loc_6A3B: - pop di - pop si - mov sp, bp - pop bp - retf -sub_69A4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6A41 proc near - ; sub_6A41+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6A5C: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6AF0 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_6AE9 - cmp [bp+arg_C], 0 - jz short loc_6A98 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6A98 - mov ax, 1 - jmp short loc_6A9A -; --------------------------------------------------------------------------- - -loc_6A98: - xor ax, ax - -loc_6A9A: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jz short loc_6ABD - cmp [bp+var_6], 0 - jz short loc_6ABD - jmp loc_6B80 -; --------------------------------------------------------------------------- - -loc_6ABD: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6AE9 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6A41 - add sp, 0Eh - or ax, ax - jz short loc_6AE9 - jmp loc_6B80 -; --------------------------------------------------------------------------- - -loc_6AE9: - add word ptr [bp+var_4], 8 - jmp loc_6A5C -; --------------------------------------------------------------------------- - -loc_6AF0: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6B03: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6B8C - cmp [bp+arg_C], 0 - jz short loc_6B35 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6B35 - mov ax, 1 - jmp short loc_6B37 -; --------------------------------------------------------------------------- - -loc_6B35: - xor ax, ax - -loc_6B37: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jz short loc_6B57 - cmp [bp+var_6], 0 - jnz short loc_6B80 - -loc_6B57: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6B85 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6A41 - add sp, 0Eh - or ax, ax - jz short loc_6B85 - -loc_6B80: - mov ax, 1 - jmp short loc_6B8E -; --------------------------------------------------------------------------- - -loc_6B85: - ; sub_6A41+13Dj - add word ptr [bp+var_4], 8 - jmp loc_6B03 -; --------------------------------------------------------------------------- - -loc_6B8C: - xor ax, ax - -loc_6B8E: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6A41 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6B94 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_6B9F: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6BB2 - cmp ax, word ptr [bp+arg_4] - jnz short loc_6BB2 - jmp loc_6CC7 -; --------------------------------------------------------------------------- - -loc_6BB2: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_6C42 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6BE5 - jmp loc_6C88 -; --------------------------------------------------------------------------- - -loc_6BE5: - or cx, cx - jz short loc_6BEC - jmp loc_6D00 -; --------------------------------------------------------------------------- - -loc_6BEC: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6C22 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6C10 - jmp loc_6D00 -; --------------------------------------------------------------------------- - -loc_6C10: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_6C88 - -loc_6C22: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6C36 - jmp loc_6D00 -; --------------------------------------------------------------------------- - -loc_6C36: - test byte ptr [bp+var_2+1], 10h - jnz short loc_6C3F - jmp loc_6D00 -; --------------------------------------------------------------------------- - -loc_6C3F: - jmp loc_6CC7 -; --------------------------------------------------------------------------- - -loc_6C42: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_6CB0 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_6C67 - cmp ax, es:[bx+0Ah] - jz short loc_6C88 - -loc_6C67: - or cx, cx - jz short loc_6C6E - jmp loc_6D00 -; --------------------------------------------------------------------------- - -loc_6C6E: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6D00 - -loc_6C88: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_6B9F -; --------------------------------------------------------------------------- - -loc_6CB0: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jz short loc_6CCC - -loc_6CC7: - ; sub_6B94:loc_6C3Fj - mov ax, 1 - jmp short loc_6D02 -; --------------------------------------------------------------------------- - -loc_6CCC: - test byte ptr [bp+var_2], 2 - jz short loc_6D00 - test byte ptr [bp+var_4], 1 - jz short loc_6D00 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6D00 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6A41 - add sp, 0Eh - jmp short loc_6D02 -; --------------------------------------------------------------------------- - -loc_6D00: - xor ax, ax - -loc_6D02: - ; sub_6B94+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_6B94 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D08 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_6D58 - cmp [bp+arg_0], 80h ; '€' - ja short loc_6D3A - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_6D3F - -loc_6D3A: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_6D3F: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_6D5E -; --------------------------------------------------------------------------- - -loc_6D58: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_6D5E: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6D08 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_6D8C - cmp ax, [bp+6] - jnz short loc_6D8C - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_6D99 -; --------------------------------------------------------------------------- - -loc_6D8C: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_6D99: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6D9D proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6B94 - add sp, 0Eh - or ax, ax - jz short loc_6DC7 - jmp loc_6E63 -; --------------------------------------------------------------------------- - -loc_6DC7: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_6E57 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6B94 - add sp, 0Eh - or ax, ax - jnz short loc_6E63 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6E9A - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6B94 - add sp, 0Eh - or ax, ax - jnz short loc_6E63 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6E9A - -loc_6E57: - test byte ptr [bp+var_4], 10h - jz short loc_6E9A - test [bp+arg_C], 1 - jz short loc_6E68 - -loc_6E63: - mov ax, 1 - jmp short loc_6E9C -; --------------------------------------------------------------------------- - -loc_6E68: - test byte ptr [bp+var_2], 10h - jz short loc_6E9A - test byte ptr [bp+var_2+1], 20h - jz short loc_6E7A - test byte ptr [bp+var_4+1], 20h - jz short loc_6E9A - -loc_6E7A: - test byte ptr [bp+var_4], 40h - jz short loc_6E9A - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_6E96 - mov ax, 1 - jmp short loc_6E98 -; --------------------------------------------------------------------------- - -loc_6E96: - xor ax, ax - -loc_6E98: - jmp short loc_6E9C -; --------------------------------------------------------------------------- - -loc_6E9A: - xor ax, ax - -loc_6E9C: - ; sub_6D9D:loc_6E98j - pop di - pop si - mov sp, bp - pop bp - retn -sub_6D9D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6EA2 proc near - ; sub_8173+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6ECD - or [bp+var_4], 2 - -loc_6ECD: - test byte ptr [bp+arg_C], 2 - jz short loc_6EE1 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6EE1 - or [bp+var_4], 20h - -loc_6EE1: - test byte ptr [bp+arg_C], 20h - jz short loc_6EEB - or [bp+var_4], 8 - -loc_6EEB: - test byte ptr [bp+arg_C], 80h - jz short loc_6EF5 - or [bp+var_4], 10h - -loc_6EF5: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_6EFE - jmp loc_7083 -; --------------------------------------------------------------------------- - -loc_6EFE: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6F09 - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F09: - add bx, bx - jmp cs:off_71C0[bx] - -loc_6F10: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F22: - ; sub_6EA2+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F34: - ; sub_6EA2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6F5A -; --------------------------------------------------------------------------- - -loc_6F48: - ; sub_6EA2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6F5A: - add sp, 0Ah - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F60: - ; sub_6EA2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F6F: - ; sub_6EA2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6F7E: - ; sub_6EA2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6FA4 -; --------------------------------------------------------------------------- - -loc_6F92: - ; sub_6EA2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6FA4: - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6FA7: - ; sub_6EA2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6FB7: - ; sub_6EA2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_6FBF: - push bx - pop bx - call [bp+arg_8] - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6FC7: - ; sub_6EA2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6FD5: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6FEB -; --------------------------------------------------------------------------- - -loc_6FDA: - ; sub_6EA2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6FE8: - call [bp+arg_8] - -loc_6FEB: - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_6FEE: - ; sub_6EA2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7008 -; --------------------------------------------------------------------------- - -loc_6FFC: - ; sub_6EA2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_7005: - call [bp+arg_8] - -loc_7008: - ; sub_6EA2+1FCj - pop cx - pop cx - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_700D: - ; sub_6EA2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_7024: - ; sub_6EA2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_703B: - ; sub_6EA2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7044: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7055 -; --------------------------------------------------------------------------- - -loc_7049: - ; sub_6EA2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7052: - call [bp+arg_8] - -loc_7055: - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_7058: - ; sub_6EA2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_706C: - ; sub_6EA2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_7080: - ; sub_6EA2+1EEj - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_7083: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_708E - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_708E: - add bx, bx - jmp cs:off_7190[bx] - -loc_7095: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7008 -; --------------------------------------------------------------------------- - -loc_70A1: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7005 -; --------------------------------------------------------------------------- - -loc_70AA: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_70CA -; --------------------------------------------------------------------------- - -loc_70BB: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_70CA: - add sp, 8 - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_70D0: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7044 -; --------------------------------------------------------------------------- - -loc_70D9: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7052 -; --------------------------------------------------------------------------- - -loc_70E2: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_7189 -; --------------------------------------------------------------------------- - -loc_70F0: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_6FBF -; --------------------------------------------------------------------------- - -loc_70F9: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6FD5 -; --------------------------------------------------------------------------- - -loc_7108: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6FE8 -; --------------------------------------------------------------------------- - -loc_7117: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_7123: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_712F: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_7141: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_7153: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_715E: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_7169: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_7189 -; --------------------------------------------------------------------------- - -loc_7179: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_7189: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6EA2 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7190 dw offset loc_7095 - dw offset loc_70A1 - dw offset loc_70AA - dw offset loc_70BB - dw offset loc_70D0 - dw offset loc_70D9 - dw offset loc_70F9 - dw offset loc_7108 - dw offset loc_70E2 - dw offset loc_70F0 - dw offset loc_70F9 - dw offset loc_7108 - dw offset loc_7189 - dw offset loc_7189 - dw offset loc_7189 - dw offset loc_7189 - dw offset loc_7117 - dw offset loc_7123 - dw offset loc_712F - dw offset loc_7141 - dw offset loc_7153 - dw offset loc_715E - dw offset loc_7169 - dw offset loc_7179 -off_71C0 dw offset loc_6F10 - dw offset loc_6F22 - dw offset loc_6F34 - dw offset loc_6F48 - dw offset loc_6F60 - dw offset loc_6F6F - dw offset loc_6F7E - dw offset loc_6F92 - dw offset loc_6FA7 - dw offset loc_6FB7 - dw offset loc_6FC7 - dw offset loc_6FDA - dw offset loc_7080 - dw offset loc_7080 - dw offset loc_7080 - dw offset loc_7080 - dw offset loc_6FEE - dw offset loc_6FFC - dw offset loc_700D - dw offset loc_7024 - dw offset loc_703B - dw offset loc_7049 - dw offset loc_7058 - dw offset loc_706C - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_71F0 proc near - ; sub_7E7F+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_7203 - mov ax, 2 - jmp short loc_7205 -; --------------------------------------------------------------------------- - -loc_7203: - xor ax, ax - -loc_7205: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_722B - or [bp+var_6], 2 - -loc_722B: - test byte ptr [bp+arg_8], 2 - jz short loc_723F - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_723F - or [bp+var_6], 20h - -loc_723F: - test byte ptr [bp+arg_8], 20h - jz short loc_7249 - or [bp+var_6], 8 - -loc_7249: - test byte ptr [bp+arg_8], 80h - jz short loc_7253 - or [bp+var_6], 10h - -loc_7253: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_725E - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_725E: - add bx, bx - jmp cs:off_7378[bx] - -loc_7265: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_7273: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_7281: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_7293: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_72A5: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_730B -; --------------------------------------------------------------------------- - -loc_72B0: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_7308 -; --------------------------------------------------------------------------- - -loc_72B8: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_72D2 -; --------------------------------------------------------------------------- - -loc_72C6: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_72D2: - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_72D5: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_72E3: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_7371 -; --------------------------------------------------------------------------- - -loc_72F1: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_730B -; --------------------------------------------------------------------------- - -loc_72FF: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_7308: - call [bp+arg_4] - -loc_730B: - ; sub_71F0+10Dj - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_730D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7319: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7325: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7333: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7341: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_734C: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7357: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_7371 -; --------------------------------------------------------------------------- - -loc_7364: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_7371: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_71F0 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7378 dw offset loc_7265 - dw offset loc_7273 - dw offset loc_7281 - dw offset loc_7293 - dw offset loc_72A5 - dw offset loc_72B0 - dw offset loc_72B8 - dw offset loc_72C6 - dw offset loc_72D5 - dw offset loc_72E3 - dw offset loc_72F1 - dw offset loc_72FF - dw offset loc_7371 - dw offset loc_7371 - dw offset loc_7371 - dw offset loc_7371 - dw offset loc_730D - dw offset loc_7319 - dw offset loc_7325 - dw offset loc_7333 - dw offset loc_7341 - dw offset loc_734C - dw offset loc_7357 - dw offset loc_7364 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_73A8 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_73D3 - or [bp+var_4], 2 - -loc_73D3: - test byte ptr [bp+arg_8], 2 - jz short loc_73DD - or [bp+var_4], 4 - -loc_73DD: - test byte ptr [bp+arg_8], 20h - jz short loc_73E7 - or [bp+var_4], 8 - -loc_73E7: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_745A - add bx, bx - jmp cs:off_7461[bx] - -loc_73F6: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_73FF: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_7408: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_741C -; --------------------------------------------------------------------------- - -loc_7413: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_741C: - pop cx - pop cx - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_7420: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_742E -; --------------------------------------------------------------------------- - -loc_7428: - push [bp+arg_0] - call [bp+arg_4] - -loc_742E: - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_7430: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_743A: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_745A -; --------------------------------------------------------------------------- - -loc_7444: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7458 -; --------------------------------------------------------------------------- - -loc_744F: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7458: - jmp short $+2 - -loc_745A: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_73A8 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7461 dw offset loc_73F6 - dw offset loc_73FF - dw offset loc_7408 - dw offset loc_7413 - dw offset loc_7420 - dw offset loc_7428 - dw offset loc_7444 - dw offset loc_744F - dw offset loc_7430 - dw offset loc_743A - dw offset loc_7444 - dw offset loc_744F - db 4 dup(0), 37h, 77h - dw seg seg000 - db 14h dup(0), 90h, 77h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 79h, 74h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 91h, 74h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_74C7(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_74C7 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 74A9h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_7553 -; --------------------------------------------------------------------------- - -loc_7530: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_7550 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_7550: - inc word ptr [bp+var_34] - -loc_7553: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_7530 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_75B0 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_75B2 -; --------------------------------------------------------------------------- - -loc_75B0: - xor ax, ax - -loc_75B2: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_75CC - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_75CC: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_6D08 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 6D64h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_7756 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_6EA2 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_7741 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7741: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7756: - cmp [bp+arg_1E], 0 - jnz short loc_779A - test byte ptr [bp+var_2C], 2 - jz short loc_779A - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_71F0 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_779A -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_779A: - ; sub_74C7+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_74C7 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_74C7 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_788A - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_788A: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_78D6 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_78DF -; --------------------------------------------------------------------------- - -loc_78D6: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_78DF: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_74C7 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_78F9 proc far - push si - push di - pop di - pop si - retf -sub_78F9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78FE proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_7918 - inc [bp+var_4] - -loc_7918: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_78F9 - jmp short loc_7966 -; --------------------------------------------------------------------------- - -loc_7925: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_7950 - mov ax, dx - jmp short loc_7984 -; --------------------------------------------------------------------------- - -loc_7950: - cmp [bp+var_4], 0 - jz short loc_795D - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_795D: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_7966: - cmp [bp+var_2], 0FFFFh - jz short loc_7974 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_7925 - -loc_7974: - cmp [bp+var_4], 0 - jz short loc_7981 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_7981: - mov ax, 1 - -loc_7984: - pop di - pop si - mov sp, bp - pop bp - retf -sub_78FE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_79B5 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_79B5: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_78FE - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_79D1 proc far - push si - push di - pop di - pop si - retf -sub_79D1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 7E48 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_79D1 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_79FF - jmp loc_7AB5 -; --------------------------------------------------------------------------- - -loc_79FF: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_7AFE -; --------------------------------------------------------------------------- - -loc_7AB5: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_7AFE: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_7B2F - cmp [bp+arg_0], 0FACEh - jnz short loc_7B2F - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_7B3D -; --------------------------------------------------------------------------- - -loc_7B2F: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_7B3D: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_7C0E - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_7C0E: - cmp [bp+arg_A], 0 - jb short loc_7C26 - ja short loc_7C1C - cmp [bp+arg_8], 0Fh - jbe short loc_7C26 - -loc_7C1C: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7C26: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_7C5C -; --------------------------------------------------------------------------- - -loc_7C33: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_7C5C: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_7C33 - jnz short loc_7C6D - cmp ax, [bp+arg_8] - jb short loc_7C33 - -loc_7C6D: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_78FE - add sp, 8 - or ax, ax - jnz short loc_7CB8 - test byte ptr [bp+arg_4], 1 - jz short loc_7CD8 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_7C6D -; --------------------------------------------------------------------------- - -loc_7CB8: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_78FE - add sp, 8 - or ax, ax - jz short loc_7CD8 - jmp loc_7E43 -; --------------------------------------------------------------------------- - -loc_7CD8: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_7CE2 - jmp loc_7DC2 -; --------------------------------------------------------------------------- - -loc_7CE2: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7E48 -; --------------------------------------------------------------------------- - -loc_7DC2: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7E48 -; --------------------------------------------------------------------------- - -loc_7E43: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_7E48: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 0B7h, 7Eh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 55h, 7Eh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7E7F proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7E6Dh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_71F0 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7EC1 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7EC1: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_7E7F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7ECF proc near - ; sub_8419+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7F4A - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_7F42 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_7E7F - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7F42: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_7F4A: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_7FA1 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7F99 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7F99 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_7E7F - add sp, 0Ah - -loc_7F99: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_7FA1: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7ECF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_74C7+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - -loc_7FFE: - push word ptr [bp+var_4] - call sub_7ECF - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8024 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_802C: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_8049 - xor ax, ax - jmp loc_80EA -; --------------------------------------------------------------------------- - -loc_8049: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_8075 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_8075: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_80CE - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_80E3 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_80E3 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_8024 - add sp, 0Ch - or ax, ax - jz short loc_80E3 - -loc_80CE: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_80EA -; --------------------------------------------------------------------------- - -loc_80E3: - add word ptr [bp+arg_0], 8 - jmp loc_802C -; --------------------------------------------------------------------------- - -loc_80EA: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8024 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_80F0 proc far - ; sub_8173+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_8161 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8024 - add sp, 0Ch - or ax, ax - jnz short loc_8161 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8024 - add sp, 0Ch - or ax, ax - jz short loc_8169 - -loc_8161: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_816D -; --------------------------------------------------------------------------- - -loc_8169: - xor dx, dx - xor ax, ax - -loc_816D: - pop di - pop si - mov sp, bp - pop bp - retf -sub_80F0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8173 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_81A2 - jmp loc_8413 -; --------------------------------------------------------------------------- - -loc_81A2: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_81AF - jmp loc_8413 -; --------------------------------------------------------------------------- - -loc_81AF: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_8223 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_8223: - test cl, 10h - jz short loc_824B - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_824B - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_8376 -; --------------------------------------------------------------------------- - -loc_824B: - test dl, 1 - jnz short loc_8253 - jmp loc_82F7 -; --------------------------------------------------------------------------- - -loc_8253: - test cl, 30h - jnz short loc_825B - jmp loc_82F7 -; --------------------------------------------------------------------------- - -loc_825B: - test cl, 20h - jz short loc_8262 - jmp short loc_8285 -; --------------------------------------------------------------------------- - -loc_8262: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_828C - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_8285: - mov [bp+var_14], 1 - jmp short $+2 - -loc_828C: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_82ED - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_80F0 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_82E8 - cmp ax, [bp+var_18] - jz short loc_82ED - -loc_82E8: - mov [bp+var_14], 1 - -loc_82ED: - ; sub_8173+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_83C1 -; --------------------------------------------------------------------------- - -loc_82F7: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_837D - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_8346 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_80F0 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_8346: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_83C4 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_6EA2 - add sp, 0Eh - -loc_8376: - ; sub_8173+227j - mov [bp+var_14], 1 - jmp short loc_83DD -; --------------------------------------------------------------------------- - -loc_837D: - test cl, 20h - jz short loc_839C - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_8376 -; --------------------------------------------------------------------------- - -loc_839C: - test cl, 10h - jz short loc_83C4 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_83C4 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_83C1: - push ax - jmp short loc_83CD -; --------------------------------------------------------------------------- - -loc_83C4: - ; sub_8173+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_83CD: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_83DD: - cmp [bp+var_14], 0 - jnz short loc_8413 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_840B - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_7E7F - add sp, 0Ah - -loc_840B: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_8413: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8173 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8419 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_85BE -; --------------------------------------------------------------------------- - -loc_8471: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_84AC - jmp loc_85BB -; --------------------------------------------------------------------------- - -loc_84AC: - add bx, bx - jmp cs:off_85D8[bx] - -loc_84B3: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_13352+2, dx - mov word ptr dword_13352, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_13352 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_85BB -; --------------------------------------------------------------------------- - -loc_84EE: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_851D -; --------------------------------------------------------------------------- - -loc_84FD: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_8517 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_8517 - jmp short loc_8537 -; --------------------------------------------------------------------------- - -loc_8517: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_851D: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_84FD - -loc_8537: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_7ECF - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_85BB -; --------------------------------------------------------------------------- - -loc_8570: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_8FEF - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_85BB: - mov ax, [bp+var_8] - -loc_85BE: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_85D2 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_85D2 - jmp loc_8471 -; --------------------------------------------------------------------------- - -loc_85D2: - ; sub_8419+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_8419 endp - -; --------------------------------------------------------------------------- -off_85D8 dw offset loc_84B3 - dw offset loc_85BB - dw offset loc_85BB - dw offset loc_85BB - dw offset loc_84EE - dw offset loc_8570 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8419 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8419 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_862E proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_869C -; --------------------------------------------------------------------------- - -loc_8647: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_8690 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6D9D - add sp, 10h - or ax, ax - jz short loc_8698 - -loc_8690: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_86AC -; --------------------------------------------------------------------------- - -loc_8698: - add word ptr [bp+var_4], 10h - -loc_869C: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8647 - xor dx, dx - xor ax, ax - -loc_86AC: - pop di - pop si - mov sp, bp - pop bp - retn -sub_862E endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8746 - jmp loc_87EE -; --------------------------------------------------------------------------- - -loc_8746: - xor ax, ax - push ax - push [bp+var_4] - call sub_8419 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_875F - jmp loc_8A21 -; --------------------------------------------------------------------------- - -loc_875F: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8769 - jmp loc_8A21 -; --------------------------------------------------------------------------- - -loc_8769: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_8784 - jmp loc_8A21 -; --------------------------------------------------------------------------- - -loc_8784: - jmp short loc_87C2 -; --------------------------------------------------------------------------- - -loc_8786: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6D9D - add sp, 10h - or ax, ax - jz short loc_87BE - jmp loc_8A21 -; --------------------------------------------------------------------------- - -loc_87BE: - add word ptr [bp+var_20], 4 - -loc_87C2: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8786 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_8A21 -; --------------------------------------------------------------------------- - -loc_87EE: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_8A15 -; --------------------------------------------------------------------------- - -loc_87F8: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8829 - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8829: - add bx, bx - jmp cs:off_8A2A[bx] - -loc_8830: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_883E - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_883E: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8848 - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8848: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_862E - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_8882 - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8882: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_88B6: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8419 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_8908 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_8173 - add sp, 10h - -loc_8908: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8921: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8936 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8936 - jmp loc_8A12 -; --------------------------------------------------------------------------- - -loc_8936: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_13356+2, dx - mov word ptr dword_13356, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_13356 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_89CD -; --------------------------------------------------------------------------- - -loc_8998: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_89AC - cmp word ptr ss:[bx], 0FACEh - jnz short loc_89AC - jmp short loc_8A12 -; --------------------------------------------------------------------------- - -loc_89AC: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_89CD: - cmp [bp+var_38], 0 - jge short loc_89EB - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_89E7 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_89E7: - xor ax, ax - jmp short loc_8A24 -; --------------------------------------------------------------------------- - -loc_89EB: - cmp [bp+var_38], 0 - jnz short loc_89F3 - jmp short loc_8A12 -; --------------------------------------------------------------------------- - -loc_89F3: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_88B6 -; --------------------------------------------------------------------------- - -loc_8A12: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_8A15: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_8A21 - jmp loc_87F8 -; --------------------------------------------------------------------------- - -loc_8A21: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_8A24: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_8A2A dw offset loc_8A12 - dw offset loc_8921 - dw offset loc_8998 - dw offset loc_8830 - dw offset loc_8A12 - dw offset loc_8A12 - db 4 dup(0), 0C9h, 8Ah - dw seg seg000 - db 14h dup(0), 0D9h, 8Ah - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 4Eh, 8Ah - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 36h, 8Ah - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8A84 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8A66h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_71F0 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_8AD2 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8AD2: - mov [bp+var_12], 0 - jmp short loc_8AE2 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8AE2: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_8A84 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8AF0 proc far - ; sub_8B71+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_8B5F -; --------------------------------------------------------------------------- - -loc_8AFD: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_8B25 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8B25: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8B5F - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_8B71 - add sp, 10h - xor cx, cx - -loc_8B5F: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_8AFD - pop di - pop si - mov sp, bp - pop bp - retf -sub_8AF0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B71 proc far - ; sub_8B71+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_8B88 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_8B8F -; --------------------------------------------------------------------------- - -loc_8B88: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_8B8F: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8BB1 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_8BCA - jnz short loc_8BB1 - cmp ax, [bp+var_1C] - jb short loc_8BCA - -loc_8BB1: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8A84 - add sp, 0Ah - jmp loc_8E36 -; --------------------------------------------------------------------------- - -loc_8BCA: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_8C63 - -loc_8BF5: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8C63 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8C5D - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8C56 - jnz short loc_8C2C - cmp bx, [bp+var_1C] - jb short loc_8C56 - -loc_8C2C: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8C46: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8AF0 - add sp, 12h - jmp loc_8E36 -; --------------------------------------------------------------------------- - -loc_8C56: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8C5D: - add word ptr [bp+var_10], 8 - jmp short loc_8BF5 -; --------------------------------------------------------------------------- - -loc_8C63: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_8C7C: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8CF2 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8CEC - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8CE5 - jnz short loc_8CB3 - cmp bx, [bp+var_1C] - jb short loc_8CE5 - -loc_8CB3: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8AF0 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8CE2 - jmp loc_8E36 -; --------------------------------------------------------------------------- - -loc_8CE2: - jmp loc_8E16 -; --------------------------------------------------------------------------- - -loc_8CE5: - ; sub_8B71+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8CEC: - add word ptr [bp+var_8], 8 - jmp short loc_8C7C -; --------------------------------------------------------------------------- - -loc_8CF2: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_8D0B: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8D45 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8D45: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_8D69 - jb short loc_8D5F - cmp bx, [bp+var_1C] - jnb short loc_8D69 - -loc_8D5F: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_8E2F -; --------------------------------------------------------------------------- - -loc_8D69: - ; sub_8B71+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_8DB5 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_8E3C - add sp, 0Eh - jmp short loc_8DD5 -; --------------------------------------------------------------------------- - -loc_8DB5: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_8B71 - add sp, 10h - -loc_8DD5: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_8DEE - jmp loc_8D69 -; --------------------------------------------------------------------------- - -loc_8DEE: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8AF0 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8E36 - -loc_8E16: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8C46 -; --------------------------------------------------------------------------- - -loc_8E2F: - add word ptr [bp+var_18], 6 - jmp loc_8D0B -; --------------------------------------------------------------------------- - -loc_8E36: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8B71 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8E3C proc far - ; sub_8FEF+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_8E96 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_8E96: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8F26 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_8F13 -; --------------------------------------------------------------------------- - -loc_8EF4: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_8F13: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8B71 - add sp, 10h - -loc_8F26: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8EF4 - pop di - pop si - mov sp, bp - pop bp - retf -sub_8E3C endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8F3E proc far - ; sub_8FEF+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_8FE3 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_8FE3 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8F9D - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_8FA6 -; --------------------------------------------------------------------------- - -loc_8F9D: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_8FA6: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_8FE3: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_8F3E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8FEF proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_9005 - jmp loc_93F2 -; --------------------------------------------------------------------------- - -loc_9005: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_905E - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_905E: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_9075 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_93F4 -; --------------------------------------------------------------------------- - -loc_9075: - cmp [bp+var_6], 0 - jg short loc_90A7 - jnz short loc_9083 - cmp [bp+var_8], 0 - ja short loc_90A7 - -loc_9083: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_9095 - jmp loc_93F2 -; --------------------------------------------------------------------------- - -loc_9095: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_920C -; --------------------------------------------------------------------------- - -loc_90A7: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_90B3: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_90C6 - sub word ptr [bp+var_C], 0Ah - jmp loc_920C -; --------------------------------------------------------------------------- - -loc_90C6: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_90EE - jmp loc_91B8 -; --------------------------------------------------------------------------- - -loc_90EE: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_9112 - jmp loc_91B8 -; --------------------------------------------------------------------------- - -loc_9112: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_911F - jmp loc_91B8 -; --------------------------------------------------------------------------- - -loc_911F: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_912C - jmp loc_91B8 -; --------------------------------------------------------------------------- - -loc_912C: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_9145 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_9153 -; --------------------------------------------------------------------------- - -loc_9145: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_9153: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_917B - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_9184 -; --------------------------------------------------------------------------- - -loc_917B: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_9184: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_9195 - add word ptr [bp+var_1C], 4 - -loc_9195: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_8F3E - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_91B8: - ; sub_8FEF+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_91DD - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_91DD: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_91FB - jnz short loc_920C - cmp ax, [bp+var_8] - jnb short loc_920C - -loc_91FB: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_90B3 -; --------------------------------------------------------------------------- - -loc_920C: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_923B - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_9249 -; --------------------------------------------------------------------------- - -loc_923B: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_9249: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_9255 - jmp loc_92DF -; --------------------------------------------------------------------------- - -loc_9255: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_9287 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_9290 -; --------------------------------------------------------------------------- - -loc_9287: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_9290: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_92AE - add [bp+var_18], 4 - -loc_92AE: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_92DF - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_92DF - test byte ptr [bp+var_16+2], 8 - jz short loc_92DF - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8F3E - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_92DF: - ; sub_8FEF+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_932D - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_930D - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8E3C - add sp, 0Eh - jmp short loc_932D -; --------------------------------------------------------------------------- - -loc_930D: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8B71 - add sp, 10h - -loc_932D: - ; sub_8FEF+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_933B - jmp loc_93D9 -; --------------------------------------------------------------------------- - -loc_933B: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_934A - sub word ptr [bp+driver], 4 - -loc_934A: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9399 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_9386 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_93B8 -; --------------------------------------------------------------------------- - -loc_9386: - test byte ptr [bp+var_16+2], 80h - jz short loc_93D9 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_93D7 -; --------------------------------------------------------------------------- - -loc_9399: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_93C6 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_93B8: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_73A8 - add sp, 0Ah - jmp short loc_93D9 -; --------------------------------------------------------------------------- - -loc_93C6: - test byte ptr [bp+var_16+2], 80h - jz short loc_93D9 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_93D7: - pop cx - pop cx - -loc_93D9: - ; sub_8FEF+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_93F2 - jmp loc_920C -; --------------------------------------------------------------------------- - -loc_93F2: - xor ax, ax - -loc_93F4: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8FEF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_943D - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 19A3h - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_9442 - -loc_943D: - mov ax, 0FFFFh - jmp short loc_9449 -; --------------------------------------------------------------------------- - -loc_9442: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9449: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_94A5 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_94E3 - -loc_94A5: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 9A81h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 9A63h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_94E3: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_952E - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 9A81h - test dl, 1 - jz short loc_952E - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_952E: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_69A4 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_9592 - xor ax, ax - jmp short loc_95EB -; --------------------------------------------------------------------------- - -loc_9592: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_95A4 - mov ax, 1 - jmp short loc_95EB -; --------------------------------------------------------------------------- - -loc_95A4: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_95E9 - mov ax, 1 - jmp short loc_95EB -; --------------------------------------------------------------------------- - -loc_95E9: - xor ax, ax - -loc_95EB: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_697F - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_964D - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 401Ah - push ax ; src - push cs ; int - mov ax, 9A4Dh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_964D: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_968E proc near - ; sub_968E+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_96C9 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_96D3 - -loc_96C9: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_96DA - -loc_96D3: - xor dx, dx - xor ax, ax - jmp loc_98CE -; --------------------------------------------------------------------------- - -loc_96DA: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_96EC: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_96F2: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_970D - jmp loc_9896 -; --------------------------------------------------------------------------- - -loc_970D: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_971A - jmp loc_988F -; --------------------------------------------------------------------------- - -loc_971A: - cmp [bp+arg_1A], 0 - jz short loc_9734 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9734 - mov ax, 1 - jmp short loc_9736 -; --------------------------------------------------------------------------- - -loc_9734: - xor ax, ax - -loc_9736: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_977D - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_977D: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_97FF - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_97A1 - jmp loc_988F -; --------------------------------------------------------------------------- - -loc_97A1: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_968E - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_97E8 - jmp loc_988F -; --------------------------------------------------------------------------- - -loc_97E8: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_985C -; --------------------------------------------------------------------------- - -loc_97FF: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9820 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_988F - cmp ax, word ptr [bp+var_14] - jnz short loc_988F - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_98CE -; --------------------------------------------------------------------------- - -loc_9820: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_985C - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_968E - add sp, 20h - or ax, dx - jz short loc_988F - -loc_985C: - ; sub_968E+198j - cmp [bp+var_E], 0 - jz short loc_987A - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_987A - cmp ax, [bp+var_C] - jnz short loc_987A - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_988F -; --------------------------------------------------------------------------- - -loc_987A: - ; sub_968E+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_988F: - ; sub_968E+110j ... - add word ptr [bp+var_4], 8 - jmp loc_96F2 -; --------------------------------------------------------------------------- - -loc_9896: - cmp [bp+var_6], 0 - jnz short loc_98AF - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_96EC -; --------------------------------------------------------------------------- - -loc_98AF: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_98C8 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_98C8: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_98CE: - ; sub_968E+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_968E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_98FF - jmp loc_9A03 -; --------------------------------------------------------------------------- - -loc_98FF: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_9955 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jz short loc_995E - -loc_9955: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_9A33 -; --------------------------------------------------------------------------- - -loc_995E: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_69A4 - add sp, 8 - or ax, ax - jnz short loc_99B7 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_968E - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_99FB - -loc_99B7: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_968E - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_9A03 - cmp [bp+var_16], 0 - jz short loc_9A03 - -loc_99FB: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_9A33 -; --------------------------------------------------------------------------- - -loc_9A03: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_9A2F - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 401Bh - push ax ; src - push cs ; int - mov ax, 9A39h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9A2F: - xor dx, dx - xor ax, ax - -loc_9A33: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 85h, 9Ah - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 85h, 9Ah - dw seg seg000 - db 4 dup(0), 0FEh, 94h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 0FEh, 94h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -22991,8 +16304,7 @@ word_10CD4 dw 0 word_10CD6 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_10CF0 dw 1 word_10CF2 dw 0 @@ -25523,9 +18835,7 @@ word_1334A dw ? db ? ; db ? ; include libs/BorlandC/signal[bss].asm -dword_13352 dd ? -dword_13356 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? diff --git a/th05_main.asm b/th05_main.asm index 1b0eb7d4..30390996 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -6428,6644 +6428,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7083 proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_7097 - mov dx, ds - mov ax, 2564h - jmp short loc_70A4 -; --------------------------------------------------------------------------- - -loc_7097: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_70A4: - pop di - pop si - pop bp - retf -sub_7083 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_70A8 proc far - ; sub_7145+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_70C0 - cmp ax, word ptr [bp+arg_4] - jz short loc_713C - -loc_70C0: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_7134 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_7134 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_7134 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7116: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_7138 - -loc_7134: - xor ax, ax - jmp short loc_713F -; --------------------------------------------------------------------------- - -loc_7138: - or dx, dx - jnz short loc_7116 - -loc_713C: - mov ax, 1 - -loc_713F: - pop di - pop si - mov sp, bp - pop bp - retf -sub_70A8 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7145 proc near - ; sub_7145+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7160: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_71F4 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_71ED - cmp [bp+arg_C], 0 - jz short loc_719C - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_719C - mov ax, 1 - jmp short loc_719E -; --------------------------------------------------------------------------- - -loc_719C: - xor ax, ax - -loc_719E: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jz short loc_71C1 - cmp [bp+var_6], 0 - jz short loc_71C1 - jmp loc_7284 -; --------------------------------------------------------------------------- - -loc_71C1: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_71ED - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_7145 - add sp, 0Eh - or ax, ax - jz short loc_71ED - jmp loc_7284 -; --------------------------------------------------------------------------- - -loc_71ED: - add word ptr [bp+var_4], 8 - jmp loc_7160 -; --------------------------------------------------------------------------- - -loc_71F4: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_7207: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_7290 - cmp [bp+arg_C], 0 - jz short loc_7239 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_7239 - mov ax, 1 - jmp short loc_723B -; --------------------------------------------------------------------------- - -loc_7239: - xor ax, ax - -loc_723B: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jz short loc_725B - cmp [bp+var_6], 0 - jnz short loc_7284 - -loc_725B: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_7289 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_7145 - add sp, 0Eh - or ax, ax - jz short loc_7289 - -loc_7284: - mov ax, 1 - jmp short loc_7292 -; --------------------------------------------------------------------------- - -loc_7289: - ; sub_7145+13Dj - add word ptr [bp+var_4], 8 - jmp loc_7207 -; --------------------------------------------------------------------------- - -loc_7290: - xor ax, ax - -loc_7292: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7145 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7298 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_72A3: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_72B6 - cmp ax, word ptr [bp+arg_4] - jnz short loc_72B6 - jmp loc_73CB -; --------------------------------------------------------------------------- - -loc_72B6: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_7346 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_72E9 - jmp loc_738C -; --------------------------------------------------------------------------- - -loc_72E9: - or cx, cx - jz short loc_72F0 - jmp loc_7404 -; --------------------------------------------------------------------------- - -loc_72F0: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_7326 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_7314 - jmp loc_7404 -; --------------------------------------------------------------------------- - -loc_7314: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_738C - -loc_7326: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_733A - jmp loc_7404 -; --------------------------------------------------------------------------- - -loc_733A: - test byte ptr [bp+var_2+1], 10h - jnz short loc_7343 - jmp loc_7404 -; --------------------------------------------------------------------------- - -loc_7343: - jmp loc_73CB -; --------------------------------------------------------------------------- - -loc_7346: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_73B4 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_736B - cmp ax, es:[bx+0Ah] - jz short loc_738C - -loc_736B: - or cx, cx - jz short loc_7372 - jmp loc_7404 -; --------------------------------------------------------------------------- - -loc_7372: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_7404 - -loc_738C: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_72A3 -; --------------------------------------------------------------------------- - -loc_73B4: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jz short loc_73D0 - -loc_73CB: - ; sub_7298:loc_7343j - mov ax, 1 - jmp short loc_7406 -; --------------------------------------------------------------------------- - -loc_73D0: - test byte ptr [bp+var_2], 2 - jz short loc_7404 - test byte ptr [bp+var_4], 1 - jz short loc_7404 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_7404 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_7145 - add sp, 0Eh - jmp short loc_7406 -; --------------------------------------------------------------------------- - -loc_7404: - xor ax, ax - -loc_7406: - ; sub_7298+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_7298 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_740C proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_745C - cmp [bp+arg_0], 80h ; '€' - ja short loc_743E - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_7443 - -loc_743E: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_7443: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_7462 -; --------------------------------------------------------------------------- - -loc_745C: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_7462: - pop di - pop si - mov sp, bp - pop bp - retf -sub_740C endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_7490 - cmp ax, [bp+6] - jnz short loc_7490 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_749D -; --------------------------------------------------------------------------- - -loc_7490: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_749D: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_74A1 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_7298 - add sp, 0Eh - or ax, ax - jz short loc_74CB - jmp loc_7567 -; --------------------------------------------------------------------------- - -loc_74CB: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_755B - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_7298 - add sp, 0Eh - or ax, ax - jnz short loc_7567 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_759E - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_7298 - add sp, 0Eh - or ax, ax - jnz short loc_7567 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_759E - -loc_755B: - test byte ptr [bp+var_4], 10h - jz short loc_759E - test [bp+arg_C], 1 - jz short loc_756C - -loc_7567: - mov ax, 1 - jmp short loc_75A0 -; --------------------------------------------------------------------------- - -loc_756C: - test byte ptr [bp+var_2], 10h - jz short loc_759E - test byte ptr [bp+var_2+1], 20h - jz short loc_757E - test byte ptr [bp+var_4+1], 20h - jz short loc_759E - -loc_757E: - test byte ptr [bp+var_4], 40h - jz short loc_759E - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_759A - mov ax, 1 - jmp short loc_759C -; --------------------------------------------------------------------------- - -loc_759A: - xor ax, ax - -loc_759C: - jmp short loc_75A0 -; --------------------------------------------------------------------------- - -loc_759E: - xor ax, ax - -loc_75A0: - ; sub_74A1:loc_759Cj - pop di - pop si - mov sp, bp - pop bp - retn -sub_74A1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_75A6 proc near - ; sub_8877+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_75D1 - or [bp+var_4], 2 - -loc_75D1: - test byte ptr [bp+arg_C], 2 - jz short loc_75E5 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_75E5 - or [bp+var_4], 20h - -loc_75E5: - test byte ptr [bp+arg_C], 20h - jz short loc_75EF - or [bp+var_4], 8 - -loc_75EF: - test byte ptr [bp+arg_C], 80h - jz short loc_75F9 - or [bp+var_4], 10h - -loc_75F9: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_7602 - jmp loc_7787 -; --------------------------------------------------------------------------- - -loc_7602: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_760D - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_760D: - add bx, bx - jmp cs:off_78C4[bx] - -loc_7614: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7626: - ; sub_75A6+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7638: - ; sub_75A6+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_765E -; --------------------------------------------------------------------------- - -loc_764C: - ; sub_75A6+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_765E: - add sp, 0Ah - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7664: - ; sub_75A6+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7673: - ; sub_75A6+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7682: - ; sub_75A6+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_76A8 -; --------------------------------------------------------------------------- - -loc_7696: - ; sub_75A6+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_76A8: - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_76AB: - ; sub_75A6+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_76BB: - ; sub_75A6+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_76C3: - push bx - pop bx - call [bp+arg_8] - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_76CB: - ; sub_75A6+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_76D9: - call word ptr [bp+arg_8] - jmp short loc_76EF -; --------------------------------------------------------------------------- - -loc_76DE: - ; sub_75A6+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_76EC: - call [bp+arg_8] - -loc_76EF: - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_76F2: - ; sub_75A6+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_770C -; --------------------------------------------------------------------------- - -loc_7700: - ; sub_75A6+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_7709: - call [bp+arg_8] - -loc_770C: - ; sub_75A6+1FCj - pop cx - pop cx - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7711: - ; sub_75A6+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7728: - ; sub_75A6+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_773F: - ; sub_75A6+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7748: - call word ptr [bp+arg_8] - jmp short loc_7759 -; --------------------------------------------------------------------------- - -loc_774D: - ; sub_75A6+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_7756: - call [bp+arg_8] - -loc_7759: - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_775C: - ; sub_75A6+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7770: - ; sub_75A6+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7784: - ; sub_75A6+1EEj - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7787: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_7792 - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_7792: - add bx, bx - jmp cs:off_7894[bx] - -loc_7799: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_770C -; --------------------------------------------------------------------------- - -loc_77A5: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7709 -; --------------------------------------------------------------------------- - -loc_77AE: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_77CE -; --------------------------------------------------------------------------- - -loc_77BF: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_77CE: - add sp, 8 - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_77D4: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7748 -; --------------------------------------------------------------------------- - -loc_77DD: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_7756 -; --------------------------------------------------------------------------- - -loc_77E6: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_788D -; --------------------------------------------------------------------------- - -loc_77F4: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_76C3 -; --------------------------------------------------------------------------- - -loc_77FD: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_76D9 -; --------------------------------------------------------------------------- - -loc_780C: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_76EC -; --------------------------------------------------------------------------- - -loc_781B: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_7827: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_7833: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_7845: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_7857: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_7862: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_786D: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_788D -; --------------------------------------------------------------------------- - -loc_787D: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_788D: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_75A6 endp - -; --------------------------------------------------------------------------- -off_7894 dw offset loc_7799 - dw offset loc_77A5 - dw offset loc_77AE - dw offset loc_77BF - dw offset loc_77D4 - dw offset loc_77DD - dw offset loc_77FD - dw offset loc_780C - dw offset loc_77E6 - dw offset loc_77F4 - dw offset loc_77FD - dw offset loc_780C - dw offset loc_788D - dw offset loc_788D - dw offset loc_788D - dw offset loc_788D - dw offset loc_781B - dw offset loc_7827 - dw offset loc_7833 - dw offset loc_7845 - dw offset loc_7857 - dw offset loc_7862 - dw offset loc_786D - dw offset loc_787D -off_78C4 dw offset loc_7614 - dw offset loc_7626 - dw offset loc_7638 - dw offset loc_764C - dw offset loc_7664 - dw offset loc_7673 - dw offset loc_7682 - dw offset loc_7696 - dw offset loc_76AB - dw offset loc_76BB - dw offset loc_76CB - dw offset loc_76DE - dw offset loc_7784 - dw offset loc_7784 - dw offset loc_7784 - dw offset loc_7784 - dw offset loc_76F2 - dw offset loc_7700 - dw offset loc_7711 - dw offset loc_7728 - dw offset loc_773F - dw offset loc_774D - dw offset loc_775C - dw offset loc_7770 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_78F4 proc near - ; sub_8583+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_7907 - mov ax, 2 - jmp short loc_7909 -; --------------------------------------------------------------------------- - -loc_7907: - xor ax, ax - -loc_7909: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_792F - or [bp+var_6], 2 - -loc_792F: - test byte ptr [bp+arg_8], 2 - jz short loc_7943 - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_7943 - or [bp+var_6], 20h - -loc_7943: - test byte ptr [bp+arg_8], 20h - jz short loc_794D - or [bp+var_6], 8 - -loc_794D: - test byte ptr [bp+arg_8], 80h - jz short loc_7957 - or [bp+var_6], 10h - -loc_7957: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_7962 - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_7962: - add bx, bx - jmp cs:off_7A7C[bx] - -loc_7969: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop cx - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_7977: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_7985: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - add sp, 6 - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_7997: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_79A9: - push [bp+var_2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7A0F -; --------------------------------------------------------------------------- - -loc_79B4: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_7A0C -; --------------------------------------------------------------------------- - -loc_79BC: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_79D6 -; --------------------------------------------------------------------------- - -loc_79CA: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_79D6: - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_79D9: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_79E7: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_7A75 -; --------------------------------------------------------------------------- - -loc_79F5: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7A0F -; --------------------------------------------------------------------------- - -loc_7A03: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_7A0C: - call [bp+arg_4] - -loc_7A0F: - ; sub_78F4+10Dj - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A11: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A1D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A29: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - pop ds - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A37: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A45: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A50: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A5B: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - ; Hack - db 0ffh - db 056h - db 008h - pop ds - jmp short loc_7A75 -; --------------------------------------------------------------------------- - -loc_7A68: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_7A75: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_78F4 endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7A7C dw offset loc_7969 - dw offset loc_7977 - dw offset loc_7985 - dw offset loc_7997 - dw offset loc_79A9 - dw offset loc_79B4 - dw offset loc_79BC - dw offset loc_79CA - dw offset loc_79D9 - dw offset loc_79E7 - dw offset loc_79F5 - dw offset loc_7A03 - dw offset loc_7A75 - dw offset loc_7A75 - dw offset loc_7A75 - dw offset loc_7A75 - dw offset loc_7A11 - dw offset loc_7A1D - dw offset loc_7A29 - dw offset loc_7A37 - dw offset loc_7A45 - dw offset loc_7A50 - dw offset loc_7A5B - dw offset loc_7A68 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7AAC proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7AD7 - or [bp+var_4], 2 - -loc_7AD7: - test byte ptr [bp+arg_8], 2 - jz short loc_7AE1 - or [bp+var_4], 4 - -loc_7AE1: - test byte ptr [bp+arg_8], 20h - jz short loc_7AEB - or [bp+var_4], 8 - -loc_7AEB: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_7B5E - add bx, bx - jmp cs:off_7B65[bx] - -loc_7AFA: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - pop cx - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B03: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B0C: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7B20 -; --------------------------------------------------------------------------- - -loc_7B17: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7B20: - pop cx - pop cx - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B24: - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7B32 -; --------------------------------------------------------------------------- - -loc_7B2C: - push [bp+arg_0] - call [bp+arg_4] - -loc_7B32: - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B34: - mov bx, [bp+arg_0] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B3E: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_7B5E -; --------------------------------------------------------------------------- - -loc_7B48: - push [bp+arg_2] - push [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 008h - jmp short loc_7B5C -; --------------------------------------------------------------------------- - -loc_7B53: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7B5C: - jmp short $+2 - -loc_7B5E: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_7AAC endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_7B65 dw offset loc_7AFA - dw offset loc_7B03 - dw offset loc_7B0C - dw offset loc_7B17 - dw offset loc_7B24 - dw offset loc_7B2C - dw offset loc_7B48 - dw offset loc_7B53 - dw offset loc_7B34 - dw offset loc_7B3E - dw offset loc_7B48 - dw offset loc_7B53 - db 4 dup(0), 3Bh, 7Eh - dw seg seg000 - db 14h dup(0), 94h, 7Eh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 7Dh, 7Bh - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 95h, 7Bh - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_7BCB(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_7BCB proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 7BADh - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_7C57 -; --------------------------------------------------------------------------- - -loc_7C34: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_7C54 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_7C54: - inc word ptr [bp+var_34] - -loc_7C57: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_7C34 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_7CB4 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_7CB6 -; --------------------------------------------------------------------------- - -loc_7CB4: - xor ax, ax - -loc_7CB6: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_7CD0 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_7CD0: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_740C - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 7468h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_7E5A - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_75A6 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_7E45 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7E45: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7E5A: - cmp [bp+arg_1E], 0 - jnz short loc_7E9E - test byte ptr [bp+var_2C], 2 - jz short loc_7E9E - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_78F4 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7E9E -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7E9E: - ; sub_7BCB+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7BCB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_7BCB - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_7F8E - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_7F8E: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7FDA - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_7FE3 -; --------------------------------------------------------------------------- - -loc_7FDA: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_7FE3: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_7BCB - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7FFD proc far - push si - push di - pop di - pop si - retf -sub_7FFD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8002 proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_801C - inc [bp+var_4] - -loc_801C: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_7FFD - jmp short loc_806A -; --------------------------------------------------------------------------- - -loc_8029: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_8054 - mov ax, dx - jmp short loc_8088 -; --------------------------------------------------------------------------- - -loc_8054: - cmp [bp+var_4], 0 - jz short loc_8061 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_8061: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_806A: - cmp [bp+var_2], 0FFFFh - jz short loc_8078 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_8029 - -loc_8078: - cmp [bp+var_4], 0 - jz short loc_8085 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_8085: - mov ax, 1 - -loc_8088: - pop di - pop si - mov sp, bp - pop bp - retf -sub_8002 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_80B9 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_80B9: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_8002 - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_80D5 proc far - push si - push di - pop di - pop si - retf -sub_80D5 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 854C SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_80D5 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_8103 - jmp loc_81B9 -; --------------------------------------------------------------------------- - -loc_8103: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_8202 -; --------------------------------------------------------------------------- - -loc_81B9: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_8202: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_8233 - cmp [bp+arg_0], 0FACEh - jnz short loc_8233 - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_8241 -; --------------------------------------------------------------------------- - -loc_8233: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_8241: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_8312 - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_8312: - cmp [bp+arg_A], 0 - jb short loc_832A - ja short loc_8320 - cmp [bp+arg_8], 0Fh - jbe short loc_832A - -loc_8320: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_832A: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_8360 -; --------------------------------------------------------------------------- - -loc_8337: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_8360: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_8337 - jnz short loc_8371 - cmp ax, [bp+arg_8] - jb short loc_8337 - -loc_8371: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_8002 - add sp, 8 - or ax, ax - jnz short loc_83BC - test byte ptr [bp+arg_4], 1 - jz short loc_83DC - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_8371 -; --------------------------------------------------------------------------- - -loc_83BC: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_8002 - add sp, 8 - or ax, ax - jz short loc_83DC - jmp loc_8547 -; --------------------------------------------------------------------------- - -loc_83DC: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_83E6 - jmp loc_84C6 -; --------------------------------------------------------------------------- - -loc_83E6: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_854C -; --------------------------------------------------------------------------- - -loc_84C6: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_854C -; --------------------------------------------------------------------------- - -loc_8547: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_854C: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 0BBh, 85h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 59h, 85h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8583 proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8571h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_78F4 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_85C5 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_85C5: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_8583 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_85D3 proc near - ; sub_8B1D+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_864E - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_8646 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_8583 - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_8646: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_864E: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_86A5 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_869D - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_869D - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_8583 - add sp, 0Ah - -loc_869D: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_86A5: - pop di - pop si - mov sp, bp - pop bp - retn -sub_85D3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_7BCB+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_85D3 - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8728 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_8730: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_874D - xor ax, ax - jmp loc_87EE -; --------------------------------------------------------------------------- - -loc_874D: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_8779 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_8779: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_87D2 - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_87E7 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_87E7 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_8728 - add sp, 0Ch - or ax, ax - jz short loc_87E7 - -loc_87D2: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_87EE -; --------------------------------------------------------------------------- - -loc_87E7: - add word ptr [bp+arg_0], 8 - jmp loc_8730 -; --------------------------------------------------------------------------- - -loc_87EE: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8728 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_87F4 proc far - ; sub_8877+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_8865 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8728 - add sp, 0Ch - or ax, ax - jnz short loc_8865 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_8728 - add sp, 0Ch - or ax, ax - jz short loc_886D - -loc_8865: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_8871 -; --------------------------------------------------------------------------- - -loc_886D: - xor dx, dx - xor ax, ax - -loc_8871: - pop di - pop si - mov sp, bp - pop bp - retf -sub_87F4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8877 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_88A6 - jmp loc_8B17 -; --------------------------------------------------------------------------- - -loc_88A6: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_88B3 - jmp loc_8B17 -; --------------------------------------------------------------------------- - -loc_88B3: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_8927 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_8927: - test cl, 10h - jz short loc_894F - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_894F - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_8A7A -; --------------------------------------------------------------------------- - -loc_894F: - test dl, 1 - jnz short loc_8957 - jmp loc_89FB -; --------------------------------------------------------------------------- - -loc_8957: - test cl, 30h - jnz short loc_895F - jmp loc_89FB -; --------------------------------------------------------------------------- - -loc_895F: - test cl, 20h - jz short loc_8966 - jmp short loc_8989 -; --------------------------------------------------------------------------- - -loc_8966: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_8990 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_8989: - mov [bp+var_14], 1 - jmp short $+2 - -loc_8990: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_89F1 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_87F4 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_89EC - cmp ax, [bp+var_18] - jz short loc_89F1 - -loc_89EC: - mov [bp+var_14], 1 - -loc_89F1: - ; sub_8877+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_8AC5 -; --------------------------------------------------------------------------- - -loc_89FB: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_8A81 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_8A4A - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_87F4 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_8A4A: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_8AC8 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_75A6 - add sp, 0Eh - -loc_8A7A: - ; sub_8877+227j - mov [bp+var_14], 1 - jmp short loc_8AE1 -; --------------------------------------------------------------------------- - -loc_8A81: - test cl, 20h - jz short loc_8AA0 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_8A7A -; --------------------------------------------------------------------------- - -loc_8AA0: - test cl, 10h - jz short loc_8AC8 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_8AC8 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_8AC5: - push ax - jmp short loc_8AD1 -; --------------------------------------------------------------------------- - -loc_8AC8: - ; sub_8877+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_8AD1: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_8AE1: - cmp [bp+var_14], 0 - jnz short loc_8B17 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8B0F - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_8583 - add sp, 0Ah - -loc_8B0F: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_8B17: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8877 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B1D proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_8CC2 -; --------------------------------------------------------------------------- - -loc_8B75: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_8BB0 - jmp loc_8CBF -; --------------------------------------------------------------------------- - -loc_8BB0: - add bx, bx - jmp cs:off_8CDC[bx] - -loc_8BB7: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_2D11E+2, dx - mov word ptr dword_2D11E, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_2D11E - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_8CBF -; --------------------------------------------------------------------------- - -loc_8BF2: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_8C21 -; --------------------------------------------------------------------------- - -loc_8C01: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_8C1B - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_8C1B - jmp short loc_8C3B -; --------------------------------------------------------------------------- - -loc_8C1B: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_8C21: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_8C01 - -loc_8C3B: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_85D3 - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_8CBF -; --------------------------------------------------------------------------- - -loc_8C74: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_96F3 - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_8CBF: - mov ax, [bp+var_8] - -loc_8CC2: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_8CD6 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_8CD6 - jmp loc_8B75 -; --------------------------------------------------------------------------- - -loc_8CD6: - ; sub_8B1D+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_8B1D endp - -; --------------------------------------------------------------------------- -off_8CDC dw offset loc_8BB7 - dw offset loc_8CBF - dw offset loc_8CBF - dw offset loc_8CBF - dw offset loc_8BF2 - dw offset loc_8C74 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8B1D - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8B1D - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8D32 proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_8DA0 -; --------------------------------------------------------------------------- - -loc_8D4B: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_8D94 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_74A1 - add sp, 10h - or ax, ax - jz short loc_8D9C - -loc_8D94: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_8DB0 -; --------------------------------------------------------------------------- - -loc_8D9C: - add word ptr [bp+var_4], 10h - -loc_8DA0: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8D4B - xor dx, dx - xor ax, ax - -loc_8DB0: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8D32 endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8E4A - jmp loc_8EF2 -; --------------------------------------------------------------------------- - -loc_8E4A: - xor ax, ax - push ax - push [bp+var_4] - call sub_8B1D - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_8E63 - jmp loc_9125 -; --------------------------------------------------------------------------- - -loc_8E63: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8E6D - jmp loc_9125 -; --------------------------------------------------------------------------- - -loc_8E6D: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_8E88 - jmp loc_9125 -; --------------------------------------------------------------------------- - -loc_8E88: - jmp short loc_8EC6 -; --------------------------------------------------------------------------- - -loc_8E8A: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_74A1 - add sp, 10h - or ax, ax - jz short loc_8EC2 - jmp loc_9125 -; --------------------------------------------------------------------------- - -loc_8EC2: - add word ptr [bp+var_20], 4 - -loc_8EC6: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8E8A - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_9125 -; --------------------------------------------------------------------------- - -loc_8EF2: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_9119 -; --------------------------------------------------------------------------- - -loc_8EFC: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8F2D - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_8F2D: - add bx, bx - jmp cs:off_912E[bx] - -loc_8F34: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_8F42 - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_8F42: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8F4C - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_8F4C: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_8D32 - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_8F86 - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_8F86: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_8FBA: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8B1D - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_900C - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_8877 - add sp, 10h - -loc_900C: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_9025: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_903A - cmp word ptr ss:[bx], 0FACEh - jnz short loc_903A - jmp loc_9116 -; --------------------------------------------------------------------------- - -loc_903A: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_2D122+2, dx - mov word ptr dword_2D122, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_2D122 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_90D1 -; --------------------------------------------------------------------------- - -loc_909C: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_90B0 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_90B0 - jmp short loc_9116 -; --------------------------------------------------------------------------- - -loc_90B0: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_90D1: - cmp [bp+var_38], 0 - jge short loc_90EF - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_90EB - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_90EB: - xor ax, ax - jmp short loc_9128 -; --------------------------------------------------------------------------- - -loc_90EF: - cmp [bp+var_38], 0 - jnz short loc_90F7 - jmp short loc_9116 -; --------------------------------------------------------------------------- - -loc_90F7: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_8FBA -; --------------------------------------------------------------------------- - -loc_9116: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_9119: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_9125 - jmp loc_8EFC -; --------------------------------------------------------------------------- - -loc_9125: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_9128: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_912E dw offset loc_9116 - dw offset loc_9025 - dw offset loc_909C - dw offset loc_8F34 - dw offset loc_9116 - dw offset loc_9116 - db 4 dup(0), 0CDh, 91h - dw seg seg000 - db 14h dup(0), 0DDh, 91h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 52h, 91h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 3Ah, 91h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9188 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 916Ah - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_78F4 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_91D6 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_91D6: - mov [bp+var_12], 0 - jmp short loc_91E6 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_91E6: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_9188 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_91F4 proc far - ; sub_9275+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_9263 -; --------------------------------------------------------------------------- - -loc_9201: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_9229 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9229: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_9263 - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_9275 - add sp, 10h - xor cx, cx - -loc_9263: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_9201 - pop di - pop si - mov sp, bp - pop bp - retf -sub_91F4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9275 proc far - ; sub_9275+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_928C - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_9293 -; --------------------------------------------------------------------------- - -loc_928C: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_9293: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_92B5 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_92CE - jnz short loc_92B5 - cmp ax, [bp+var_1C] - jb short loc_92CE - -loc_92B5: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_9188 - add sp, 0Ah - jmp loc_953A -; --------------------------------------------------------------------------- - -loc_92CE: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_9367 - -loc_92F9: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_9367 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_9361 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_935A - jnz short loc_9330 - cmp bx, [bp+var_1C] - jb short loc_935A - -loc_9330: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_934A: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_91F4 - add sp, 12h - jmp loc_953A -; --------------------------------------------------------------------------- - -loc_935A: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_9361: - add word ptr [bp+var_10], 8 - jmp short loc_92F9 -; --------------------------------------------------------------------------- - -loc_9367: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_9380: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_93F6 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_93F0 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_93E9 - jnz short loc_93B7 - cmp bx, [bp+var_1C] - jb short loc_93E9 - -loc_93B7: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_91F4 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_93E6 - jmp loc_953A -; --------------------------------------------------------------------------- - -loc_93E6: - jmp loc_951A -; --------------------------------------------------------------------------- - -loc_93E9: - ; sub_9275+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_93F0: - add word ptr [bp+var_8], 8 - jmp short loc_9380 -; --------------------------------------------------------------------------- - -loc_93F6: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_940F: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_9449 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_9449: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_946D - jb short loc_9463 - cmp bx, [bp+var_1C] - jnb short loc_946D - -loc_9463: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_9533 -; --------------------------------------------------------------------------- - -loc_946D: - ; sub_9275+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_94B9 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_9540 - add sp, 0Eh - jmp short loc_94D9 -; --------------------------------------------------------------------------- - -loc_94B9: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_9275 - add sp, 10h - -loc_94D9: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_94F2 - jmp loc_946D -; --------------------------------------------------------------------------- - -loc_94F2: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_91F4 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_953A - -loc_951A: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_934A -; --------------------------------------------------------------------------- - -loc_9533: - add word ptr [bp+var_18], 6 - jmp loc_940F -; --------------------------------------------------------------------------- - -loc_953A: - pop di - pop si - mov sp, bp - pop bp - retf -sub_9275 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9540 proc far - ; sub_96F3+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_959A - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_959A: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_962A - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_9617 -; --------------------------------------------------------------------------- - -loc_95F8: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_9617: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_9275 - add sp, 10h - -loc_962A: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_95F8 - pop di - pop si - mov sp, bp - pop bp - retf -sub_9540 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9642 proc far - ; sub_96F3+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_96E7 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_96E7 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_96A1 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_96AA -; --------------------------------------------------------------------------- - -loc_96A1: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_96AA: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_96E7: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_9642 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_96F3 proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_9709 - jmp loc_9AF6 -; --------------------------------------------------------------------------- - -loc_9709: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_9762 - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_9762: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_9779 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_9AF8 -; --------------------------------------------------------------------------- - -loc_9779: - cmp [bp+var_6], 0 - jg short loc_97AB - jnz short loc_9787 - cmp [bp+var_8], 0 - ja short loc_97AB - -loc_9787: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_9799 - jmp loc_9AF6 -; --------------------------------------------------------------------------- - -loc_9799: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_9910 -; --------------------------------------------------------------------------- - -loc_97AB: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_97B7: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_97CA - sub word ptr [bp+var_C], 0Ah - jmp loc_9910 -; --------------------------------------------------------------------------- - -loc_97CA: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_97F2 - jmp loc_98BC -; --------------------------------------------------------------------------- - -loc_97F2: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_9816 - jmp loc_98BC -; --------------------------------------------------------------------------- - -loc_9816: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_9823 - jmp loc_98BC -; --------------------------------------------------------------------------- - -loc_9823: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_9830 - jmp loc_98BC -; --------------------------------------------------------------------------- - -loc_9830: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_9849 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_9857 -; --------------------------------------------------------------------------- - -loc_9849: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_9857: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_987F - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_9888 -; --------------------------------------------------------------------------- - -loc_987F: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_9888: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_9899 - add word ptr [bp+var_1C], 4 - -loc_9899: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_9642 - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_98BC: - ; sub_96F3+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_98E1 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_98E1: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_98FF - jnz short loc_9910 - cmp ax, [bp+var_8] - jnb short loc_9910 - -loc_98FF: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_97B7 -; --------------------------------------------------------------------------- - -loc_9910: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_993F - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_994D -; --------------------------------------------------------------------------- - -loc_993F: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_994D: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_9959 - jmp loc_99E3 -; --------------------------------------------------------------------------- - -loc_9959: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_998B - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_9994 -; --------------------------------------------------------------------------- - -loc_998B: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_9994: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_99B2 - add [bp+var_18], 4 - -loc_99B2: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_99E3 - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_99E3 - test byte ptr [bp+var_16+2], 8 - jz short loc_99E3 - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9642 - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_99E3: - ; sub_96F3+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_9A31 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9A11 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9540 - add sp, 0Eh - jmp short loc_9A31 -; --------------------------------------------------------------------------- - -loc_9A11: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_9275 - add sp, 10h - -loc_9A31: - ; sub_96F3+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_9A3F - jmp loc_9ADD -; --------------------------------------------------------------------------- - -loc_9A3F: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_9A4E - sub word ptr [bp+driver], 4 - -loc_9A4E: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9A9D - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_9A8A - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_9ABC -; --------------------------------------------------------------------------- - -loc_9A8A: - test byte ptr [bp+var_16+2], 80h - jz short loc_9ADD - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_9ADB -; --------------------------------------------------------------------------- - -loc_9A9D: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_9ACA - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_9ABC: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_7AAC - add sp, 0Ah - jmp short loc_9ADD -; --------------------------------------------------------------------------- - -loc_9ACA: - test byte ptr [bp+var_16+2], 80h - jz short loc_9ADD - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_9ADB: - pop cx - pop cx - -loc_9ADD: - ; sub_96F3+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_9AF6 - jmp loc_9910 -; --------------------------------------------------------------------------- - -loc_9AF6: - xor ax, ax - -loc_9AF8: - pop di - pop si - mov sp, bp - pop bp - retn -sub_96F3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_9B41 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 256Dh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_9B46 - -loc_9B41: - mov ax, 0FFFFh - jmp short loc_9B4D -; --------------------------------------------------------------------------- - -loc_9B46: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9B4D: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_9BA9 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_9BE7 - -loc_9BA9: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A185h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 0A167h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9BE7: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_9C32 - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 0A185h - test dl, 1 - jz short loc_9C32 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_9C32: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_70A8 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_9C96 - xor ax, ax - jmp short loc_9CEF -; --------------------------------------------------------------------------- - -loc_9C96: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_9CA8 - mov ax, 1 - jmp short loc_9CEF -; --------------------------------------------------------------------------- - -loc_9CA8: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_9CED - mov ax, 1 - jmp short loc_9CEF -; --------------------------------------------------------------------------- - -loc_9CED: - xor ax, ax - -loc_9CEF: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_7083 - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_9D51 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0C746h - push ax ; src - push cs ; int - mov ax, 0A151h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9D51: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_9D92 proc near - ; sub_9D92+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_9DCD - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_9DD7 - -loc_9DCD: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_9DDE - -loc_9DD7: - xor dx, dx - xor ax, ax - jmp loc_9FD2 -; --------------------------------------------------------------------------- - -loc_9DDE: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_9DF0: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9DF6: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_9E11 - jmp loc_9F9A -; --------------------------------------------------------------------------- - -loc_9E11: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_9E1E - jmp loc_9F93 -; --------------------------------------------------------------------------- - -loc_9E1E: - cmp [bp+arg_1A], 0 - jz short loc_9E38 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9E38 - mov ax, 1 - jmp short loc_9E3A -; --------------------------------------------------------------------------- - -loc_9E38: - xor ax, ax - -loc_9E3A: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_9E81 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_9E81: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_9F03 - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_9EA5 - jmp loc_9F93 -; --------------------------------------------------------------------------- - -loc_9EA5: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_9D92 - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_9EEC - jmp loc_9F93 -; --------------------------------------------------------------------------- - -loc_9EEC: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_9F60 -; --------------------------------------------------------------------------- - -loc_9F03: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9F24 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_9F93 - cmp ax, word ptr [bp+var_14] - jnz short loc_9F93 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_9FD2 -; --------------------------------------------------------------------------- - -loc_9F24: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_9F60 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_9D92 - add sp, 20h - or ax, dx - jz short loc_9F93 - -loc_9F60: - ; sub_9D92+198j - cmp [bp+var_E], 0 - jz short loc_9F7E - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_9F7E - cmp ax, [bp+var_C] - jnz short loc_9F7E - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_9F93 -; --------------------------------------------------------------------------- - -loc_9F7E: - ; sub_9D92+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_9F93: - ; sub_9D92+110j ... - add word ptr [bp+var_4], 8 - jmp loc_9DF6 -; --------------------------------------------------------------------------- - -loc_9F9A: - cmp [bp+var_6], 0 - jnz short loc_9FB3 - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_9DF0 -; --------------------------------------------------------------------------- - -loc_9FB3: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_9FCC - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_9FCC: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_9FD2: - ; sub_9D92+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_9D92 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_A003 - jmp loc_A107 -; --------------------------------------------------------------------------- - -loc_A003: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_A059 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jz short loc_A062 - -loc_A059: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_A137 -; --------------------------------------------------------------------------- - -loc_A062: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_70A8 - add sp, 8 - or ax, ax - jnz short loc_A0BB - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_9D92 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_A0FF - -loc_A0BB: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_9D92 - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_A107 - cmp [bp+var_16], 0 - jz short loc_A107 - -loc_A0FF: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_A137 -; --------------------------------------------------------------------------- - -loc_A107: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_A133 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0C747h - push ax ; src - push cs ; int - mov ax, 0A13Dh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_A133: - xor dx, dx - xor ax, ax - -loc_A137: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 89h, 0A1h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 89h, 0A1h - dw seg seg000 - db 4 dup(0), 2, 9Ch - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 2, 9Ch - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -38134,8 +31497,7 @@ word_22F3E dw 0 word_22F40 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_22F5A dw 1 word_22F5C dw 0 @@ -48541,9 +41903,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? ; include libs/BorlandC/signal[bss].asm -dword_2D11E dd ? -dword_2D122 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dd ? diff --git a/th05_maine.asm b/th05_maine.asm index 1b04149b..b4edac65 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -4870,6647 +4870,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_67AB proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_67BF - mov dx, ds - mov ax, 1CA6h - jmp short loc_67CC -; --------------------------------------------------------------------------- - -loc_67BF: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_67CC: - pop di - pop si - pop bp - retf -sub_67AB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_67D0 proc far - ; sub_686D+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_67E8 - cmp ax, word ptr [bp+arg_4] - jz short loc_6864 - -loc_67E8: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_685C - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_685C - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_685C - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_683E: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6860 - -loc_685C: - xor ax, ax - jmp short loc_6867 -; --------------------------------------------------------------------------- - -loc_6860: - or dx, dx - jnz short loc_683E - -loc_6864: - mov ax, 1 - -loc_6867: - pop di - pop si - mov sp, bp - pop bp - retf -sub_67D0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_686D proc near - ; sub_686D+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6888: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_691C - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_6915 - cmp [bp+arg_C], 0 - jz short loc_68C4 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_68C4 - mov ax, 1 - jmp short loc_68C6 -; --------------------------------------------------------------------------- - -loc_68C4: - xor ax, ax - -loc_68C6: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jz short loc_68E9 - cmp [bp+var_6], 0 - jz short loc_68E9 - jmp loc_69AC -; --------------------------------------------------------------------------- - -loc_68E9: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6915 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_686D - add sp, 0Eh - or ax, ax - jz short loc_6915 - jmp loc_69AC -; --------------------------------------------------------------------------- - -loc_6915: - add word ptr [bp+var_4], 8 - jmp loc_6888 -; --------------------------------------------------------------------------- - -loc_691C: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_692F: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_69B8 - cmp [bp+arg_C], 0 - jz short loc_6961 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6961 - mov ax, 1 - jmp short loc_6963 -; --------------------------------------------------------------------------- - -loc_6961: - xor ax, ax - -loc_6963: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jz short loc_6983 - cmp [bp+var_6], 0 - jnz short loc_69AC - -loc_6983: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_69B1 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_686D - add sp, 0Eh - or ax, ax - jz short loc_69B1 - -loc_69AC: - mov ax, 1 - jmp short loc_69BA -; --------------------------------------------------------------------------- - -loc_69B1: - ; sub_686D+13Dj - add word ptr [bp+var_4], 8 - jmp loc_692F -; --------------------------------------------------------------------------- - -loc_69B8: - xor ax, ax - -loc_69BA: - pop di - pop si - mov sp, bp - pop bp - retn -sub_686D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_69C0 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_69CB: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_69DE - cmp ax, word ptr [bp+arg_4] - jnz short loc_69DE - jmp loc_6AF3 -; --------------------------------------------------------------------------- - -loc_69DE: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_6A6E - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6A11 - jmp loc_6AB4 -; --------------------------------------------------------------------------- - -loc_6A11: - or cx, cx - jz short loc_6A18 - jmp loc_6B2C -; --------------------------------------------------------------------------- - -loc_6A18: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6A4E - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6A3C - jmp loc_6B2C -; --------------------------------------------------------------------------- - -loc_6A3C: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_6AB4 - -loc_6A4E: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6A62 - jmp loc_6B2C -; --------------------------------------------------------------------------- - -loc_6A62: - test byte ptr [bp+var_2+1], 10h - jnz short loc_6A6B - jmp loc_6B2C -; --------------------------------------------------------------------------- - -loc_6A6B: - jmp loc_6AF3 -; --------------------------------------------------------------------------- - -loc_6A6E: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_6ADC - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_6A93 - cmp ax, es:[bx+0Ah] - jz short loc_6AB4 - -loc_6A93: - or cx, cx - jz short loc_6A9A - jmp loc_6B2C -; --------------------------------------------------------------------------- - -loc_6A9A: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6B2C - -loc_6AB4: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_69CB -; --------------------------------------------------------------------------- - -loc_6ADC: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jz short loc_6AF8 - -loc_6AF3: - ; sub_69C0:loc_6A6Bj - mov ax, 1 - jmp short loc_6B2E -; --------------------------------------------------------------------------- - -loc_6AF8: - test byte ptr [bp+var_2], 2 - jz short loc_6B2C - test byte ptr [bp+var_4], 1 - jz short loc_6B2C - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6B2C - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_686D - add sp, 0Eh - jmp short loc_6B2E -; --------------------------------------------------------------------------- - -loc_6B2C: - xor ax, ax - -loc_6B2E: - ; sub_69C0+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_69C0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6B34 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - call _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_6B84 - cmp [bp+arg_0], 80h ; '€' - ja short loc_6B66 - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_6B6B - -loc_6B66: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_6B6B: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_6B8A -; --------------------------------------------------------------------------- - -loc_6B84: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_6B8A: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6B34 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_6BB8 - cmp ax, [bp+6] - jnz short loc_6BB8 - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_6BC5 -; --------------------------------------------------------------------------- - -loc_6BB8: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_6BC5: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6BC9 proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_69C0 - add sp, 0Eh - or ax, ax - jz short loc_6BF3 - jmp loc_6C8F -; --------------------------------------------------------------------------- - -loc_6BF3: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_6C83 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_69C0 - add sp, 0Eh - or ax, ax - jnz short loc_6C8F - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6CC6 - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_69C0 - add sp, 0Eh - or ax, ax - jnz short loc_6C8F - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6CC6 - -loc_6C83: - test byte ptr [bp+var_4], 10h - jz short loc_6CC6 - test [bp+arg_C], 1 - jz short loc_6C94 - -loc_6C8F: - mov ax, 1 - jmp short loc_6CC8 -; --------------------------------------------------------------------------- - -loc_6C94: - test byte ptr [bp+var_2], 10h - jz short loc_6CC6 - test byte ptr [bp+var_2+1], 20h - jz short loc_6CA6 - test byte ptr [bp+var_4+1], 20h - jz short loc_6CC6 - -loc_6CA6: - test byte ptr [bp+var_4], 40h - jz short loc_6CC6 - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_6CC2 - mov ax, 1 - jmp short loc_6CC4 -; --------------------------------------------------------------------------- - -loc_6CC2: - xor ax, ax - -loc_6CC4: - jmp short loc_6CC8 -; --------------------------------------------------------------------------- - -loc_6CC6: - xor ax, ax - -loc_6CC8: - ; sub_6BC9:loc_6CC4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_6BC9 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6CCE proc near - ; sub_7F9F+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6CF9 - or [bp+var_4], 2 - -loc_6CF9: - test byte ptr [bp+arg_C], 2 - jz short loc_6D0D - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6D0D - or [bp+var_4], 20h - -loc_6D0D: - test byte ptr [bp+arg_C], 20h - jz short loc_6D17 - or [bp+var_4], 8 - -loc_6D17: - test byte ptr [bp+arg_C], 80h - jz short loc_6D21 - or [bp+var_4], 10h - -loc_6D21: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_6D2A - jmp loc_6EAF -; --------------------------------------------------------------------------- - -loc_6D2A: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6D35 - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6D35: - add bx, bx - jmp cs:off_6FEC[bx] - -loc_6D3C: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6D4E: - ; sub_6CCE+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6D60: - ; sub_6CCE+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6D86 -; --------------------------------------------------------------------------- - -loc_6D74: - ; sub_6CCE+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6D86: - add sp, 0Ah - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6D8C: - ; sub_6CCE+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6D9B: - ; sub_6CCE+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6DAA: - ; sub_6CCE+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6DD0 -; --------------------------------------------------------------------------- - -loc_6DBE: - ; sub_6CCE+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6DD0: - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6DD3: - ; sub_6CCE+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6DE3: - ; sub_6CCE+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_6DEB: - push bx - pop bx - call [bp+arg_8] - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6DF3: - ; sub_6CCE+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6E01: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6E17 -; --------------------------------------------------------------------------- - -loc_6E06: - ; sub_6CCE+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6E14: - call [bp+arg_8] - -loc_6E17: - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E1A: - ; sub_6CCE+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6E34 -; --------------------------------------------------------------------------- - -loc_6E28: - ; sub_6CCE+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_6E31: - call [bp+arg_8] - -loc_6E34: - ; sub_6CCE+1FCj - pop cx - pop cx - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E39: - ; sub_6CCE+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - ; Hack - db 0ffh - db 056h - db 00ch - add sp, 6 - pop ds - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E50: - ; sub_6CCE+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E67: - ; sub_6CCE+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6E70: - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6E81 -; --------------------------------------------------------------------------- - -loc_6E75: - ; sub_6CCE+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6E7E: - call [bp+arg_8] - -loc_6E81: - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E84: - ; sub_6CCE+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6E98: - ; sub_6CCE+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6EAC: - ; sub_6CCE+1EEj - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6EAF: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6EBA - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6EBA: - add bx, bx - jmp cs:off_6FBC[bx] - -loc_6EC1: - push [bp+arg_4] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6E34 -; --------------------------------------------------------------------------- - -loc_6ECD: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6E31 -; --------------------------------------------------------------------------- - -loc_6ED6: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6EF6 -; --------------------------------------------------------------------------- - -loc_6EE7: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6EF6: - add sp, 8 - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6EFC: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6E70 -; --------------------------------------------------------------------------- - -loc_6F05: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6E7E -; --------------------------------------------------------------------------- - -loc_6F0E: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - ; Hack - db 0ffh - db 056h - db 00ch - jmp loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F1C: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_6DEB -; --------------------------------------------------------------------------- - -loc_6F25: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6E01 -; --------------------------------------------------------------------------- - -loc_6F34: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6E14 -; --------------------------------------------------------------------------- - -loc_6F43: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F4F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F5B: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop cx - pop cx - pop ds - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F6D: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F7F: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F8A: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6F95: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - ; Hack - db 0ffh - db 056h - db 00ch - pop ds - jmp short loc_6FB5 -; --------------------------------------------------------------------------- - -loc_6FA5: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6FB5: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6CCE endp ; sp-analysis failed - -; --------------------------------------------------------------------------- -off_6FBC dw offset loc_6EC1 - dw offset loc_6ECD - dw offset loc_6ED6 - dw offset loc_6EE7 - dw offset loc_6EFC - dw offset loc_6F05 - dw offset loc_6F25 - dw offset loc_6F34 - dw offset loc_6F0E - dw offset loc_6F1C - dw offset loc_6F25 - dw offset loc_6F34 - dw offset loc_6FB5 - dw offset loc_6FB5 - dw offset loc_6FB5 - dw offset loc_6FB5 - dw offset loc_6F43 - dw offset loc_6F4F - dw offset loc_6F5B - dw offset loc_6F6D - dw offset loc_6F7F - dw offset loc_6F8A - dw offset loc_6F95 - dw offset loc_6FA5 -off_6FEC dw offset loc_6D3C - dw offset loc_6D4E - dw offset loc_6D60 - dw offset loc_6D74 - dw offset loc_6D8C - dw offset loc_6D9B - dw offset loc_6DAA - dw offset loc_6DBE - dw offset loc_6DD3 - dw offset loc_6DE3 - dw offset loc_6DF3 - dw offset loc_6E06 - dw offset loc_6EAC - dw offset loc_6EAC - dw offset loc_6EAC - dw offset loc_6EAC - dw offset loc_6E1A - dw offset loc_6E28 - dw offset loc_6E39 - dw offset loc_6E50 - dw offset loc_6E67 - dw offset loc_6E75 - dw offset loc_6E84 - dw offset loc_6E98 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_701C proc near - ; sub_7CAB+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_702F - mov ax, 2 - jmp short loc_7031 -; --------------------------------------------------------------------------- - -loc_702F: - xor ax, ax - -loc_7031: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7057 - or [bp+var_6], 2 - -loc_7057: - test byte ptr [bp+arg_8], 2 - jz short loc_706B - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_706B - or [bp+var_6], 20h - -loc_706B: - test byte ptr [bp+arg_8], 20h - jz short loc_7075 - or [bp+var_6], 8 - -loc_7075: - test byte ptr [bp+arg_8], 80h - jz short loc_707F - or [bp+var_6], 10h - -loc_707F: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_708A - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_708A: - add bx, bx - jmp cs:off_71A4[bx] - -loc_7091: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - pop cx - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_709F: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_70AD: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - add sp, 6 - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_70BF: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_70D1: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_7137 -; --------------------------------------------------------------------------- - -loc_70DC: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_7134 -; --------------------------------------------------------------------------- - -loc_70E4: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_70FE -; --------------------------------------------------------------------------- - -loc_70F2: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_70FE: - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_7101: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call word ptr [bp+arg_4] - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_710F: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_719D -; --------------------------------------------------------------------------- - -loc_711D: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_7137 -; --------------------------------------------------------------------------- - -loc_712B: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_7134: - call [bp+arg_4] - -loc_7137: - ; sub_701C+10Dj - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7139: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7145: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7151: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - pop ds - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_715F: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_716D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7178: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7183: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop ds - jmp short loc_719D -; --------------------------------------------------------------------------- - -loc_7190: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_719D: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_701C endp - -; --------------------------------------------------------------------------- -off_71A4 dw offset loc_7091 - dw offset loc_709F - dw offset loc_70AD - dw offset loc_70BF - dw offset loc_70D1 - dw offset loc_70DC - dw offset loc_70E4 - dw offset loc_70F2 - dw offset loc_7101 - dw offset loc_710F - dw offset loc_711D - dw offset loc_712B - dw offset loc_719D - dw offset loc_719D - dw offset loc_719D - dw offset loc_719D - dw offset loc_7139 - dw offset loc_7145 - dw offset loc_7151 - dw offset loc_715F - dw offset loc_716D - dw offset loc_7178 - dw offset loc_7183 - dw offset loc_7190 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_71D4 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_71FF - or [bp+var_4], 2 - -loc_71FF: - test byte ptr [bp+arg_8], 2 - jz short loc_7209 - or [bp+var_4], 4 - -loc_7209: - test byte ptr [bp+arg_8], 20h - jz short loc_7213 - or [bp+var_4], 8 - -loc_7213: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_7286 - add bx, bx - jmp cs:off_728D[bx] - -loc_7222: - push [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_722B: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_7234: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_7248 -; --------------------------------------------------------------------------- - -loc_723F: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7248: - pop cx - pop cx - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_724C: - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_725A -; --------------------------------------------------------------------------- - -loc_7254: - push [bp+arg_0] - call [bp+arg_4] - -loc_725A: - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_725C: - mov bx, [bp+arg_0] - push bx - pop bx - call word ptr [bp+arg_4] - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_7266: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_7286 -; --------------------------------------------------------------------------- - -loc_7270: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_7284 -; --------------------------------------------------------------------------- - -loc_727B: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_7284: - jmp short $+2 - -loc_7286: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_71D4 endp - -; --------------------------------------------------------------------------- -off_728D dw offset loc_7222 - dw offset loc_722B - dw offset loc_7234 - dw offset loc_723F - dw offset loc_724C - dw offset loc_7254 - dw offset loc_7270 - dw offset loc_727B - dw offset loc_725C - dw offset loc_7266 - dw offset loc_7270 - dw offset loc_727B - db 4 dup(0), 63h, 75h - dw seg seg000 - db 14h dup(0), 0BCh, 75h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0A5h, 72h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0BDh, 72h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_72F3(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_72F3 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 72D5h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_737F -; --------------------------------------------------------------------------- - -loc_735C: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_737C - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_737C: - inc word ptr [bp+var_34] - -loc_737F: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_735C - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_73DC - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_73DE -; --------------------------------------------------------------------------- - -loc_73DC: - xor ax, ax - -loc_73DE: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_73F8 - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_73F8: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_6B34 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 6B90h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_7582 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_6CCE - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_756D -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_756D: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7582: - cmp [bp+arg_1E], 0 - jnz short loc_75C6 - test byte ptr [bp+var_2C], 2 - jz short loc_75C6 - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_701C - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_75C6 -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_75C6: - ; sub_72F3+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_72F3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_72F3 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_76B6 - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_76B6: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7702 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_770B -; --------------------------------------------------------------------------- - -loc_7702: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_770B: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_72F3 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7725 proc far - push si - push di - pop di - pop si - retf -sub_7725 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_772A proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_7744 - inc [bp+var_4] - -loc_7744: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_7725 - jmp short loc_7792 -; --------------------------------------------------------------------------- - -loc_7751: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_777C - mov ax, dx - jmp short loc_77B0 -; --------------------------------------------------------------------------- - -loc_777C: - cmp [bp+var_4], 0 - jz short loc_7789 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_7789: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_7792: - cmp [bp+var_2], 0FFFFh - jz short loc_77A0 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_7751 - -loc_77A0: - cmp [bp+var_4], 0 - jz short loc_77AD - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_77AD: - mov ax, 1 - -loc_77B0: - pop di - pop si - mov sp, bp - pop bp - retf -sub_772A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_77E1 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_77E1: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_772A - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_77FD proc far - push si - push di - pop di - pop si - retf -sub_77FD endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_77FD - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_782B - jmp loc_78E1 -; --------------------------------------------------------------------------- - -loc_782B: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_792A -; --------------------------------------------------------------------------- - -loc_78E1: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_792A: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_795B - cmp [bp+arg_0], 0FACEh - jnz short loc_795B - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_7969 -; --------------------------------------------------------------------------- - -loc_795B: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_7969: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_7A3A - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_7A3A: - cmp [bp+arg_A], 0 - jb short loc_7A52 - ja short loc_7A48 - cmp [bp+arg_8], 0Fh - jbe short loc_7A52 - -loc_7A48: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7A52: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_7A88 -; --------------------------------------------------------------------------- - -loc_7A5F: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_7A88: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_7A5F - jnz short loc_7A99 - cmp ax, [bp+arg_8] - jb short loc_7A5F - -loc_7A99: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_772A - add sp, 8 - or ax, ax - jnz short loc_7AE4 - test byte ptr [bp+arg_4], 1 - jz short loc_7B04 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_7A99 -; --------------------------------------------------------------------------- - -loc_7AE4: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_772A - add sp, 8 - or ax, ax - jz short loc_7B04 - jmp loc_7C6F -; --------------------------------------------------------------------------- - -loc_7B04: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_7B0E - jmp loc_7BEE -; --------------------------------------------------------------------------- - -loc_7B0E: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7C74 -; --------------------------------------------------------------------------- - -loc_7BEE: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7C74 -; --------------------------------------------------------------------------- - -loc_7C6F: - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_7C74: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -_RaiseException endp - -; --------------------------------------------------------------------------- - db 4 dup(0), 0E3h, 7Ch - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 81h, 7Ch - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CAB proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7C99h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_701C - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7CED -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - db 90h -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7CED: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_7CAB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7CFB proc near - ; sub_8245+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7D76 - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_7D6E - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_7CAB - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7D6E: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_7D76: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_7DCD - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7DC5 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7DC5 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_7CAB - add sp, 0Ah - -loc_7DC5: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_7DCD: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7CFB endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_72F3+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_7CFB - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7E50 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_7E58: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_7E75 - xor ax, ax - jmp loc_7F16 -; --------------------------------------------------------------------------- - -loc_7E75: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_7EA1 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7EA1: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_7EFA - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_7F0F - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_7F0F - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_7E50 - add sp, 0Ch - or ax, ax - jz short loc_7F0F - -loc_7EFA: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_7F16 -; --------------------------------------------------------------------------- - -loc_7F0F: - add word ptr [bp+arg_0], 8 - jmp loc_7E58 -; --------------------------------------------------------------------------- - -loc_7F16: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7E50 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F1C proc far - ; sub_7F9F+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_7F8D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7E50 - add sp, 0Ch - or ax, ax - jnz short loc_7F8D - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7E50 - add sp, 0Ch - or ax, ax - jz short loc_7F95 - -loc_7F8D: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7F99 -; --------------------------------------------------------------------------- - -loc_7F95: - xor dx, dx - xor ax, ax - -loc_7F99: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7F1C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7F9F proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7FCE - jmp loc_823F -; --------------------------------------------------------------------------- - -loc_7FCE: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7FDB - jmp loc_823F -; --------------------------------------------------------------------------- - -loc_7FDB: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - -loc_7FFF: - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_804F - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_804F: - test cl, 10h - jz short loc_8077 - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_8077 - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_81A2 -; --------------------------------------------------------------------------- - -loc_8077: - test dl, 1 - jnz short loc_807F - jmp loc_8123 -; --------------------------------------------------------------------------- - -loc_807F: - test cl, 30h - jnz short loc_8087 - jmp loc_8123 -; --------------------------------------------------------------------------- - -loc_8087: - test cl, 20h - jz short loc_808E - jmp short loc_80B1 -; --------------------------------------------------------------------------- - -loc_808E: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_80B8 - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_80B1: - mov [bp+var_14], 1 - jmp short $+2 - -loc_80B8: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_8119 - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7F1C - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_8114 - cmp ax, [bp+var_18] - jz short loc_8119 - -loc_8114: - mov [bp+var_14], 1 - -loc_8119: - ; sub_7F9F+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_81ED -; --------------------------------------------------------------------------- - -loc_8123: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_81A9 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_8172 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7F1C - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_8172: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_81F0 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_6CCE - add sp, 0Eh - -loc_81A2: - ; sub_7F9F+227j - mov [bp+var_14], 1 - jmp short loc_8209 -; --------------------------------------------------------------------------- - -loc_81A9: - test cl, 20h - jz short loc_81C8 - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_81A2 -; --------------------------------------------------------------------------- - -loc_81C8: - test cl, 10h - jz short loc_81F0 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_81F0 - les bx, [bp+src] - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_81ED: - push ax - jmp short loc_81F9 -; --------------------------------------------------------------------------- - -loc_81F0: - ; sub_7F9F+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_81F9: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_8209: - cmp [bp+var_14], 0 - jnz short loc_823F - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_8237 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_7CAB - add sp, 0Ah - -loc_8237: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_823F: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7F9F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8245 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_83EA -; --------------------------------------------------------------------------- - -loc_829D: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_82D8 - jmp loc_83E7 -; --------------------------------------------------------------------------- - -loc_82D8: - add bx, bx - jmp cs:off_8404[bx] - -loc_82DF: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_1C664+2, dx - mov word ptr dword_1C664, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_1C664 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_83E7 -; --------------------------------------------------------------------------- - -loc_831A: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_8349 -; --------------------------------------------------------------------------- - -loc_8329: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_8343 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_8343 - jmp short loc_8363 -; --------------------------------------------------------------------------- - -loc_8343: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_8349: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_8329 - -loc_8363: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_7CFB - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_83E7 -; --------------------------------------------------------------------------- - -loc_839C: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_8E1B - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_83E7: - mov ax, [bp+var_8] - -loc_83EA: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_83FE - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_83FE - jmp loc_829D -; --------------------------------------------------------------------------- - -loc_83FE: - ; sub_8245+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_8245 endp - -; --------------------------------------------------------------------------- -off_8404 dw offset loc_82DF - dw offset loc_83E7 - dw offset loc_83E7 - dw offset loc_83E7 - dw offset loc_831A - dw offset loc_839C - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8245 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8245 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_845A proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_84C8 -; --------------------------------------------------------------------------- - -loc_8473: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_84BC - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6BC9 - add sp, 10h - or ax, ax - jz short loc_84C4 - -loc_84BC: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_84D8 -; --------------------------------------------------------------------------- - -loc_84C4: - add word ptr [bp+var_4], 10h - -loc_84C8: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8473 - xor dx, dx - xor ax, ax - -loc_84D8: - pop di - pop si - mov sp, bp - pop bp - retn -sub_845A endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8572 - jmp loc_861A -; --------------------------------------------------------------------------- - -loc_8572: - xor ax, ax - push ax - push [bp+var_4] - call sub_8245 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_858B - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_858B: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8595 - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_8595: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_85B0 - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_85B0: - jmp short loc_85EE -; --------------------------------------------------------------------------- - -loc_85B2: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_6BC9 - add sp, 10h - or ax, ax - jz short loc_85EA - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_85EA: - add word ptr [bp+var_20], 4 - -loc_85EE: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_85B2 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_884D -; --------------------------------------------------------------------------- - -loc_861A: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_8841 -; --------------------------------------------------------------------------- - -loc_8624: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8655 - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_8655: - add bx, bx - jmp cs:off_8856[bx] - -loc_865C: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_866A - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_866A: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8674 - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_8674: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_845A - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_86AE - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_86AE: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_86E2: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8245 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_8734 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_7F9F - add sp, 10h - -loc_8734: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_874D: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8762 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8762 - jmp loc_883E -; --------------------------------------------------------------------------- - -loc_8762: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_1C668+2, dx - mov word ptr dword_1C668, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_1C668 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_87F9 -; --------------------------------------------------------------------------- - -loc_87C4: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_87D8 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_87D8 - jmp short loc_883E -; --------------------------------------------------------------------------- - -loc_87D8: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_87F9: - cmp [bp+var_38], 0 - jge short loc_8817 - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_8813 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_8813: - xor ax, ax - jmp short loc_8850 -; --------------------------------------------------------------------------- - -loc_8817: - cmp [bp+var_38], 0 - jnz short loc_881F - jmp short loc_883E -; --------------------------------------------------------------------------- - -loc_881F: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_86E2 -; --------------------------------------------------------------------------- - -loc_883E: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_8841: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_884D - jmp loc_8624 -; --------------------------------------------------------------------------- - -loc_884D: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_8850: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_8856 dw offset loc_883E - dw offset loc_874D - dw offset loc_87C4 - dw offset loc_865C - dw offset loc_883E - dw offset loc_883E - db 4 dup(0), 0F5h, 88h - dw seg seg000 - db 14h dup(0), 5, 89h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 7Ah, 88h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 62h, 88h - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_88B0 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 8892h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_701C - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_88FE -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_88FE: - mov [bp+var_12], 0 - jmp short loc_890E -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_890E: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_88B0 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_891C proc far - ; sub_899D+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_898B -; --------------------------------------------------------------------------- - -loc_8929: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_8951 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8951: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_898B - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_899D - add sp, 10h - xor cx, cx - -loc_898B: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_8929 - pop di - pop si - mov sp, bp - pop bp - retf -sub_891C endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_899D proc far - ; sub_899D+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_89B4 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_89BB -; --------------------------------------------------------------------------- - -loc_89B4: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_89BB: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_89DD - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_89F6 - jnz short loc_89DD - cmp ax, [bp+var_1C] - jb short loc_89F6 - -loc_89DD: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_88B0 - add sp, 0Ah - jmp loc_8C62 -; --------------------------------------------------------------------------- - -loc_89F6: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_8A8F - -loc_8A21: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8A8F - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8A89 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8A82 - jnz short loc_8A58 - cmp bx, [bp+var_1C] - jb short loc_8A82 - -loc_8A58: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8A72: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_891C - add sp, 12h - jmp loc_8C62 -; --------------------------------------------------------------------------- - -loc_8A82: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8A89: - add word ptr [bp+var_10], 8 - jmp short loc_8A21 -; --------------------------------------------------------------------------- - -loc_8A8F: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_8AA8: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8B1E - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_8B18 - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8B11 - jnz short loc_8ADF - cmp bx, [bp+var_1C] - jb short loc_8B11 - -loc_8ADF: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_891C - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8B0E - jmp loc_8C62 -; --------------------------------------------------------------------------- - -loc_8B0E: - jmp loc_8C42 -; --------------------------------------------------------------------------- - -loc_8B11: - ; sub_899D+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_8B18: - add word ptr [bp+var_8], 8 - jmp short loc_8AA8 -; --------------------------------------------------------------------------- - -loc_8B1E: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_8B37: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8B71 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8B71: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_8B95 - jb short loc_8B8B - cmp bx, [bp+var_1C] - jnb short loc_8B95 - -loc_8B8B: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_8C5B -; --------------------------------------------------------------------------- - -loc_8B95: - ; sub_899D+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_8BE1 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_8C68 - add sp, 0Eh - jmp short loc_8C01 -; --------------------------------------------------------------------------- - -loc_8BE1: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_899D - add sp, 10h - -loc_8C01: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_8C1A - jmp loc_8B95 -; --------------------------------------------------------------------------- - -loc_8C1A: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_891C - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8C62 - -loc_8C42: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8A72 -; --------------------------------------------------------------------------- - -loc_8C5B: - add word ptr [bp+var_18], 6 - jmp loc_8B37 -; --------------------------------------------------------------------------- - -loc_8C62: - pop di - pop si - mov sp, bp - pop bp - retf -sub_899D endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8C68 proc far - ; sub_8E1B+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_8CC2 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_8CC2: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8D52 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_8D3F -; --------------------------------------------------------------------------- - -loc_8D20: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_8D3F: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_899D - add sp, 10h - -loc_8D52: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8D20 - pop di - pop si - mov sp, bp - pop bp - retf -sub_8C68 endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8D6A proc far - ; sub_8E1B+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_8E0F - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_8E0F - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8DC9 - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_8DD2 -; --------------------------------------------------------------------------- - -loc_8DC9: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_8DD2: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_8E0F: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_8D6A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8E1B proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_8E31 - jmp loc_921E -; --------------------------------------------------------------------------- - -loc_8E31: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_8E8A - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_8E8A: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_8EA1 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_9220 -; --------------------------------------------------------------------------- - -loc_8EA1: - cmp [bp+var_6], 0 - jg short loc_8ED3 - jnz short loc_8EAF - cmp [bp+var_8], 0 - ja short loc_8ED3 - -loc_8EAF: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_8EC1 - jmp loc_921E -; --------------------------------------------------------------------------- - -loc_8EC1: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_9038 -; --------------------------------------------------------------------------- - -loc_8ED3: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_8EDF: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8EF2 - sub word ptr [bp+var_C], 0Ah - jmp loc_9038 -; --------------------------------------------------------------------------- - -loc_8EF2: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_8F1A - jmp loc_8FE4 -; --------------------------------------------------------------------------- - -loc_8F1A: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_8F3E - jmp loc_8FE4 -; --------------------------------------------------------------------------- - -loc_8F3E: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_8F4B - jmp loc_8FE4 -; --------------------------------------------------------------------------- - -loc_8F4B: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_8F58 - jmp loc_8FE4 -; --------------------------------------------------------------------------- - -loc_8F58: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8F71 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_8F7F -; --------------------------------------------------------------------------- - -loc_8F71: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_8F7F: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8FA7 - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8FB0 -; --------------------------------------------------------------------------- - -loc_8FA7: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8FB0: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8FC1 - add word ptr [bp+var_1C], 4 - -loc_8FC1: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_8D6A - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8FE4: - ; sub_8E1B+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9009 - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_9009: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_9027 - jnz short loc_9038 - cmp ax, [bp+var_8] - jnb short loc_9038 - -loc_9027: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_8EDF -; --------------------------------------------------------------------------- - -loc_9038: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_9067 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_9075 -; --------------------------------------------------------------------------- - -loc_9067: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_9075: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_9081 - jmp loc_910B -; --------------------------------------------------------------------------- - -loc_9081: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_90B3 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_90BC -; --------------------------------------------------------------------------- - -loc_90B3: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_90BC: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_90DA - add [bp+var_18], 4 - -loc_90DA: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_910B - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_910B - test byte ptr [bp+var_16+2], 8 - jz short loc_910B - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8D6A - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_910B: - ; sub_8E1B+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_9159 - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_9139 - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8C68 - add sp, 0Eh - jmp short loc_9159 -; --------------------------------------------------------------------------- - -loc_9139: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_899D - add sp, 10h - -loc_9159: - ; sub_8E1B+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_9167 - jmp loc_9205 -; --------------------------------------------------------------------------- - -loc_9167: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_9176 - sub word ptr [bp+driver], 4 - -loc_9176: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_91C5 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_91B2 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_91E4 -; --------------------------------------------------------------------------- - -loc_91B2: - test byte ptr [bp+var_16+2], 80h - jz short loc_9205 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_9203 -; --------------------------------------------------------------------------- - -loc_91C5: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_91F2 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_91E4: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_71D4 - add sp, 0Ah - jmp short loc_9205 -; --------------------------------------------------------------------------- - -loc_91F2: - test byte ptr [bp+var_16+2], 80h - jz short loc_9205 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_9203: - pop cx - pop cx - -loc_9205: - ; sub_8E1B+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_921E - jmp loc_9038 -; --------------------------------------------------------------------------- - -loc_921E: - xor ax, ax - -loc_9220: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8E1B endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_9269 - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 1CAFh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_926E - -loc_9269: - mov ax, 0FFFFh - jmp short loc_9275 -; --------------------------------------------------------------------------- - -loc_926E: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9275: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_92D1 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_930F - -loc_92D1: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 98ADh - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 988Fh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_930F: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_935A - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 98ADh - test dl, 1 - jz short loc_935A - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_935A: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_67D0 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_93BE - xor ax, ax - jmp short loc_9417 -; --------------------------------------------------------------------------- - -loc_93BE: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_93D0 - mov ax, 1 - jmp short loc_9417 -; --------------------------------------------------------------------------- - -loc_93D0: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_9415 - mov ax, 1 - jmp short loc_9417 -; --------------------------------------------------------------------------- - -loc_9415: - xor ax, ax - -loc_9417: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_67AB - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_9479 - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0C56Ch - push ax ; src - push cs ; int - mov ax, 9879h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9479: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_94BA proc near - ; sub_94BA+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_94F5 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_94FF - -loc_94F5: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_9506 - -loc_94FF: - xor dx, dx - xor ax, ax - jmp loc_96FA -; --------------------------------------------------------------------------- - -loc_9506: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_9518: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_951E: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_9539 - jmp loc_96C2 -; --------------------------------------------------------------------------- - -loc_9539: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_9546 - jmp loc_96BB -; --------------------------------------------------------------------------- - -loc_9546: - cmp [bp+arg_1A], 0 - jz short loc_9560 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9560 - mov ax, 1 - jmp short loc_9562 -; --------------------------------------------------------------------------- - -loc_9560: - xor ax, ax - -loc_9562: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_95A9 - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_95A9: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_962B - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_95CD - jmp loc_96BB -; --------------------------------------------------------------------------- - -loc_95CD: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_94BA - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_9614 - jmp loc_96BB -; --------------------------------------------------------------------------- - -loc_9614: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_9688 -; --------------------------------------------------------------------------- - -loc_962B: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_964C - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_96BB - cmp ax, word ptr [bp+var_14] - jnz short loc_96BB - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_96FA -; --------------------------------------------------------------------------- - -loc_964C: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_9688 - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_94BA - add sp, 20h - or ax, dx - jz short loc_96BB - -loc_9688: - ; sub_94BA+198j - cmp [bp+var_E], 0 - jz short loc_96A6 - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_96A6 - cmp ax, [bp+var_C] - jnz short loc_96A6 - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_96BB -; --------------------------------------------------------------------------- - -loc_96A6: - ; sub_94BA+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_96BB: - ; sub_94BA+110j ... - add word ptr [bp+var_4], 8 - jmp loc_951E -; --------------------------------------------------------------------------- - -loc_96C2: - cmp [bp+var_6], 0 - jnz short loc_96DB - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_9518 -; --------------------------------------------------------------------------- - -loc_96DB: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_96F4 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_96F4: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_96FA: - ; sub_94BA+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_94BA endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_972B - jmp loc_982F -; --------------------------------------------------------------------------- - -loc_972B: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_9781 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jz short loc_978A - -loc_9781: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_985F -; --------------------------------------------------------------------------- - -loc_978A: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_67D0 - add sp, 8 - or ax, ax - jnz short loc_97E3 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_94BA - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_9827 - -loc_97E3: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_94BA - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_982F - cmp [bp+var_16], 0 - jz short loc_982F - -loc_9827: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_985F -; --------------------------------------------------------------------------- - -loc_982F: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_985B - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 0C56Dh - push ax ; src - push cs ; int - mov ax, 9865h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_985B: - xor dx, dx - xor ax, ax - -loc_985F: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0B1h, 98h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 0B1h, 98h - dw seg seg000 - db 4 dup(0), 2Ah, 93h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 2Ah, 93h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -25325,8 +18685,7 @@ word_11DA0 dw 0 word_11DA2 dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_11DBC dw 1 word_11DBE dw 0 @@ -35810,9 +29169,7 @@ include libs/BorlandC/sigdata[bss].asm dw ? dw ? include libs/BorlandC/signal[bss].asm -dword_1C664 dd ? -dword_1C668 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dw ? diff --git a/th05_op.asm b/th05_op.asm index 7c469df3..91e49f47 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -4693,6598 +4693,7 @@ include libs/BorlandC/writea.asm include libs/BorlandC/xfflush.asm include libs/BorlandC/xalloc.asm include libs/BorlandC/xmsg.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -___JumpToCatch__ proc far - push si - push di - mov sp, bx - mov bp, cx - push dx - push ax - retf -___JumpToCatch__ endp - -; --------------------------------------------------------------------------- - pop di - pop si - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_65CF proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_65E3 - mov dx, ds - mov ax, 2D22h - jmp short loc_65F0 -; --------------------------------------------------------------------------- - -loc_65E3: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - -loc_65F0: - pop di - pop si - pop bp - retf -sub_65CF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_65F4 proc far - ; sub_6691+106p ... - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_660C - cmp ax, word ptr [bp+arg_4] - jz short loc_6688 - -loc_660C: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - cmp ax, es:[bx+2] - jnz short loc_6680 - les bx, [bp+arg_0] - mov ax, es:[bx] - les bx, [bp+arg_4] - cmp ax, es:[bx] - jnz short loc_6680 - les bx, [bp+arg_0] - mov ax, es:[bx+2] - les bx, [bp+arg_4] - or ax, es:[bx+2] - test al, 80h - jnz short loc_6680 - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_6662: - les bx, [bp+var_4] - mov al, es:[bx] - cbw - mov dx, ax - inc word ptr [bp+var_4] - les bx, [bp+var_8] - mov al, es:[bx] - cbw - mov [bp+var_A], ax - inc word ptr [bp+var_8] - cmp dx, [bp+var_A] - jz short loc_6684 - -loc_6680: - xor ax, ax - jmp short loc_668B -; --------------------------------------------------------------------------- - -loc_6684: - or dx, dx - jnz short loc_6662 - -loc_6688: - mov ax, 1 - -loc_668B: - pop di - pop si - mov sp, bp - pop bp - retf -sub_65F4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6691 proc near - ; sub_6691+135p ... - -var_A = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_66AC: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_6740 - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jnz short loc_6739 - cmp [bp+arg_C], 0 - jz short loc_66E8 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_66E8 - mov ax, 1 - jmp short loc_66EA -; --------------------------------------------------------------------------- - -loc_66E8: - xor ax, ax - -loc_66EA: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jz short loc_670D - cmp [bp+var_6], 0 - jz short loc_670D - jmp loc_67D0 -; --------------------------------------------------------------------------- - -loc_670D: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_6739 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6691 - add sp, 0Eh - or ax, ax - jz short loc_6739 - jmp loc_67D0 -; --------------------------------------------------------------------------- - -loc_6739: - add word ptr [bp+var_4], 8 - jmp loc_66AC -; --------------------------------------------------------------------------- - -loc_6740: - les bx, [bp+arg_0] - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_6753: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_A+2], dx - mov word ptr [bp+var_A], ax - mov ax, word ptr [bp+var_A] - or ax, word ptr [bp+var_A+2] - jz short loc_67DC - cmp [bp+arg_C], 0 - jz short loc_6785 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_6785 - mov ax, 1 - jmp short loc_6787 -; --------------------------------------------------------------------------- - -loc_6785: - xor ax, ax - -loc_6787: - mov [bp+var_6], ax - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - push [bp+arg_6] - push [bp+arg_4] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jz short loc_67A7 - cmp [bp+var_6], 0 - jnz short loc_67D0 - -loc_67A7: - les bx, [bp+var_A] - test byte ptr es:[bx+8], 4 - jz short loc_67D5 - push [bp+var_6] - push [bp+arg_A] - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+var_A+2] - push word ptr [bp+var_A] - call sub_6691 - add sp, 0Eh - or ax, ax - jz short loc_67D5 - -loc_67D0: - mov ax, 1 - jmp short loc_67DE -; --------------------------------------------------------------------------- - -loc_67D5: - ; sub_6691+13Dj - add word ptr [bp+var_4], 8 - jmp loc_6753 -; --------------------------------------------------------------------------- - -loc_67DC: - xor ax, ax - -loc_67DE: - pop di - pop si - mov sp, bp - pop bp - retn -sub_6691 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_67E4 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov cx, [bp+arg_8] - -loc_67EF: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - cmp dx, word ptr [bp+arg_4+2] - jnz short loc_6802 - cmp ax, word ptr [bp+arg_4] - jnz short loc_6802 - jmp loc_6917 -; --------------------------------------------------------------------------- - -loc_6802: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_4] - mov ax, es:[bx+2] - mov [bp+var_4], ax - mov ax, [bp+var_2] - and ax, [bp+var_4] - test al, 10h - jz short loc_6892 - and [bp+var_2], 3300h - and [bp+var_4], 3300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jnz short loc_6835 - jmp loc_68D8 -; --------------------------------------------------------------------------- - -loc_6835: - or cx, cx - jz short loc_683C - jmp loc_6950 -; --------------------------------------------------------------------------- - -loc_683C: - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jz short loc_6872 - mov ax, [bp+var_4] - and ax, 300h - not ax - and ax, [bp+var_2] - test ah, 3 - jz short loc_6860 - jmp loc_6950 -; --------------------------------------------------------------------------- - -loc_6860: - or [bp+var_2], 300h - or [bp+var_4], 300h - mov ax, [bp+var_2] - cmp ax, [bp+var_4] - jz short loc_68D8 - -loc_6872: - mov ax, [bp+var_2] - or ax, 3000h - mov dx, [bp+var_4] - or dx, 3000h - cmp ax, dx - jz short loc_6886 - jmp loc_6950 -; --------------------------------------------------------------------------- - -loc_6886: - test byte ptr [bp+var_2+1], 10h - jnz short loc_688F - jmp loc_6950 -; --------------------------------------------------------------------------- - -loc_688F: - jmp loc_6917 -; --------------------------------------------------------------------------- - -loc_6892: - mov ax, [bp+var_2] - and ax, [bp+var_4] - test ah, 4 - jz short loc_6900 - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - cmp dx, es:[bx+0Ch] - jnz short loc_68B7 - cmp ax, es:[bx+0Ah] - jz short loc_68D8 - -loc_68B7: - or cx, cx - jz short loc_68BE - jmp loc_6950 -; --------------------------------------------------------------------------- - -loc_68BE: - les bx, [bp+arg_0] - mov dx, es:[bx+0Ch] - mov ax, es:[bx+0Ah] - les bx, [bp+arg_4] - or ax, es:[bx+0Ah] - or dx, es:[bx+0Ch] - or ax, dx - jnz short loc_6950 - -loc_68D8: - mov cx, 1 - les bx, [bp+arg_0] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - les bx, [bp+arg_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_4+2], dx - mov word ptr [bp+arg_4], ax - jmp loc_67EF -; --------------------------------------------------------------------------- - -loc_6900: - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jz short loc_691C - -loc_6917: - ; sub_67E4:loc_688Fj - mov ax, 1 - jmp short loc_6952 -; --------------------------------------------------------------------------- - -loc_691C: - test byte ptr [bp+var_2], 2 - jz short loc_6950 - test byte ptr [bp+var_4], 1 - jz short loc_6950 - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 4 - jz short loc_6950 - mov ax, 1 - push ax - push [bp+arg_C] - push [bp+arg_A] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_6691 - add sp, 0Eh - jmp short loc_6952 -; --------------------------------------------------------------------------- - -loc_6950: - xor ax, ax - -loc_6952: - ; sub_67E4+16Aj - pop di - pop si - mov sp, bp - pop bp - retn -sub_67E4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6958 proc far - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_0] - nop - push cs - call near ptr _malloc - pop cx - mov [bp+var_2], dx - mov [bp+var_4], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_69A8 - cmp [bp+arg_0], 80h ; '€' - ja short loc_698A - les bx, ss:16h - test byte ptr es:[bx+4], 1 - jz short loc_698F - -loc_698A: - nop - push cs - call near ptr _abort -; --------------------------------------------------------------------------- - -loc_698F: - les bx, ss:16h - or word ptr es:[bx+4], 1 - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - jmp short loc_69AE -; --------------------------------------------------------------------------- - -loc_69A8: - mov dx, [bp+var_2] - mov ax, [bp+var_4] - -loc_69AE: - pop di - pop si - mov sp, bp - pop bp - retf -sub_6958 endp - -; --------------------------------------------------------------------------- - push bp - mov bp, sp - push si - push di - les bx, ss:16h - mov dx, es:[bx+22h] - mov ax, es:[bx+20h] - cmp dx, [bp+8] - jnz short loc_69DC - cmp ax, [bp+6] - jnz short loc_69DC - les bx, ss:16h - and word ptr es:[bx+4], 0FFFEh - jmp short loc_69E9 -; --------------------------------------------------------------------------- - -loc_69DC: - push word ptr [bp+8] - push word ptr [bp+6] - nop - push cs - call near ptr _farfree - pop cx - pop cx - -loc_69E9: - pop di - pop si - pop bp - retf - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_69ED proc near - ; __ExceptionHandler+F7p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = byte ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_67E4 - add sp, 0Eh - or ax, ax - jz short loc_6A17 - jmp loc_6AB3 -; --------------------------------------------------------------------------- - -loc_6A17: - les bx, [bp+arg_0] - mov ax, es:[bx+2] - mov [bp+var_2], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 20h - jz short loc_6AA7 - push [bp+arg_6] - push [bp+arg_4] - mov ax, 1 - push ax - les bx, [bp+arg_8] - push word ptr es:[bx+8] - push word ptr es:[bx+6] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_67E4 - add sp, 0Eh - or ax, ax - jnz short loc_6AB3 - les bx, [bp+arg_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+arg_8+2], dx - mov word ptr [bp+arg_8], ax - les bx, [bp+arg_8] - mov ax, es:[bx+2] - mov [bp+var_4], ax - test byte ptr [bp+var_4], 10h - jz short loc_6AEA - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_8+2] - push word ptr [bp+arg_8] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call sub_67E4 - add sp, 0Eh - or ax, ax - jnz short loc_6AB3 - mov ax, [bp+var_2] - and ax, 3000h - mov dx, [bp+var_4] - and dx, 3000h - cmp ax, dx - jnz short loc_6AEA - -loc_6AA7: - test byte ptr [bp+var_4], 10h - jz short loc_6AEA - test [bp+arg_C], 1 - jz short loc_6AB8 - -loc_6AB3: - mov ax, 1 - jmp short loc_6AEC -; --------------------------------------------------------------------------- - -loc_6AB8: - test byte ptr [bp+var_2], 10h - jz short loc_6AEA - test byte ptr [bp+var_2+1], 20h - jz short loc_6ACA - test byte ptr [bp+var_4+1], 20h - jz short loc_6AEA - -loc_6ACA: - test byte ptr [bp+var_4], 40h - jz short loc_6AEA - mov ax, [bp+var_2] - and ax, 300h - mov dx, [bp+var_4] - and dx, 300h - cmp ax, dx - jnz short loc_6AE6 - mov ax, 1 - jmp short loc_6AE8 -; --------------------------------------------------------------------------- - -loc_6AE6: - xor ax, ax - -loc_6AE8: - jmp short loc_6AEC -; --------------------------------------------------------------------------- - -loc_6AEA: - xor ax, ax - -loc_6AEC: - ; sub_69ED:loc_6AE8j - pop di - pop si - mov sp, bp - pop bp - retn -sub_69ED endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6AF2 proc near - ; sub_7DC3+1FDp - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = dword ptr 0Ch -arg_C = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_C] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_C], 4 - jz short loc_6B1D - or [bp+var_4], 2 - -loc_6B1D: - test byte ptr [bp+arg_C], 2 - jz short loc_6B31 - or [bp+var_4], 4 - test byte ptr [bp+arg_C+1], 1 - jnz short loc_6B31 - or [bp+var_4], 20h - -loc_6B31: - test byte ptr [bp+arg_C], 20h - jz short loc_6B3B - or [bp+var_4], 8 - -loc_6B3B: - test byte ptr [bp+arg_C], 80h - jz short loc_6B45 - or [bp+var_4], 10h - -loc_6B45: - test byte ptr [bp+arg_C+1], 10h - jnz short loc_6B4E - jmp loc_6CD3 -; --------------------------------------------------------------------------- - -loc_6B4E: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6B59 - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6B59: - add bx, bx - jmp cs:off_6E10[bx] - -loc_6B60: - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - add sp, 6 - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6B72: - ; sub_6AF2+1EEj - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0] - call [bp+arg_8] - add sp, 6 - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6B84: - ; sub_6AF2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_6BAA -; --------------------------------------------------------------------------- - -loc_6B98: - ; sub_6AF2+1EEj - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6BAA: - add sp, 0Ah - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6BB0: - ; sub_6AF2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6BBF: - ; sub_6AF2+1EEj - xor ax, ax - push ax - push [bp+arg_4] - push word ptr [bp+arg_0] - call [bp+arg_8] - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6BCE: - ; sub_6AF2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_6BF4 -; --------------------------------------------------------------------------- - -loc_6BE2: - ; sub_6AF2+1EEj - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6BF4: - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6BF7: - ; sub_6AF2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C07: - ; sub_6AF2+1EEj - mov dx, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - xor ax, ax - -loc_6C0F: - push bx - pop bx - call [bp+arg_8] - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C17: - ; sub_6AF2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6C25: - call word ptr [bp+arg_8] - jmp short loc_6C3B -; --------------------------------------------------------------------------- - -loc_6C2A: - ; sub_6AF2+1EEj - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - xor ax, ax - -loc_6C38: - call [bp+arg_8] - -loc_6C3B: - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C3E: - ; sub_6AF2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - jmp short loc_6C58 -; --------------------------------------------------------------------------- - -loc_6C4C: - ; sub_6AF2+1EEj - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - xor ax, ax - push ax - -loc_6C55: - call [bp+arg_8] - -loc_6C58: - ; sub_6AF2+1FCj - pop cx - pop cx - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C5D: - ; sub_6AF2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call word ptr [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C74: - ; sub_6AF2+1EEj - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - xor ax, ax - push ax - call [bp+arg_8] - add sp, 6 - pop ds - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6C8B: - ; sub_6AF2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6C94: - call word ptr [bp+arg_8] - jmp short loc_6CA5 -; --------------------------------------------------------------------------- - -loc_6C99: - ; sub_6AF2+1EEj - mov si, word ptr [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_4] - -loc_6CA2: - call [bp+arg_8] - -loc_6CA5: - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6CA8: - ; sub_6AF2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6CBC: - ; sub_6AF2+1EEj - push ds - lds si, [bp+arg_0] - xor ax, ax - push ax - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6CD0: - ; sub_6AF2+1EEj - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6CD3: - mov bx, [bp+var_4] - cmp bx, 17h - jbe short loc_6CDE - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6CDE: - add bx, bx - jmp cs:off_6DE0[bx] - -loc_6CE5: - push [bp+arg_4] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp loc_6C58 -; --------------------------------------------------------------------------- - -loc_6CF1: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6C55 -; --------------------------------------------------------------------------- - -loc_6CFA: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_8] - jmp short loc_6D1A -; --------------------------------------------------------------------------- - -loc_6D0B: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_8] - -loc_6D1A: - add sp, 8 - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6D20: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6C94 -; --------------------------------------------------------------------------- - -loc_6D29: - push [bp+arg_4] - push word ptr [bp+arg_0] - jmp loc_6CA2 -; --------------------------------------------------------------------------- - -loc_6D32: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - push bx - pop bx - call word ptr [bp+arg_8] - jmp loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6D40: - mov ax, word ptr [bp+arg_0] - mov bx, [bp+arg_4] - jmp loc_6C0F -; --------------------------------------------------------------------------- - -loc_6D49: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6C25 -; --------------------------------------------------------------------------- - -loc_6D58: - push [bp+arg_6] - push [bp+arg_4] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - jmp loc_6C38 -; --------------------------------------------------------------------------- - -loc_6D67: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6D73: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - pop cx - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6D7F: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6D91: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop cx - pop cx - pop ds - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6DA3: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call word ptr [bp+arg_8] - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6DAE: - mov si, word ptr [bp+arg_0] - push [bp+arg_4] - call [bp+arg_8] - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6DB9: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call word ptr [bp+arg_8] - pop ds - jmp short loc_6DD9 -; --------------------------------------------------------------------------- - -loc_6DC9: - push ds - lds si, [bp+arg_0] - push [bp+arg_6] - push [bp+arg_4] - call [bp+arg_8] - pop ds - jmp short $+2 - -loc_6DD9: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6AF2 endp - -; --------------------------------------------------------------------------- -off_6DE0 dw offset loc_6CE5 - dw offset loc_6CF1 - dw offset loc_6CFA - dw offset loc_6D0B - dw offset loc_6D20 - dw offset loc_6D29 - dw offset loc_6D49 - dw offset loc_6D58 - dw offset loc_6D32 - dw offset loc_6D40 - dw offset loc_6D49 - dw offset loc_6D58 - dw offset loc_6DD9 - dw offset loc_6DD9 - dw offset loc_6DD9 - dw offset loc_6DD9 - dw offset loc_6D67 - dw offset loc_6D73 - dw offset loc_6D7F - dw offset loc_6D91 - dw offset loc_6DA3 - dw offset loc_6DAE - dw offset loc_6DB9 - dw offset loc_6DC9 -off_6E10 dw offset loc_6B60 - dw offset loc_6B72 - dw offset loc_6B84 - dw offset loc_6B98 - dw offset loc_6BB0 - dw offset loc_6BBF - dw offset loc_6BCE - dw offset loc_6BE2 - dw offset loc_6BF7 - dw offset loc_6C07 - dw offset loc_6C17 - dw offset loc_6C2A - dw offset loc_6CD0 - dw offset loc_6CD0 - dw offset loc_6CD0 - dw offset loc_6CD0 - dw offset loc_6C3E - dw offset loc_6C4C - dw offset loc_6C5D - dw offset loc_6C74 - dw offset loc_6C8B - dw offset loc_6C99 - dw offset loc_6CA8 - dw offset loc_6CBC - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6E40 proc near - ; sub_7ACF+2Bp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - cmp [bp+arg_A], 0 - jz short loc_6E53 - mov ax, 2 - jmp short loc_6E55 -; --------------------------------------------------------------------------- - -loc_6E53: - xor ax, ax - -loc_6E55: - mov [bp+var_2], ax - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_4], ax - push ds - mov ds, [bp+var_4] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_6], ax - test byte ptr [bp+arg_8], 4 - jz short loc_6E7B - or [bp+var_6], 2 - -loc_6E7B: - test byte ptr [bp+arg_8], 2 - jz short loc_6E8F - or [bp+var_6], 4 - test byte ptr [bp+arg_8+1], 1 - jnz short loc_6E8F - or [bp+var_6], 20h - -loc_6E8F: - test byte ptr [bp+arg_8], 20h - jz short loc_6E99 - or [bp+var_6], 8 - -loc_6E99: - test byte ptr [bp+arg_8], 80h - jz short loc_6EA3 - or [bp+var_6], 10h - -loc_6EA3: - mov bx, [bp+var_6] - cmp bx, 17h - jbe short loc_6EAE - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6EAE: - add bx, bx - jmp cs:off_6FC8[bx] - -loc_6EB5: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - pop cx - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6EC3: - push [bp+var_2] - push word ptr [bp+arg_0] - call [bp+arg_4] - pop cx - pop cx - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6ED1: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - add sp, 6 - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6EE3: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - add sp, 6 - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6EF5: - push [bp+var_2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6F5B -; --------------------------------------------------------------------------- - -loc_6F00: - push [bp+var_2] - push word ptr [bp+arg_0] - jmp short loc_6F58 -; --------------------------------------------------------------------------- - -loc_6F08: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_6F22 -; --------------------------------------------------------------------------- - -loc_6F16: - push [bp+var_2] - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - call [bp+arg_4] - -loc_6F22: - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F25: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call word ptr [bp+arg_4] - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F33: - mov bx, word ptr [bp+arg_0] - mov ax, [bp+var_2] - push bx - pop bx - call [bp+arg_4] - jmp loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F41: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_6F5B -; --------------------------------------------------------------------------- - -loc_6F4F: - push word ptr [bp+arg_0+2] - push word ptr [bp+arg_0] - mov ax, [bp+var_2] - -loc_6F58: - call [bp+arg_4] - -loc_6F5B: - ; sub_6E40+10Dj - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F5D: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F69: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F75: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop cx - pop ds - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F83: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop cx - pop ds - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F91: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6F9C: - mov si, word ptr [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6FA7: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call word ptr [bp+arg_4] - pop ds - jmp short loc_6FC1 -; --------------------------------------------------------------------------- - -loc_6FB4: - push ds - lds si, [bp+arg_0] - push [bp+var_2] - call [bp+arg_4] - pop ds - jmp short $+2 - -loc_6FC1: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6E40 endp - -; --------------------------------------------------------------------------- -off_6FC8 dw offset loc_6EB5 - dw offset loc_6EC3 - dw offset loc_6ED1 - dw offset loc_6EE3 - dw offset loc_6EF5 - dw offset loc_6F00 - dw offset loc_6F08 - dw offset loc_6F16 - dw offset loc_6F25 - dw offset loc_6F33 - dw offset loc_6F41 - dw offset loc_6F4F - dw offset loc_6FC1 - dw offset loc_6FC1 - dw offset loc_6FC1 - dw offset loc_6FC1 - dw offset loc_6F5D - dw offset loc_6F69 - dw offset loc_6F75 - dw offset loc_6F83 - dw offset loc_6F91 - dw offset loc_6F9C - dw offset loc_6FA7 - dw offset loc_6FB4 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_6FF8 proc near - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 4 - push si - push di - les bx, ss:16h - mov ax, es:[bx+6] - mov [bp+var_2], ax - push ds - mov ds, [bp+var_2] - mov ax, [bp+arg_8] - and ax, 1 - mov [bp+var_4], ax - test byte ptr [bp+arg_8], 4 - jz short loc_7023 - or [bp+var_4], 2 - -loc_7023: - test byte ptr [bp+arg_8], 2 - jz short loc_702D - or [bp+var_4], 4 - -loc_702D: - test byte ptr [bp+arg_8], 20h - jz short loc_7037 - or [bp+var_4], 8 - -loc_7037: - mov bx, [bp+var_4] - cmp bx, 0Bh - ja short loc_70AA - add bx, bx - jmp cs:off_70B1[bx] - -loc_7046: - push [bp+arg_0] - call word ptr [bp+arg_4] - pop cx - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_704F: - push [bp+arg_0] - call [bp+arg_4] - pop cx - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_7058: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_706C -; --------------------------------------------------------------------------- - -loc_7063: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_706C: - pop cx - pop cx - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_7070: - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_707E -; --------------------------------------------------------------------------- - -loc_7078: - push [bp+arg_0] - call [bp+arg_4] - -loc_707E: - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_7080: - mov bx, [bp+arg_0] - push bx - pop bx - call word ptr [bp+arg_4] - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_708A: - mov bx, [bp+arg_0] - push bx - pop bx - call [bp+arg_4] - jmp short loc_70AA -; --------------------------------------------------------------------------- - -loc_7094: - push [bp+arg_2] - push [bp+arg_0] - call word ptr [bp+arg_4] - jmp short loc_70A8 -; --------------------------------------------------------------------------- - -loc_709F: - push [bp+arg_2] - push [bp+arg_0] - call [bp+arg_4] - -loc_70A8: - jmp short $+2 - -loc_70AA: - pop ds - pop di - pop si - mov sp, bp - pop bp - retn -sub_6FF8 endp - -; --------------------------------------------------------------------------- -off_70B1 dw offset loc_7046 - dw offset loc_704F - dw offset loc_7058 - dw offset loc_7063 - dw offset loc_7070 - dw offset loc_7078 - dw offset loc_7094 - dw offset loc_709F - dw offset loc_7080 - dw offset loc_708A - dw offset loc_7094 - dw offset loc_709F - db 4 dup(0), 87h, 73h - dw seg seg000 - db 14h dup(0), 0E0h, 73h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0C9h, 70h - dw seg seg000 - db 2 dup(0), 4, 3 dup(0), 3, 0, 0E1h, 70h - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far sub_7117(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) -sub_7117 proc far - ; _ReThrowException(uint,uchar *)+9Ep - -var_48 = word ptr -48h -var_46 = word ptr -46h -var_44 = word ptr -44h -var_42 = word ptr -42h -var_40 = word ptr -40h -var_3E = word ptr -3Eh -var_3C = word ptr -3Ch -var_3A = word ptr -3Ah -var_38 = dword ptr -38h -var_34 = dword ptr -34h -var_30 = dword ptr -30h -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -n = word ptr -28h -var_26 = dword ptr -26h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh -arg_1A = word ptr 20h -arg_1C = word ptr 22h -arg_1E = word ptr 24h - - push bp - mov bp, sp - sub sp, 48h - push si - push di - mov ax, seg seg000 - mov bx, 70F9h - nopcall ___InitExceptBlocks - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - les bx, ss:16h - mov word ptr es:[bx+6], ds - mov dx, ss:18h - mov ax, ss:16h - add ax, 28h ; '(' - les bx, ss:16h - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - les bx, [bp+var_22] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - add ax, es:[bx+4] - mov word ptr [bp+var_34+2], dx - mov word ptr [bp+var_34], ax - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov word ptr [bp+var_38+2], dx - mov word ptr [bp+var_38], ax - jmp short loc_71A3 -; --------------------------------------------------------------------------- - -loc_7180: - les bx, ss:16h - mov ax, es:[bx+1Ch] - add ax, 7Fh ; '' - cmp ax, word ptr [bp+var_38] - jbe short loc_71A0 - les bx, [bp+var_34] - mov al, es:[bx] - les bx, [bp+var_38] - mov es:[bx], al - inc word ptr [bp+var_38] - -loc_71A0: - inc word ptr [bp+var_34] - -loc_71A3: - les bx, [bp+var_34] - cmp byte ptr es:[bx], 0 - jnz short loc_7180 - les bx, [bp+var_38] - mov byte ptr es:[bx], 0 - les bx, ss:16h - mov ax, [bp+arg_14] - mov es:[bx+1Ah], ax - les bx, ss:16h - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+18h], dx - mov es:[bx+16h], ax - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - les bx, [bp+var_22] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_22] - mov ax, es:[bx+2] - mov [bp+var_2A], ax - test byte ptr [bp+var_2A], 2 - jz short loc_7200 - les bx, [bp+var_22] - mov ax, es:[bx+8] - jmp short loc_7202 -; --------------------------------------------------------------------------- - -loc_7200: - xor ax, ax - -loc_7202: - mov [bp+var_2C], ax - test byte ptr [bp+var_2A], 30h - jz short loc_721C - les bx, [bp+var_26] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_26+2], dx - mov word ptr [bp+var_26], ax - -loc_721C: - mov ax, [bp+n] - add ax, 3Ah ; ':' - push ax - push cs - call near ptr sub_6958 - pop cx - mov word ptr [bp+var_30+2], dx - mov word ptr [bp+var_30], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, ss:16h - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_22+2] - mov ax, word ptr [bp+var_22] - mov es:[bx+6], dx - mov es:[bx+4], ax - les bx, [bp+var_30] - mov ax, [bp+arg_12] - mov es:[bx+0Ch], ax - les bx, [bp+var_30] - mov ax, [bp+n] - mov es:[bx+0Eh], ax - les bx, [bp+var_30] - mov ax, [bp+var_2A] - mov es:[bx+14h], ax - les bx, [bp+var_30] - mov ax, [bp+var_2C] - mov es:[bx+16h], ax - les bx, [bp+var_30] - mov dx, word ptr [bp+var_26+2] - mov ax, word ptr [bp+var_26] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - les bx, [bp+var_30] - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - les bx, [bp+var_30] - mov word ptr es:[bx+24h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+28h], 0 - mov word ptr es:[bx+26h], 0 - les bx, [bp+var_30] - mov word ptr es:[bx+18h], ds - les bx, [bp+var_30] - mov word ptr es:[bx+1Ch], seg seg000 - mov word ptr es:[bx+1Ah], 69B4h - les bx, [bp+var_30] - mov ax, [bp+arg_14] - mov es:[bx+2Ch], ax - les bx, [bp+var_30] - mov dx, [bp+arg_18] - mov ax, [bp+arg_16] - mov es:[bx+30h], dx - mov es:[bx+2Eh], ax - les bx, [bp+var_30] - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov es:[bx+20h], dx - mov es:[bx+1Eh], ax - les bx, [bp+var_30] - mov ax, [bp+arg_10] - mov es:[bx+22h], ax - les bx, [bp+var_30] - mov byte ptr es:[bx+39h], 0 - les bx, [bp+var_30] - mov byte ptr es:[bx+38h], 1 - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - test byte ptr [bp+var_2C], 1 - jz short loc_73A6 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_3A], dx - mov [bp+var_3C], ax - mov [bp+var_12], 6 - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push word ptr [bp+src+2] - push word ptr [bp+src] - mov ax, word ptr [bp+var_30] - add ax, 3Ah ; ':' - push word ptr [bp+var_30+2] - push ax - call sub_6AF2 - add sp, 0Eh - mov [bp+var_12], 0 - jmp short loc_7391 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7391: - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, [bp+var_3A] - mov cx, [bp+var_3C] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_73A6: - cmp [bp+arg_1E], 0 - jnz short loc_73EA - test byte ptr [bp+var_2C], 2 - jz short loc_73EA - mov [bp+var_12], 12h - mov ax, 1 - push ax - les bx, [bp+var_22] - push word ptr es:[bx+22h] - les bx, [bp+var_22] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_6E40 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_73EA -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_73EA: - ; sub_7117+299j ... - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - mov [bp+var_46], dx - mov [bp+var_48], ax - mov dx, [bp+arg_1C] - mov ax, [bp+arg_1A] - mov [bp+var_42], dx - mov [bp+var_44], ax - mov dx, word ptr [bp+var_30+2] - mov ax, word ptr [bp+var_30] - mov [bp+var_3E], dx - mov [bp+var_40], ax - push ss - lea ax, [bp+var_48] - push ax - xor ax, ax - mov dx, 3 - push ax - push dx - xor ax, ax - mov dx, 1 - push ax - push dx - mov ax, 0EEFh - mov dx, 0FACEh - push ax - push dx - nop - push cs - call near ptr _RaiseException - add sp, 10h - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_7117 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) -@_ThrowException$qnvt1t1t1uiuiuinuc proc far - ; xalloc::raise(void)+6Cp ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -src = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah -arg_16 = word ptr 1Ch -arg_18 = word ptr 1Eh - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_6], bp - mov bx, [bp+var_6] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - xor ax, ax - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_18] ; int - push [bp+arg_16] ; int - push [bp+arg_14] ; int - push [bp+arg_12] ; int - push [bp+arg_10] ; int - push [bp+arg_E] ; int - push [bp+arg_C] ; int - push [bp+arg_A] ; int - push [bp+arg_8] ; int - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push [bp+arg_2] ; int - push [bp+arg_0] ; int - push cs - call near ptr sub_7117 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ThrowException$qnvt1t1t1uiuiuinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _ReThrowException(unsigned int, unsigned char *) -@_ReThrowException$quinuc proc far - -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 0Ah - push si - push di - mov [bp+var_A], bp - mov bx, [bp+var_A] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, word ptr [bp+var_8] - or ax, word ptr [bp+var_8+2] - jnz short loc_74DA - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - -loc_74DA: - mov ax, 1 - push ax ; int - push [bp+var_2] ; int - push [bp+var_4] ; int - push [bp+arg_4] ; int - push [bp+arg_2] ; int - push [bp+arg_0] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ch] ; int - les bx, [bp+var_8] - push word ptr es:[bx+22h] ; int - les bx, [bp+var_8] - push word ptr es:[bx+20h] ; int - push word ptr es:[bx+1Eh] ; int - les bx, [bp+var_8] - push word ptr es:[bx+0Ah] ; int - push word ptr es:[bx+8] ; int - les bx, [bp+var_8] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7526 - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - add ax, 3Ah ; ':' - jmp short loc_752F -; --------------------------------------------------------------------------- - -loc_7526: - les bx, [bp+var_8] - mov ax, es:[bx+36h] - mov dx, ss - -loc_752F: - push dx - push ax ; src - les bx, [bp+var_8] - push word ptr es:[bx+6] ; int - push word ptr es:[bx+4] ; int - push cs - call near ptr sub_7117 - add sp, 20h - pop di - pop si - mov sp, bp - pop bp - retf -@_ReThrowException$quinuc endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7549 proc far - push si - push di - pop di - pop si - retf -sub_7549 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_754E proc far - ; _RaiseException+2A6p ... - -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov [bp+var_4], 0 - mov bx, [bp+arg_0] - test byte ptr ss:[bx+4], 6 - jz short loc_7568 - inc [bp+var_4] - -loc_7568: - mov ax, ss:14h - mov [bp+var_2], ax - push cs - call near ptr sub_7549 - jmp short loc_75B6 -; --------------------------------------------------------------------------- - -loc_7575: - mov ax, [bp+var_2] - mov [bp+var_6], ax - xor ax, ax - push ax - push ax - push [bp+arg_4] - push [bp+arg_2] - push [bp+var_2] - push ss - push [bp+arg_0] - mov bx, [bp+var_6] - call dword ptr ss:[bx+2] - add sp, 0Eh - mov dx, ax - or dx, dx - jnz short loc_75A0 - mov ax, dx - jmp short loc_75D4 -; --------------------------------------------------------------------------- - -loc_75A0: - cmp [bp+var_4], 0 - jz short loc_75AD - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_75AD: - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov [bp+var_2], ax - -loc_75B6: - cmp [bp+var_2], 0FFFFh - jz short loc_75C4 - mov ax, [bp+var_2] - cmp ax, [bp+arg_6] - jnz short loc_7575 - -loc_75C4: - cmp [bp+var_4], 0 - jz short loc_75D1 - mov ax, [bp+var_2] - mov ss:14h, ax - -loc_75D1: - mov ax, 1 - -loc_75D4: - pop di - pop si - mov sp, bp - pop bp - retf -sub_754E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Global_unwind proc far - -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = word ptr -46h -var_3E = word ptr -3Eh -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - sub sp, 4Ch - push si - push di - mov dx, [bp+arg_2] - or dx, dx - jnz short loc_7605 - mov [bp+var_4A], 0 - mov [bp+var_4C], 26h ; '&' - mov [bp+var_46], 0 - mov [bp+var_48], 2 - mov [bp+var_3E], 0 - lea dx, [bp+var_4C] - -loc_7605: - mov bx, dx - or word ptr ss:[bx+4], 2 - push [bp+arg_0] - xor ax, ax - push ax - push ax - push dx - push cs - call near ptr sub_754E - add sp, 8 - pop di - pop si - mov sp, bp - pop bp - retf -__Global_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -sub_7621 proc far - push si - push di - pop di - pop si - retf -sub_7621 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -_RaiseException proc far - -dest = word ptr -186h -var_184 = word ptr -184h -var_182 = word ptr -182h -var_180 = word ptr -180h -var_17E = word ptr -17Eh -var_17C = word ptr -17Ch -var_176 = word ptr -176h -var_174 = word ptr -174h -var_172 = word ptr -172h -var_170 = word ptr -170h -var_16E = word ptr -16Eh -var_16C = word ptr -16Ch -var_16A = word ptr -16Ah -var_168 = word ptr -168h -var_166 = word ptr -166h -var_164 = word ptr -164h -var_162 = word ptr -162h -var_160 = word ptr -160h -var_15E = word ptr -15Eh -var_15A = word ptr -15Ah -var_158 = word ptr -158h -var_156 = word ptr -156h -var_154 = word ptr -154h -var_152 = byte ptr -152h -var_C6 = word ptr -0C6h -var_C4 = word ptr -0C4h -var_C2 = word ptr -0C2h -var_C0 = word ptr -0C0h -var_BE = word ptr -0BEh -var_BC = word ptr -0BCh -var_BA = word ptr -0BAh -var_B8 = word ptr -0B8h -var_B6 = word ptr -0B6h -var_B4 = word ptr -0B4h -var_B2 = word ptr -0B2h -var_B0 = word ptr -0B0h -var_AE = word ptr -0AEh -var_AC = word ptr -0ACh -var_AA = word ptr -0AAh -var_A8 = word ptr -0A8h -var_A6 = word ptr -0A6h -var_A4 = word ptr -0A4h -var_A2 = word ptr -0A2h -var_A0 = word ptr -0A0h -var_9E = word ptr -9Eh -var_9C = word ptr -9Ch -var_9A = word ptr -9Ah -var_98 = word ptr -98h -var_96 = word ptr -96h -var_94 = word ptr -94h -var_92 = word ptr -92h -var_90 = word ptr -90h -var_8E = word ptr -8Eh -var_8C = word ptr -8Ch -var_8A = word ptr -8Ah -var_88 = word ptr -88h -var_86 = byte ptr -86h -var_56 = word ptr -56h -var_54 = word ptr -54h -var_52 = word ptr -52h -var_50 = word ptr -50h -var_4E = word ptr -4Eh -var_4C = word ptr -4Ch -var_4A = word ptr -4Ah -var_48 = word ptr -48h -var_46 = byte ptr -46h -src = dword ptr -0Ah -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 18h -arg_2 = word ptr 1Ah -arg_4 = word ptr 1Ch -arg_6 = word ptr 1Eh -arg_8 = word ptr 20h -arg_A = word ptr 22h -arg_C = dword ptr 24h - -; FUNCTION CHUNK AT 7A98 SIZE 0000000D BYTES - - push ax - push cx - push dx - push bx - push sp - push bp - push si - push di - push ds - push es - mov bp, sp - sub sp, 186h - lea ax, [bp+var_86] - push ax - push cs - call near ptr sub_7621 - pop cx - pushf - pop ax - mov word ptr [bp+src+2], ax - cmp byte ptr __8086, 3 - jnb short loc_764F - jmp loc_7705 -; --------------------------------------------------------------------------- - -loc_764F: - pushad - mov word ptr [bp+src], sp - mov ax, 20h ; ' ' - push ax ; n - push ss - push word ptr [bp+src] ; src - push ss - lea ax, [bp+dest] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - popad - mov dx, [bp+var_184] - mov ax, [bp+dest] - mov [bp+var_B4], dx - mov [bp+var_B6], ax - mov dx, [bp+var_180] - mov ax, [bp+var_182] - mov [bp+var_B0], dx - mov [bp+var_B2], ax - mov dx, [bp+var_174] - mov ax, [bp+var_176] - mov [bp+var_AC], dx - mov [bp+var_AE], ax - mov dx, [bp+var_170] - mov ax, [bp+var_172] - mov [bp+var_A8], dx - mov [bp+var_AA], ax - mov dx, [bp+var_16C] - mov ax, [bp+var_16E] - mov [bp+var_A4], dx - mov [bp+var_A6], ax - mov dx, [bp+var_168] - mov ax, [bp+var_16A] - mov [bp+var_A0], dx - mov [bp+var_A2], ax - mov dx, [bp+var_17C] - mov ax, [bp+var_17E] - mov [bp+var_9C], dx - mov [bp+var_9E], ax - pushfd - pop eax - shr eax, 10h - mov [bp+var_90], ax - mov ax, word ptr [bp+src+2] - mov [bp+var_92], ax - mov [bp+var_C0], 0 - mov [bp+var_C2], fs - mov [bp+var_C4], 0 - mov [bp+var_C6], gs - jmp short loc_774E -; --------------------------------------------------------------------------- - -loc_7705: - xor ax, ax - xor dx, dx - mov [bp+var_9C], ax - mov [bp+var_9E], dx - mov [bp+var_A0], ax - mov [bp+var_A2], dx - mov [bp+var_A4], ax - mov [bp+var_A6], dx - mov [bp+var_A8], ax - mov [bp+var_AA], dx - mov [bp+var_AC], ax - mov [bp+var_AE], dx - mov [bp+var_B0], ax - mov [bp+var_B2], dx - mov [bp+var_B4], ax - mov [bp+var_B6], dx - mov ax, word ptr [bp+src+2] - mov [bp+var_90], 0 - mov [bp+var_92], ax - -loc_774E: - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - add ax, 18h - adc dx, 0 - mov [bp+var_8C], dx - mov [bp+var_8E], ax - cmp [bp+arg_2], 0EEFh - jnz short loc_777F - cmp [bp+arg_0], 0FACEh - jnz short loc_777F - les bx, [bp+arg_C] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - jmp short loc_778D -; --------------------------------------------------------------------------- - -loc_777F: - ; _RaiseException+14Aj - mov word ptr [bp+src], bp - mov bx, word ptr [bp+src] - mov dx, ss:[bx+16h] - mov ax, ss:[bx+14h] - -loc_778D: - mov [bp+var_4], dx - mov [bp+var_6], ax - mov ax, [bp+var_6] - mov [bp+var_98], 0 - mov [bp+var_9A], ax - mov ax, [bp+var_4] - mov [bp+var_94], 0 - mov [bp+var_96], ax - mov ax, 14h - push ax ; n - push ss - push bp ; src - push ss - lea ax, [bp+var_166] - push ax ; dest - nopcall _memcpy - add sp, 0Ah - mov ax, [bp+var_164] - mov [bp+var_B8], 0 - mov [bp+var_BA], ax - mov ax, [bp+var_166] - mov [bp+var_BC], 0 - mov [bp+var_BE], ax - mov [bp+var_88], 0 - mov [bp+var_8A], ss - mov ax, [bp+var_154] - mov [bp+var_A2], ax - mov ax, [bp+var_15A] - mov [bp+var_AE], ax - mov ax, [bp+var_156] - mov [bp+var_A6], ax - mov ax, [bp+var_158] - mov [bp+var_AA], ax - mov ax, [bp+var_160] - mov [bp+var_B2], ax - mov ax, [bp+var_162] - mov [bp+var_B6], ax - mov ax, [bp+var_15E] - mov [bp+var_9E], ax - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - and dx, 0EFFFh - mov [bp+var_54], dx - mov [bp+var_56], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov dx, [bp+var_4] - mov ax, [bp+var_6] - mov [bp+var_4A], dx - mov [bp+var_4C], ax - mov [bp+var_4E], 0 - mov ax, word ptr [bp+arg_C] - or ax, word ptr [bp+arg_C+2] - jnz short loc_785E - mov [bp+arg_A], 0 - mov [bp+arg_8], 0 - -loc_785E: - cmp [bp+arg_A], 0 - jb short loc_7876 - ja short loc_786C - cmp [bp+arg_8], 0Fh - jbe short loc_7876 - -loc_786C: - mov [bp+arg_A], 0 - mov [bp+arg_8], 0Fh - -loc_7876: - ; _RaiseException+244j - mov ax, [bp+arg_8] - mov [bp+var_48], ax - mov [bp+var_2], 0 - jmp short loc_78AC -; --------------------------------------------------------------------------- - -loc_7883: - ; _RaiseException+295j - mov bx, [bp+var_2] - mov cl, 2 - shl bx, cl - lea ax, [bp+var_46] - add bx, ax - mov ax, [bp+var_2] - mov cl, 2 - shl ax, cl - les si, [bp+arg_C] - add si, ax - mov dx, es:[si+2] - mov ax, es:[si] - mov ss:[bx+2], dx - mov ss:[bx], ax - inc [bp+var_2] - -loc_78AC: - mov ax, [bp+var_2] - xor dx, dx - cmp dx, [bp+arg_A] - jb short loc_7883 - jnz short loc_78BD - cmp ax, [bp+arg_8] - jb short loc_7883 - -loc_78BD: - ; _RaiseException+2E0j - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_754E - add sp, 8 - or ax, ax - jnz short loc_7908 - test byte ptr [bp+arg_4], 1 - jz short loc_7928 - mov [bp+var_54], 0C000h - mov [bp+var_56], 25h ; '%' - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov [bp+var_50], dx - mov [bp+var_52], ax - mov [bp+var_4A], 0 - mov [bp+var_4C], 0 - mov [bp+var_4E], 0 - mov [bp+var_48], 0 - jmp short loc_78BD -; --------------------------------------------------------------------------- - -loc_7908: - or [bp+var_52], 2 - mov ax, 0FFFFh - push ax - push ss - lea ax, [bp+var_152] - push ax - lea ax, [bp+var_56] - push ax - push cs - call near ptr sub_754E - add sp, 8 - or ax, ax - jz short loc_7928 - jmp loc_7A93 -; --------------------------------------------------------------------------- - -loc_7928: - ; _RaiseException+2FDj - cmp byte ptr __8086, 3 - jnb short loc_7932 - jmp loc_7A12 -; --------------------------------------------------------------------------- - -loc_7932: - mov cx, [bp+var_8E] - sub cx, 30h ; '0' - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_C6] - mov es:[bx], ax - mov ax, [bp+var_C2] - mov es:[bx+2], ax - mov ax, [bp+var_BE] - mov es:[bx+4], ax - mov ax, [bp+var_BA] - mov es:[bx+6], ax - mov dx, [bp+var_B4] - mov ax, [bp+var_B6] - mov es:[bx+0Ah], dx - mov es:[bx+8], ax - mov dx, [bp+var_B0] - mov ax, [bp+var_B2] - mov es:[bx+0Eh], dx - mov es:[bx+0Ch], ax - mov dx, [bp+var_9C] - mov ax, [bp+var_9E] - mov es:[bx+12h], dx - mov es:[bx+10h], ax - mov dx, [bp+var_8C] - mov ax, [bp+var_8E] - mov es:[bx+16h], dx - mov es:[bx+14h], ax - mov dx, [bp+var_AC] - mov ax, [bp+var_AE] - mov es:[bx+1Ah], dx - mov es:[bx+18h], ax - mov dx, [bp+var_A8] - mov ax, [bp+var_AA] - mov es:[bx+1Eh], dx - mov es:[bx+1Ch], ax - mov dx, [bp+var_A4] - mov ax, [bp+var_A6] - mov es:[bx+22h], dx - mov es:[bx+20h], ax - mov dx, [bp+var_A0] - mov ax, [bp+var_A2] - mov es:[bx+26h], dx - mov es:[bx+24h], ax - mov dx, [bp+var_90] - mov ax, [bp+var_92] - mov es:[bx+2Ah], dx - mov es:[bx+28h], ax - mov ax, [bp+var_9A] - mov es:[bx+2Ch], ax - mov ax, [bp+var_96] - mov es:[bx+2Eh], ax - mov ss, [bp+var_8A] - mov sp, bx - pop gs - pop fs - pop es - pop ds - popad - popfd - retf -; --------------------------------------------------------------------------- - jmp loc_7A98 -; --------------------------------------------------------------------------- - -loc_7A12: - mov cx, [bp+var_8E] - sub cx, 1Ah - mov es, [bp+var_8A] - mov bx, cx - mov ax, [bp+var_BE] - mov es:[bx], ax - mov ax, [bp+var_BA] - mov es:[bx+2], ax - mov ax, [bp+var_B6] - mov es:[bx+4], ax - mov ax, [bp+var_B2] - mov es:[bx+6], ax - mov ax, [bp+var_9E] - mov es:[bx+8], ax - mov ax, [bp+var_8E] - mov es:[bx+0Ah], ax - mov ax, [bp+var_AE] - mov es:[bx+0Ch], ax - mov ax, [bp+var_AA] - mov es:[bx+0Eh], ax - mov ax, [bp+var_A6] - mov es:[bx+10h], ax - mov ax, [bp+var_A2] - mov es:[bx+12h], ax - mov ax, [bp+var_92] - mov es:[bx+14h], ax - mov ax, [bp+var_9A] - mov es:[bx+16h], ax - mov ax, [bp+var_96] - mov es:[bx+18h], ax - mov ss, [bp+var_8A] - mov sp, bx - pop es - pop ds - popa - popf - retf -; --------------------------------------------------------------------------- - jmp short loc_7A98 -; --------------------------------------------------------------------------- - -loc_7A93: - nop - push cs - call near ptr ___call_terminate -_RaiseException endp - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR _RaiseException - -loc_7A98: - ; _RaiseException+46Bj - mov sp, bp - pop es - pop ds - pop di - pop si - pop bp - pop bx - pop bx - pop dx - pop cx - pop ax - retf -; END OF FUNCTION CHUNK FOR _RaiseException -; --------------------------------------------------------------------------- - db 4 dup(0), 7, 7Bh - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0A5h, 7Ah - dw seg seg000 - db 2 dup(0), 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7ACF proc near - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 7ABDh - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov ax, 1 - push ax - push [bp+arg_8] - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - call sub_6E40 - add sp, 0Ch - mov [bp+var_12], 0 - jmp short loc_7B11 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - nop - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_7B11: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retn -sub_7ACF endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7B1F proc near - ; sub_8069+138p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - cmp byte ptr es:[bx+38h], 0 - jz short loc_7B9A - les bx, [bp+arg_0] - test byte ptr es:[bx+16h], 2 - jz short loc_7B92 - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+arg_0] - les bx, es:[bx+4] - mov word ptr [bp+var_4+2], es - mov word ptr [bp+var_4], bx - push word ptr es:[bx+22h] - les bx, [bp+var_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - mov ax, word ptr [bp+arg_0] - add ax, 3Ah ; ':' - push word ptr [bp+arg_0+2] - push ax - call sub_7ACF - add sp, 0Ah - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, word ptr [bp+var_8+2] - mov cx, word ptr [bp+var_8] - mov es, dx - xchg ax, bx - mov es:[bx+2], ax - mov es:[bx], cx - -loc_7B92: - les bx, [bp+arg_0] - mov byte ptr es:[bx+38h], 0 - -loc_7B9A: - les bx, [bp+arg_0] - cmp byte ptr es:[bx+39h], 0 - jz short loc_7BF1 - les bx, [bp+arg_0] - mov dx, es:[bx+34h] - mov ax, es:[bx+32h] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+2], 2 - jz short loc_7BE9 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_7BE9 - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push ss - les bx, [bp+arg_0] - push word ptr es:[bx+36h] - call sub_7ACF - add sp, 0Ah - -loc_7BE9: - les bx, [bp+arg_0] - mov byte ptr es:[bx+39h], 0 - -loc_7BF1: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7B1F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; _CatchCleanup(void) -@_CatchCleanup$qv proc far - ; sub_7117+277p ... - -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - les bx, ss:16h - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, ss:16h - mov es:[bx+2], dx - mov es:[bx], ax - les bx, [bp+var_4] - mov ax, es:[bx+24h] - mov [bp+var_6], ax - mov bx, [bp+var_6] - les ax, ss:[bx+arg_0] - mov bx, [bp+var_6] - add ax, ss:[bx+arg_6] - mov bx, ax - mov ax, es:[bx] - mov bx, [bp+var_6] - mov ss:[bx+arg_6], ax - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - call sub_7B1F - pop cx - pop cx - push ds - les bx, [bp+var_4] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - les bx, [bp+var_4] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - pop di - pop si - mov sp, bp - pop bp - retf -@_CatchCleanup$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7C74 proc near - -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 0Ch - push si - push di - -loc_7C7C: - les bx, [bp+arg_0] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - mov ax, word ptr [bp+var_4] - or ax, word ptr [bp+var_4+2] - jnz short loc_7C99 - xor ax, ax - jmp loc_7D3A -; --------------------------------------------------------------------------- - -loc_7C99: - mov bx, [bp+arg_A] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - les bx, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - cmp [bp+arg_4], 0 - jz short loc_7CC5 - les bx, [bp+var_8] - mov ax, es:[bx] - mov dx, word ptr [bp+var_8+2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - -loc_7CC5: - push [bp+arg_8] - push [bp+arg_6] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_7D1E - les bx, [bp+var_4] - test byte ptr es:[bx+2], 2 - jz short loc_7D33 - les bx, [bp+var_4] - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - add ax, es:[bx+0Ah] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_C] - or ax, [bp+var_A] - jz short loc_7D33 - lea ax, [bp+var_8] - push ax - push [bp+arg_8] - push [bp+arg_6] - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - call sub_7C74 - add sp, 0Ch - or ax, ax - jz short loc_7D33 - -loc_7D1E: - mov bx, [bp+arg_A] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - mov ss:[bx+2], dx - mov ss:[bx], ax - mov ax, 1 - jmp short loc_7D3A -; --------------------------------------------------------------------------- - -loc_7D33: - add word ptr [bp+arg_0], 8 - jmp loc_7C7C -; --------------------------------------------------------------------------- - -loc_7D3A: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7C74 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7D40 proc far - ; sub_7DC3+1C2p - -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jz short loc_7DB1 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7C74 - add sp, 0Ch - or ax, ax - jnz short loc_7DB1 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov [bp+var_2], dx - mov [bp+var_4], ax - lea ax, [bp+arg_0] - push ax - push [bp+arg_A] - push [bp+arg_8] - mov ax, 1 - push ax - push [bp+var_2] - push [bp+var_4] - call sub_7C74 - add sp, 0Ch - or ax, ax - jz short loc_7DB9 - -loc_7DB1: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - jmp short loc_7DBD -; --------------------------------------------------------------------------- - -loc_7DB9: - xor dx, dx - xor ax, ax - -loc_7DBD: - pop di - pop si - mov sp, bp - pop bp - retf -sub_7D40 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_7DC3 proc near - -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -src = dword ptr -0Eh -n = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_6 = dword ptr 0Ah -arg_A = dword ptr 0Eh -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 18h - push si - push di - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+arg_6] - mov es:[bx+34h], dx - mov es:[bx+32h], ax - mov ax, [bp+var_4] - or ax, [bp+var_2] - jnz short loc_7DF2 - jmp loc_8063 -; --------------------------------------------------------------------------- - -loc_7DF2: - les bx, [bp+arg_0] - test byte ptr es:[bx+8], 80h - jz short loc_7DFF - jmp loc_8063 -; --------------------------------------------------------------------------- - -loc_7DFF: - les bx, [bp+arg_0] - mov ax, es:[bx+8] - and ax, 1 - neg ax - sbb ax, ax - inc ax - mov [bp+var_14], ax - mov dx, word ptr [bp+arg_6+2] - mov ax, word ptr [bp+arg_6] - add ax, 3Ah ; ':' - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - mov byte ptr es:[bx+39h], 1 - les bx, [bp+arg_A] - mov ax, es:[bx] - add ax, [bp+arg_E] - les bx, [bp+arg_6] - mov es:[bx+36h], ax - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov ax, es:[bx] - mov [bp+n], ax - les bx, [bp+var_8] - mov cx, es:[bx+2] - mov dx, cx - test cl, 30h - jz short loc_7E73 - les bx, [bp+var_8] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx+2] - -loc_7E73: - test cl, 10h - jz short loc_7E9B - les bx, [bp+arg_6] - test byte ptr es:[bx+0Ch], 1 - jz short loc_7E9B - push [bp+n] ; n - xor ax, ax - push ax ; c - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; s - nopcall _memset - add sp, 8 - jmp loc_7FC6 -; --------------------------------------------------------------------------- - -loc_7E9B: - test dl, 1 - jnz short loc_7EA3 - jmp loc_7F47 -; --------------------------------------------------------------------------- - -loc_7EA3: - test cl, 30h - jnz short loc_7EAB - jmp loc_7F47 -; --------------------------------------------------------------------------- - -loc_7EAB: - test cl, 20h - jz short loc_7EB2 - jmp short loc_7ED5 -; --------------------------------------------------------------------------- - -loc_7EB2: - les bx, [bp+src] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - les bx, [bp+arg_6] - test byte ptr es:[bx+15h], 10h - jz short loc_7EDC - mov ax, word ptr [bp+src] - mov word ptr [bp+src+2], ds - mov word ptr [bp+src], ax - -loc_7ED5: - mov [bp+var_14], 1 - jmp short $+2 - -loc_7EDC: - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_7F3D - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - mov [bp+var_16], dx - mov [bp+var_18], ax - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7D40 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - cmp dx, [bp+var_16] - jnz short loc_7F38 - cmp ax, [bp+var_18] - jz short loc_7F3D - -loc_7F38: - mov [bp+var_14], 1 - -loc_7F3D: - ; sub_7DC3+173j - push [bp+n] - push ss - lea ax, [bp+src] - jmp loc_8011 -; --------------------------------------------------------------------------- - -loc_7F47: - les bx, [bp+arg_6] - test byte ptr es:[bx+14h], 1 - jz short loc_7FCD - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_7F96 - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - les bx, [bp+arg_6] - push word ptr es:[bx+12h] - push word ptr es:[bx+10h] - push word ptr [bp+src+2] - push word ptr [bp+src] - push cs - call near ptr sub_7D40 - add sp, 0Ch - mov word ptr [bp+src+2], dx - mov word ptr [bp+src], ax - mov [bp+var_14], 1 - -loc_7F96: - les bx, [bp+var_8] - test byte ptr es:[bx+8], 1 - jz short loc_8014 - les bx, [bp+arg_0] - push word ptr es:[bx+0Eh] - les bx, [bp+arg_0] - push word ptr es:[bx+0Ch] - push word ptr es:[bx+0Ah] - push word ptr [bp+src+2] - push word ptr [bp+src] - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] - call sub_6AF2 - add sp, 0Eh - -loc_7FC6: - ; sub_7DC3+227j - mov [bp+var_14], 1 - jmp short loc_802D -; --------------------------------------------------------------------------- - -loc_7FCD: - test cl, 20h - jz short loc_7FEC - push [bp+n] ; n - push ss - lea ax, [bp+src] - push ax ; src - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - jmp short loc_7FC6 -; --------------------------------------------------------------------------- - -loc_7FEC: - test cl, 10h - jz short loc_8014 - les bx, [bp+arg_6] - mov ax, es:[bx+0Eh] - cmp ax, [bp+n] - jz short loc_8014 - les bx, [bp+src] - -loc_8000: - mov ax, es:[bx] - mov [bp+var_10], ds - mov [bp+var_12], ax - mov ax, 4 - push ax - push ss - lea ax, [bp+var_12] - -loc_8011: - push ax - jmp short loc_801D -; --------------------------------------------------------------------------- - -loc_8014: - ; sub_7DC3+22Cj ... - push [bp+n] ; n - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - -loc_801D: - push ss - les bx, [bp+arg_6] - push word ptr es:[bx+36h] ; dest - nopcall _memcpy - add sp, 0Ah - -loc_802D: - cmp [bp+var_14], 0 - jnz short loc_8063 - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_805B - les bx, [bp+var_8] - push word ptr es:[bx+22h] - les bx, [bp+var_8] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push word ptr [bp+src+2] - push word ptr [bp+src] - call sub_7ACF - add sp, 0Ah - -loc_805B: - les bx, [bp+arg_6] - mov byte ptr es:[bx+38h], 0 - -loc_8063: - pop di - pop si - mov sp, bp - pop bp - retn -sub_7DC3 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8069 proc near - ; __Return_unwind+15p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = dword ptr -1Ah -var_16 = dword ptr -16h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_A] - mov es:[bx+6], ax - mov [bp+var_C], ax - les bx, ss:16h - mov si, [bp+arg_0] - mov ax, ss:[si+arg_C] - mov es:[bx+8], ax - mov bx, [bp+arg_0] - mov dx, ss:[bx+arg_4] - mov ax, ss:[bx+arg_2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, [bp+arg_0] - sub ax, es:[bx+4] - mov [bp+var_A], ax - mov bx, [bp+arg_0] - mov ax, ss:[bx+arg_8] - jmp loc_820E -; --------------------------------------------------------------------------- - -loc_80C1: - mov ax, [bp+var_6] - mov [bp+var_12], ax - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_8], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_10], ax - add [bp+var_12], 2 - mov bx, [bp+arg_0] - mov ax, [bp+var_8] - mov ss:[bx+arg_8], ax - mov bx, [bp+var_10] - cmp bx, 5 - jbe short loc_80FC - jmp loc_820B -; --------------------------------------------------------------------------- - -loc_80FC: - add bx, bx - jmp cs:off_8228[bx] - -loc_8103: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov word ptr dword_141B4+2, dx - mov word ptr dword_141B4, ax - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 1 - push ds - pop es - assume es:dseg - push ds - mov ds, [bp+var_C] - push bp - mov bp, [bp+var_A] - call es:dword_141B4 - pop bp - pop ds - mov bx, [bp+arg_0] - mov ss:[bx+arg_E], 0 - jmp loc_820B -; --------------------------------------------------------------------------- - -loc_813E: - add [bp+var_12], 4 - mov dx, ss:18h - mov ax, ss:16h - jmp short loc_816D -; --------------------------------------------------------------------------- - -loc_814D: - les bx, [bp+var_16] - assume es:nothing - mov ax, es:[bx+24h] - cmp ax, [bp+arg_0] - jnz short loc_8167 - les bx, [bp+var_16] - mov ax, es:[bx+2Ah] - cmp ax, [bp+var_6] - jnz short loc_8167 - jmp short loc_8187 -; --------------------------------------------------------------------------- - -loc_8167: - mov dx, word ptr [bp+var_16+2] - mov ax, word ptr [bp+var_16] - -loc_816D: - mov word ptr [bp+var_1A+2], dx - mov word ptr [bp+var_1A], ax - les bx, [bp+var_1A] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - or ax, dx - jnz short loc_814D - -loc_8187: - les bx, [bp+var_16] - mov dx, es:[bx+2] - mov ax, es:[bx] - les bx, [bp+var_1A] - mov es:[bx+2], dx - mov es:[bx], ax - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - call sub_7B1F - pop cx - pop cx - push ds - les bx, [bp+var_16] - mov ds, word ptr es:[bx+18h] - push word ptr [bp+var_16+2] - push word ptr [bp+var_16] - les bx, [bp+var_16] - call dword ptr es:[bx+1Ah] - pop cx - pop cx - pop ds - jmp short loc_820B -; --------------------------------------------------------------------------- - -loc_81C0: - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1C], ax - add [bp+var_12], 2 - les bx, [bp+var_4] - add bx, [bp+var_12] - mov ax, es:[bx] - mov [bp+var_1E], ds - mov [bp+var_20], ax - mov ax, word ptr [bp+var_4+2] - mov dx, [bp+var_20] - mov [bp+var_1E], ax - mov [bp+var_20], dx - push [bp+var_A] - push [bp+arg_0] - mov ax, [bp+var_1C] - add ax, [bp+var_E] - cwd - push dx - push ax - push [bp+var_1E] - push [bp+var_20] - call sub_8C3F - add sp, 0Ch - mov [bp+var_E], ax - jmp short $+2 - -loc_820B: - mov ax, [bp+var_8] - -loc_820E: - mov [bp+var_6], ax - cmp [bp+var_6], 0 - jz short loc_8222 - mov ax, [bp+var_6] - cmp ax, [bp+arg_2] - jz short loc_8222 - jmp loc_80C1 -; --------------------------------------------------------------------------- - -loc_8222: - ; sub_8069+1B4j - pop di - pop si - mov sp, bp - pop bp - retn -sub_8069 endp - -; --------------------------------------------------------------------------- -off_8228 dw offset loc_8103 - dw offset loc_820B - dw offset loc_820B - dw offset loc_820B - dw offset loc_813E - dw offset loc_81C0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Local_unwind proc far - -var_2 = word ptr -2 -arg_0 = word ptr 6 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - push [bp+arg_0] - push [bp+var_2] - call sub_8069 - pop cx - pop cx - pop di - pop si - mov sp, bp - pop bp - retf -__Local_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__Return_unwind proc far - -var_2 = word ptr -2 - - push bp - mov bp, sp - sub sp, 2 - push si - push di - mov ax, ss:14h - mov [bp+var_2], ax - xor ax, ax - push ax - push [bp+var_2] - call sub_8069 - pop cx - pop cx - mov bx, [bp+var_2] - mov ax, ss:[bx] - mov ss:14h, ax - pop di - pop si - mov sp, bp - pop bp - retf -__Return_unwind endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_827E proc near - -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, 4 - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - jmp short loc_82EC -; --------------------------------------------------------------------------- - -loc_8297: - les bx, [bp+var_4] - mov dx, es:[bx+6] - mov ax, es:[bx+4] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+var_8] - or ax, [bp+var_6] - jz short loc_82E0 - xor ax, ax - push ax - les bx, [bp+arg_4] - push word ptr es:[bx+0Ch] - push [bp+var_6] - push [bp+var_8] - les bx, [bp+arg_4] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_69ED - add sp, 10h - or ax, ax - jz short loc_82E8 - -loc_82E0: - mov dx, word ptr [bp+var_4+2] - mov ax, word ptr [bp+var_4] - jmp short loc_82FC -; --------------------------------------------------------------------------- - -loc_82E8: - add word ptr [bp+var_4], 10h - -loc_82EC: - les bx, [bp+var_4] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8297 - xor dx, dx - xor ax, ax - -loc_82FC: - pop di - pop si - mov sp, bp - pop bp - retn -sub_827E endp - -; --------------------------------------------------------------------------- - db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__ExceptionHandler proc far - -var_38 = word ptr -38h -var_36 = word ptr -36h -var_34 = word ptr -34h -var_32 = word ptr -32h -var_30 = word ptr -30h -var_2E = word ptr -2Eh -var_2C = word ptr -2Ch -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = dword ptr -24h -var_20 = dword ptr -20h -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_E = word ptr 14h -arg_10 = word ptr 16h -arg_12 = word ptr 18h -arg_14 = word ptr 1Ah - - push bp - mov bp, sp - sub sp, 38h - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - mov ax, [bp+arg_4] - mov [bp+var_4], ax - mov dx, [bp+arg_8] - mov ax, [bp+arg_6] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+arg_14] - mov ax, ss:[bx+arg_12] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - mov bx, [bp+var_4] - mov dx, ss:[bx+arg_2] - mov ax, ss:[bx+arg_0] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - les bx, [bp+var_10] - mov ax, [bp+var_4] - sub ax, es:[bx+4] - mov [bp+var_16], ax - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_4] - mov [bp+var_18], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_8] - mov es:[bx+6], ax - mov [bp+var_1A], ax - les bx, ss:16h - mov si, [bp+var_4] - mov ax, ss:[si+arg_A] - mov es:[bx+8], ax - mov [bp+var_1C], ax - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 6 - jnz short loc_8396 - jmp loc_843E -; --------------------------------------------------------------------------- - -loc_8396: - xor ax, ax - push ax - push [bp+var_4] - call sub_8069 - pop cx - pop cx - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_83AF - jmp loc_8671 -; --------------------------------------------------------------------------- - -loc_83AF: - cmp word ptr ss:[bx], 0FACEh - jz short loc_83B9 - jmp loc_8671 -; --------------------------------------------------------------------------- - -loc_83B9: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], dx - mov word ptr [bp+var_20], ax - mov ax, word ptr [bp+var_20] - or ax, word ptr [bp+var_20+2] - jnz short loc_83D4 - jmp loc_8671 -; --------------------------------------------------------------------------- - -loc_83D4: - jmp short loc_8412 -; --------------------------------------------------------------------------- - -loc_83D6: - mov ax, 1 - push ax - les bx, [bp+var_C] - push word ptr es:[bx+0Ch] - les bx, [bp+var_20] - push word ptr es:[bx+2] - push word ptr es:[bx] - les bx, [bp+var_C] - push word ptr es:[bx+0Ah] - push word ptr es:[bx+8] - les bx, [bp+var_C] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - call sub_69ED - add sp, 10h - or ax, ax - jz short loc_840E - jmp loc_8671 -; --------------------------------------------------------------------------- - -loc_840E: - add word ptr [bp+var_20], 4 - -loc_8412: - les bx, [bp+var_20] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_83D6 - mov ax, ss:14h - mov word ptr [bp+var_24+2], ax - mov bx, [bp+var_4] - mov ax, ss:[bx] - mov ss:14h, ax - nop - push cs - call near ptr ___call_unexpected -; --------------------------------------------------------------------------- - mov ax, word ptr [bp+var_24+2] - mov ss:14h, ax - jmp loc_8671 -; --------------------------------------------------------------------------- - -loc_843E: - mov bx, [bp+var_4] - mov ax, ss:[bx+arg_6] - jmp loc_8665 -; --------------------------------------------------------------------------- - -loc_8448: - mov ax, [bp+var_12] - mov word ptr [bp+var_20], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_14], ax - add word ptr [bp+var_20], 2 - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov word ptr [bp+var_20+2], ax - add word ptr [bp+var_20], 2 - mov bx, word ptr [bp+var_20+2] - cmp bx, 5 - jbe short loc_8479 - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_8479: - add bx, bx - jmp cs:off_867A[bx] - -loc_8480: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jz short loc_848E - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_848E: - cmp word ptr ss:[bx], 0FACEh - jz short loc_8498 - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_8498: - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_26], dx - mov [bp+var_28], ax - add word ptr [bp+var_20], 4 - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_26] - push [bp+var_28] - call sub_827E - add sp, 8 - mov word ptr [bp+var_24+2], dx - mov word ptr [bp+var_24], ax - mov ax, word ptr [bp+var_24] - or ax, word ptr [bp+var_24+2] - jnz short loc_84D2 - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_84D2: - les bx, [bp+var_C] - mov ax, [bp+var_4] - mov es:[bx+24h], ax - les bx, [bp+var_C] - mov dx, word ptr [bp+var_24+2] - mov ax, word ptr [bp+var_24] - mov es:[bx+28h], dx - mov es:[bx+26h], ax - les bx, [bp+var_C] - mov ax, word ptr [bp+var_20] - mov es:[bx+2Ah], ax - mov ax, [bp+var_12] - mov [bp+var_30], ax - mov ax, word ptr [bp+var_20] - mov [bp+var_2E], ax - les bx, [bp+var_24] - -loc_8506: - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_2A], dx - mov [bp+var_2C], ax - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr __Global_unwind - pop cx - pop cx - push [bp+var_30] - push [bp+var_4] - call sub_8069 - pop cx - pop cx - mov bx, [bp+var_4] - mov ax, [bp+var_2E] - mov ss:[bx+arg_6], ax - cmp word ptr [bp+var_20+2], 3 - jnz short loc_8558 - push [bp+var_16] - push [bp+var_26] - push [bp+var_28] - push word ptr [bp+var_C+2] - push word ptr [bp+var_C] - push [bp+var_4] - push word ptr [bp+var_24+2] - push word ptr [bp+var_24] - call sub_7DC3 - add sp, 10h - -loc_8558: - mov dx, [bp+var_2A] - mov ax, [bp+var_2C] - mov si, [bp+var_1C] - mov ds, [bp+var_1A] - mov bx, [bp+var_18] - mov cx, [bp+var_16] - push cs - call near ptr ___JumpToCatch__ - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_8571: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_8586 - cmp word ptr ss:[bx], 0FACEh - jnz short loc_8586 - jmp loc_8662 -; --------------------------------------------------------------------------- - -loc_8586: - ; __ExceptionHandler+277j - mov ax, [bp+var_2] - mov [bp+var_36], ax - mov dx, [bp+var_6] - mov ax, [bp+var_8] - mov [bp+var_32], dx - mov [bp+var_34], ax - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - lea ax, [bp+var_36] - mov bx, [bp+var_4] - mov ss:[bx+arg_12], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr dword_141B8+2, dx - mov word ptr dword_141B8, ax - mov ax, ds - mov es, ax - assume es:dseg - push si - mov si, [bp+var_1C] - push ds - mov ds, [bp+var_1A] - push bp - mov bp, [bp+var_16] - call es:dword_141B8 - pop bp - pop ds - pop si - mov [bp+var_38], ax - jmp short loc_861D -; --------------------------------------------------------------------------- - -loc_85E8: - mov bx, [bp+var_2] - cmp word ptr ss:[bx+2], 0EEFh - jnz short loc_85FC - cmp word ptr ss:[bx], 0FACEh - jnz short loc_85FC - jmp short loc_8662 -; --------------------------------------------------------------------------- - -loc_85FC: - ; __ExceptionHandler+2EEj - mov bx, [bp+var_2] - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov bx, [bp+var_4] - mov ss:[bx+arg_10], dx - mov ss:[bx+arg_E], ax - les bx, [bp+var_10] - assume es:nothing - add bx, word ptr [bp+var_20] - mov ax, es:[bx] - mov [bp+var_38], ax - -loc_861D: - cmp [bp+var_38], 0 - jge short loc_863B - mov bx, [bp+var_2] - test byte ptr ss:[bx+4], 1 - jz short loc_8637 - mov bx, [bp+var_4] - mov ax, [bp+var_14] - mov ss:[bx+arg_6], ax - -loc_8637: - xor ax, ax - jmp short loc_8674 -; --------------------------------------------------------------------------- - -loc_863B: - cmp [bp+var_38], 0 - jnz short loc_8643 - jmp short loc_8662 -; --------------------------------------------------------------------------- - -loc_8643: - mov bx, [bp+var_4] - mov ss:[bx+arg_12], 0 - add word ptr [bp+var_20], 4 - mov ax, [bp+var_14] - mov [bp+var_2E], ax - mov [bp+var_30], ax - les bx, [bp+var_10] - add bx, word ptr [bp+var_20] - jmp loc_8506 -; --------------------------------------------------------------------------- - -loc_8662: - ; __ExceptionHandler+171j ... - mov ax, [bp+var_14] - -loc_8665: - mov [bp+var_12], ax - cmp [bp+var_12], 0 - jz short loc_8671 - jmp loc_8448 -; --------------------------------------------------------------------------- - -loc_8671: - ; __ExceptionHandler+ACj ... - mov ax, 1 - -loc_8674: - pop di - pop si - mov sp, bp - pop bp - retf -__ExceptionHandler endp - -; --------------------------------------------------------------------------- -off_867A dw offset loc_8662 - dw offset loc_8571 - dw offset loc_85E8 - dw offset loc_8480 - dw offset loc_8662 - dw offset loc_8662 - db 4 dup(0), 19h, 87h - dw seg seg000 - db 14h dup(0), 29h, 87h - dw seg seg000 - db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Eh, 86h - dw seg seg000 - db 2 dup(0), 4, 0, 6, 0, 3, 0, 2 dup(86h) - dw seg seg000 - db 6, 0, 4, 0 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_86D4 proc far - -var_1E = word ptr -1Eh -var_12 = word ptr -12h -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh - - push bp - mov bp, sp - sub sp, 1Eh - push si - push di - mov ax, seg seg000 - mov bx, 86B6h - nopcall ___InitExceptBlocks - mov [bp+var_12], 6 - mov [bp+var_12], 12h - push [bp+arg_8] - les bx, [bp+arg_4] - push word ptr es:[bx+22h] - les bx, [bp+arg_4] - push word ptr es:[bx+20h] - push word ptr es:[bx+1Eh] - push [bp+arg_2] - push [bp+arg_0] - call sub_6E40 - add sp, 0Ch - mov [bp+var_12], 6 - jmp short loc_8722 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8722: - mov [bp+var_12], 0 - jmp short loc_8732 -; --------------------------------------------------------------------------- - nop - push cs - call near ptr ___call_terminate -; --------------------------------------------------------------------------- - push cs - call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) - -loc_8732: - push [bp+var_1E] - nopcall ___ExitExceptBlocks - pop di - pop si - mov sp, bp - pop bp - retf -sub_86D4 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8740 proc far - ; sub_87C1+162p ... - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_C] - jmp short loc_87AF -; --------------------------------------------------------------------------- - -loc_874D: - les bx, [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - cmp [bp+arg_E], 0 - jz short loc_8775 - les bx, [bp+var_4] - mov ax, es:[bx] - mov dx, word ptr [bp+var_4+2] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_8775: - les bx, [bp+arg_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - test byte ptr es:[bx+8], 2 - jz short loc_87AF - push [bp+arg_10] - xor ax, ax - push ax - xor ax, ax - push ax - push cx - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - nop - push cs - call near ptr sub_87C1 - add sp, 10h - xor cx, cx - -loc_87AF: - sub word ptr [bp+arg_4], 8 - mov ax, word ptr [bp+arg_4] - cmp ax, [bp+arg_8] - jnb short loc_874D - pop di - pop si - mov sp, bp - pop bp - retf -sub_8740 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_87C1 proc far - ; sub_87C1+25Ep ... - -var_2A = word ptr -2Ah -var_28 = word ptr -28h -var_26 = word ptr -26h -var_24 = word ptr -24h -var_22 = dword ptr -22h -var_1E = word ptr -1Eh -var_1C = word ptr -1Ch -var_1A = word ptr -1Ah -var_18 = dword ptr -18h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = dword ptr -10h -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = dword ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 2Ah - push si - push di - cmp [bp+arg_C], 0 - jz short loc_87D8 - les bx, [bp+arg_4] - mov ax, es:[bx+1Ah] - jmp short loc_87DF -; --------------------------------------------------------------------------- - -loc_87D8: - les bx, [bp+arg_4] - mov ax, es:[bx+1Ch] - -loc_87DF: - mov [bp+var_1A], 0 - mov [bp+var_1C], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8801 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, [bp+var_1A] - jb short loc_881A - jnz short loc_8801 - cmp ax, [bp+var_1C] - jb short loc_881A - -loc_8801: - push [bp+arg_C] - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_86D4 - add sp, 0Ah - jmp loc_8A86 -; --------------------------------------------------------------------------- - -loc_881A: - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_1A], dx - mov [bp+var_1C], ax - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - mov word ptr [bp+var_10+2], dx - mov word ptr [bp+var_10], ax - mov [bp+var_A], dx - mov [bp+var_C], ax - cmp [bp+arg_C], 0 - jz short loc_88B3 - -loc_8845: - les bx, [bp+var_10] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_88B3 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_88AD - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_88A6 - jnz short loc_887C - cmp bx, [bp+var_1C] - jb short loc_88A6 - -loc_887C: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1C] - push [bp+var_A] - push [bp+var_C] - mov ax, word ptr [bp+var_10] - add ax, 8 - push word ptr [bp+var_10+2] - push ax - -loc_8896: - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8740 - add sp, 12h - jmp loc_8A86 -; --------------------------------------------------------------------------- - -loc_88A6: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_88AD: - add word ptr [bp+var_10], 8 - jmp short loc_8845 -; --------------------------------------------------------------------------- - -loc_88B3: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov [bp+var_2], dx - mov [bp+var_4], ax - -loc_88CC: - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_1E], dx - mov word ptr [bp+var_22+2], ax - mov ax, word ptr [bp+var_22+2] - or ax, [bp+var_1E] - jz short loc_8942 - les bx, [bp+var_22+2] - test byte ptr es:[bx+8], 2 - jz short loc_893C - les bx, [bp+var_22+2] - mov bx, es:[bx+1Ch] - xor ax, ax - cmp ax, [bp+var_1A] - jb short loc_8935 - jnz short loc_8903 - cmp bx, [bp+var_1C] - jb short loc_8935 - -loc_8903: - push [bp+arg_E] - xor ax, ax - push ax - push [bp+var_1C] - push [bp+var_2] - push [bp+var_4] - mov ax, word ptr [bp+var_8] - add ax, 8 - push word ptr [bp+var_8+2] - push ax - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8740 - add sp, 12h - cmp [bp+arg_C], 0 - jnz short loc_8932 - jmp loc_8A86 -; --------------------------------------------------------------------------- - -loc_8932: - jmp loc_8A66 -; --------------------------------------------------------------------------- - -loc_8935: - ; sub_87C1+140j - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - -loc_893C: - add word ptr [bp+var_8], 8 - jmp short loc_88CC -; --------------------------------------------------------------------------- - -loc_8942: - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+24h] - mov word ptr [bp+var_18+2], dx - mov word ptr [bp+var_18], ax - mov [bp+var_12], dx - mov [bp+var_14], ax - -loc_895B: - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - mov [bp+var_1E], 1 - les bx, [bp+var_22] - test byte ptr es:[bx+3], 4 - jz short loc_8995 - les bx, [bp+var_22] - mov ax, es:[bx+0Ah] - mov [bp+var_1E], ax - les bx, [bp+var_22] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_22+2], dx - mov word ptr [bp+var_22], ax - -loc_8995: - les bx, [bp+var_22] - mov ax, es:[bx+1Ah] - imul [bp+var_1E] - mov bx, ax - xor ax, ax - cmp ax, [bp+var_1A] - ja short loc_89B9 - jb short loc_89AF - cmp bx, [bp+var_1C] - jnb short loc_89B9 - -loc_89AF: - sub [bp+var_1C], bx - sbb [bp+var_1A], 0 - jmp loc_8A7F -; --------------------------------------------------------------------------- - -loc_89B9: - ; sub_87C1+1ECj ... - les bx, [bp+var_18] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov [bp+var_24], dx - mov [bp+var_26], ax - les bx, [bp+var_18] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov [bp+var_28], dx - mov [bp+var_2A], ax - cmp [bp+var_1E], 1 - jbe short loc_8A05 - push [bp+arg_E] - push [bp+var_1A] - push [bp+var_1C] - les bx, [bp+var_18] - push word ptr es:[bx+2] - push word ptr es:[bx] - push [bp+var_24] - push [bp+var_26] - nop - push cs - call near ptr sub_8A8C - add sp, 0Eh - jmp short loc_8A25 -; --------------------------------------------------------------------------- - -loc_8A05: - push [bp+arg_E] - mov ax, 1 - push ax - push [bp+var_1A] - push [bp+var_1C] - push [bp+var_28] - push [bp+var_2A] - push [bp+var_24] - push [bp+var_26] - push cs - call near ptr sub_87C1 - add sp, 10h - -loc_8A25: - mov [bp+var_1A], 0 - mov [bp+var_1C], 0 - sub word ptr [bp+var_18], 6 - mov ax, word ptr [bp+var_18] - cmp ax, [bp+var_14] - jb short loc_8A3E - jmp loc_89B9 -; --------------------------------------------------------------------------- - -loc_8A3E: - push [bp+arg_E] - xor ax, ax - push ax - xor ax, ax - push ax - push [bp+var_2] - push [bp+var_4] - push word ptr [bp+var_8+2] - push word ptr [bp+var_8] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_8740 - add sp, 12h - cmp [bp+arg_C], 0 - jz short loc_8A86 - -loc_8A66: - push [bp+arg_E] - mov ax, 1 - push ax - xor ax, ax - push ax - push [bp+var_A] - push [bp+var_C] - push word ptr [bp+var_10+2] - push word ptr [bp+var_10] - jmp loc_8896 -; --------------------------------------------------------------------------- - -loc_8A7F: - add word ptr [bp+var_18], 6 - jmp loc_895B -; --------------------------------------------------------------------------- - -loc_8A86: - pop di - pop si - mov sp, bp - pop bp - retf -sub_87C1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8A8C proc far - ; sub_8C3F+316p - -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h - - push bp - mov bp, sp - sub sp, 0Eh - push si - push di - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+0Ah] - mov [bp+var_6], ax - les bx, [bp+var_4] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+1Ah] - mov [bp+var_8], 0 - mov [bp+var_A], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jnz short loc_8AE6 - mov bx, [bp+var_6] - xor cx, cx - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - mov [bp+arg_A], dx - mov [bp+arg_8], ax - -loc_8AE6: - push [bp+var_8] - push [bp+var_A] - push [bp+arg_A] - push [bp+arg_8] - call near ptr N_LUDIV@ - mov [bp+var_C], dx - mov [bp+var_E], ax - mov cx, [bp+var_C] - mov bx, [bp+var_E] - mov dx, [bp+var_8] - mov ax, [bp+var_A] - call N_LXMUL@ - sub [bp+arg_8], ax - sbb [bp+arg_A], dx - les bx, [bp+var_4] - mov bx, es:[bx] - xor cx, cx - mov dx, [bp+var_C] - mov ax, [bp+var_E] - call N_LXMUL@ - mov dx, [bp+arg_2] - add ax, [bp+arg_0] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_8B76 - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+arg_A] - push [bp+arg_8] - jmp short loc_8B63 -; --------------------------------------------------------------------------- - -loc_8B44: - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - push [bp+arg_C] - mov ax, 1 - push ax - push [bp+var_8] - push [bp+var_A] - -loc_8B63: - push word ptr [bp+var_4+2] - push word ptr [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr sub_87C1 - add sp, 10h - -loc_8B76: - mov ax, [bp+var_C] - mov dx, [bp+var_E] - sub [bp+var_E], 1 - sbb [bp+var_C], 0 - or dx, ax - jnz short loc_8B44 - pop di - pop si - mov sp, bp - pop bp - retf -sub_8A8C endp ; sp-analysis failed - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8B8E proc far - ; sub_8C3F+2E4p - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov cx, [bp+arg_4] - mov bx, cx - mov dx, ss:[bx+2] - mov ax, ss:[bx] - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - mov ax, es:[bx+8] - and ax, 50h - cmp ax, 50h ; 'P' - jnz short loc_8C33 - les bx, [bp+var_4] - cmp word ptr es:[bx+6], 0FFFFh - jz short loc_8C33 - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_4] - test byte ptr es:[bx+9], 10h - jz short loc_8BED - les bx, [bp+var_8] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], dx - jmp short loc_8BF6 -; --------------------------------------------------------------------------- - -loc_8BED: - les bx, [bp+var_8] - mov ax, es:[bx] - mov word ptr [bp+var_8+2], ds - -loc_8BF6: - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+arg_2], dx - mov [bp+arg_0], ax - les bx, [bp+var_8] - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - sub ax, es:[bx-2] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov bx, cx - mov ss:[bx+2], dx - mov ss:[bx], ax - -loc_8C33: - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -sub_8B8E endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_8C3F proc near - -driver = dword ptr -20h -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = dword ptr -16h -var_12 = dword ptr -12h -var_E = word ptr -0Eh -var_C = dword ptr -0Ch -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_E], 0 - cmp word ptr [bp+arg_0], 0FFFFh - jnz short loc_8C55 - jmp loc_9042 -; --------------------------------------------------------------------------- - -loc_8C55: - mov bx, [bp+arg_8] - mov dx, ss:[bx+arg_18] - mov ax, ss:[bx+arg_16] - mov [bp+var_2], dx - mov [bp+var_4], ax - nopcall @__RefDestructorCount$qv ; __RefDestructorCount(void) - mov bx, ax - mov es, dx - mov dx, es:[bx+2] - mov ax, es:[bx] - sub ax, [bp+var_4] - sbb dx, [bp+var_2] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov dx, [bp+arg_6] - mov ax, [bp+arg_4] - sub [bp+var_8], ax - sbb [bp+var_6], dx - les bx, [bp+arg_0] - test byte ptr es:[bx+4], 20h - jz short loc_8CAE - les bx, [bp+arg_0] - les bx, es:[bx] - les bx, es:[bx+6] - mov ax, es:[bx+1Ah] - mov [bp+var_6], 0 - mov [bp+var_8], ax - -loc_8CAE: - les bx, [bp+arg_0] - test byte ptr es:[bx+5], 1 - jz short loc_8CC5 - les bx, [bp+arg_0] - les bx, es:[bx] - mov ax, es:[bx+1Ch] - jmp loc_9044 -; --------------------------------------------------------------------------- - -loc_8CC5: - cmp [bp+var_6], 0 - jg short loc_8CF7 - jnz short loc_8CD3 - cmp [bp+var_8], 0 - ja short loc_8CF7 - -loc_8CD3: - les bx, [bp+arg_0] - mov ax, es:[bx+4] - and ax, 3 - cmp ax, 3 - jz short loc_8CE5 - jmp loc_9042 -; --------------------------------------------------------------------------- - -loc_8CE5: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - inc [bp+var_E] - jmp loc_8E5C -; --------------------------------------------------------------------------- - -loc_8CF7: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - mov word ptr [bp+var_C+2], dx - mov word ptr [bp+var_C], ax - -loc_8D03: - les bx, [bp+var_C] - mov ax, es:[bx] - or ax, es:[bx+2] - jnz short loc_8D16 - sub word ptr [bp+var_C], 0Ah - jmp loc_8E5C -; --------------------------------------------------------------------------- - -loc_8D16: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov [bp+var_18], 1 - les bx, [bp+var_12] - test byte ptr es:[bx+2], 10h - jnz short loc_8D3E - jmp loc_8E08 -; --------------------------------------------------------------------------- - -loc_8D3E: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jnz short loc_8D62 - jmp loc_8E08 -; --------------------------------------------------------------------------- - -loc_8D62: - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jnz short loc_8D6F - jmp loc_8E08 -; --------------------------------------------------------------------------- - -loc_8D6F: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 8 - jnz short loc_8D7C - jmp loc_8E08 -; --------------------------------------------------------------------------- - -loc_8D7C: - les bx, [bp+var_C] - test byte ptr es:[bx+4], 4 - jz short loc_8D95 - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_1C+2], ss - jmp short loc_8DA3 -; --------------------------------------------------------------------------- - -loc_8D95: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_1C+2], dx - -loc_8DA3: - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 80h - jz short loc_8DCB - les bx, [bp+driver] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - jmp short loc_8DD4 -; --------------------------------------------------------------------------- - -loc_8DCB: - les bx, [bp+driver] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], ds - -loc_8DD4: - mov word ptr [bp+var_1C], ax - les bx, [bp+var_C] - test byte ptr es:[bx+4], 40h - jz short loc_8DE5 - add word ptr [bp+var_1C], 4 - -loc_8DE5: - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push cs - call near ptr sub_8B8E - add sp, 6 - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov dx, word ptr [bp+var_12+2] - mov ax, word ptr [bp+var_12] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8E08: - ; sub_8C3F+120j ... - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8E2D - les bx, [bp+var_16] - mov ax, es:[bx+0Ah] - mov [bp+var_18], ax - les bx, [bp+var_16] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16+2], dx - mov word ptr [bp+var_16], ax - -loc_8E2D: - les bx, [bp+var_16] - mov ax, es:[bx+1Ah] - imul [bp+var_18] - mov [bp+var_18], ax - mov ax, [bp+var_18] - xor dx, dx - cmp dx, [bp+var_6] - jb short loc_8E4B - jnz short loc_8E5C - cmp ax, [bp+var_8] - jnb short loc_8E5C - -loc_8E4B: - mov ax, [bp+var_18] - sub [bp+var_8], ax - sbb [bp+var_6], 0 - add word ptr [bp+var_C], 0Ah - jmp loc_8D03 -; --------------------------------------------------------------------------- - -loc_8E5C: - les bx, [bp+var_C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_C] - mov ax, es:[bx+4] - mov word ptr [bp+var_16+2], ax - test byte ptr [bp+var_16+2], 4 - jz short loc_8E8B - les bx, [bp+var_C] - mov ax, es:[bx+6] - add ax, [bp+arg_A] - mov word ptr [bp+var_16], ss - jmp short loc_8E99 -; --------------------------------------------------------------------------- - -loc_8E8B: - les bx, [bp+var_C] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_16], dx - -loc_8E99: - mov [bp+var_18], ax - test byte ptr [bp+var_16+2], 11h - jnz short loc_8EA5 - jmp loc_8F2F -; --------------------------------------------------------------------------- - -loc_8EA5: - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - test byte ptr [bp+var_16+2], 80h - jz short loc_8ED7 - les bx, [bp+var_1C] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_16], dx - jmp short loc_8EE0 -; --------------------------------------------------------------------------- - -loc_8ED7: - les bx, [bp+var_1C] - mov ax, es:[bx] - mov word ptr [bp+var_16], ds - -loc_8EE0: - mov [bp+var_18], ax - mov dx, word ptr [bp+var_16] - mov ax, [bp+var_18] - mov word ptr [bp+driver+2], dx - mov word ptr [bp+driver], ax - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 40h ; '@' - jnz short loc_8EFE - add [bp+var_18], 4 - -loc_8EFE: - les bx, [bp+var_12] - test byte ptr es:[bx+2], 2 - jz short loc_8F2F - les bx, [bp+var_12] - test byte ptr es:[bx+8], 20h - jz short loc_8F2F - test byte ptr [bp+var_16+2], 8 - jz short loc_8F2F - lea ax, [bp+var_12] - push ax - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8B8E - add sp, 6 - mov word ptr [bp+var_16], dx - mov [bp+var_18], ax - -loc_8F2F: - ; sub_8C3F+2C7j ... - cmp [bp+var_E], 0 - jnz short loc_8F7D - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8F5D - push [bp+arg_A] - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_8A8C - add sp, 0Eh - jmp short loc_8F7D -; --------------------------------------------------------------------------- - -loc_8F5D: - push [bp+arg_A] - mov ax, 1 - push ax - push [bp+var_6] - push [bp+var_8] - push word ptr [bp+var_12+2] - push word ptr [bp+var_12] - push word ptr [bp+var_16] - push [bp+var_18] - push cs - call near ptr sub_87C1 - add sp, 10h - -loc_8F7D: - ; sub_8C3F+31Cj - mov ax, word ptr [bp+var_16+2] - and ax, 3 - cmp ax, 3 - jz short loc_8F8B - jmp loc_9029 -; --------------------------------------------------------------------------- - -loc_8F8B: - mov ax, word ptr [bp+var_16+2] - and ax, 48h - cmp ax, 48h ; 'H' - jnz short loc_8F9A - sub word ptr [bp+driver], 4 - -loc_8F9A: - les bx, [bp+var_12] - test byte ptr es:[bx+3], 4 - jz short loc_8FE9 - les bx, [bp+var_12] - mov dx, es:[bx+8] - mov ax, es:[bx+6] - mov word ptr [bp+var_12+2], dx - mov word ptr [bp+var_12], ax - les bx, [bp+var_12] - mov ax, es:[bx+16h] - or ax, es:[bx+18h] - jz short loc_8FD6 - les bx, [bp+var_12] - push word ptr es:[bx+14h] - les bx, [bp+var_12] - push word ptr es:[bx+18h] - push word ptr es:[bx+16h] - jmp short loc_9008 -; --------------------------------------------------------------------------- - -loc_8FD6: - test byte ptr [bp+var_16+2], 80h - jz short loc_9029 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; font - nopcall @$bdla$qnv - jmp short loc_9027 -; --------------------------------------------------------------------------- - -loc_8FE9: - les bx, [bp+var_12] - mov ax, es:[bx+0Eh] - or ax, es:[bx+10h] - jz short loc_9016 - les bx, [bp+var_12] - push word ptr es:[bx+12h] - les bx, [bp+var_12] - push word ptr es:[bx+10h] - push word ptr es:[bx+0Eh] - -loc_9008: - push word ptr [bp+driver+2] - push word ptr [bp+driver] - call sub_6FF8 - add sp, 0Ah - jmp short loc_9029 -; --------------------------------------------------------------------------- - -loc_9016: - test byte ptr [bp+var_16+2], 80h - jz short loc_9029 - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - -loc_9027: - pop cx - pop cx - -loc_9029: - ; sub_8C3F+39Bj ... - mov [bp+var_6], 0 - mov [bp+var_8], 0 - mov ax, word ptr [bp+var_C] - sub word ptr [bp+var_C], 0Ah - cmp ax, word ptr [bp+arg_0] - jbe short loc_9042 - jmp loc_8E5C -; --------------------------------------------------------------------------- - -loc_9042: - xor ax, ax - -loc_9044: - pop di - pop si - mov sp, bp - pop bp - retn -sub_8C3F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -__CurrExcContext proc far - -s1 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - sub sp, 6 - push si - push di - mov ax, [bp+arg_0] - mov [bp+var_2], ax - cmp [bp+var_2], 0FFFFh - jz short loc_908D - mov bx, [bp+var_2] - mov dx, ss:[bx+4] - mov ax, ss:[bx+2] - add ax, 0FFF8h - mov word ptr [bp+s1+2], dx - mov word ptr [bp+s1], ax - mov ax, 8 - push ax ; n - push ds - mov ax, 2D2Bh - push ax ; s2 - push word ptr [bp+s1+2] - push word ptr [bp+s1] ; s1 - nopcall _memcmp - add sp, 0Ah - or ax, ax - jz short loc_9092 - -loc_908D: - mov ax, 0FFFFh - jmp short loc_9099 -; --------------------------------------------------------------------------- - -loc_9092: - mov bx, [bp+var_2] - mov ax, ss:[bx+arg_6] - -loc_9099: - pop di - pop si - mov sp, bp - pop bp - retf -__CurrExcContext endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowFileName(void) -@__ThrowFileName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+18h] - mov ax, es:[bx+16h] - pop di - pop si - retf -@__ThrowFileName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowLineNumber(void) -@__ThrowLineNumber$qv proc far - push si - push di - les bx, ss:16h - mov ax, es:[bx+1Ah] - pop di - pop si - retf -@__ThrowLineNumber$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function - -; __ThrowExceptionName(void) -@__ThrowExceptionName$qv proc far - push si - push di - les bx, ss:16h - mov dx, es:[bx+1Eh] - mov ax, es:[bx+1Ch] - pop di - pop si - retf -@__ThrowExceptionName$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far typeinfo__typeinfo(int, int, int, __int32) -@typeinfo@0$bctr$qmx8typeinfo proc far - -src = word ptr -4 -var_2 = word ptr -2 -arg_0 = dword ptr 6 - - push bp - mov bp, sp - sub sp, 4 - push si - push di - mov ax, word ptr [bp+arg_0] - or ax, word ptr [bp+arg_0+2] - jnz short loc_90F5 - mov ax, 8 - push ax - nop - push cs - call near ptr @$bnew$qui ; operator new(uint) - pop cx - mov word ptr [bp+arg_0+2], dx - mov word ptr [bp+arg_0], ax - or ax, dx - jz short loc_9133 - -loc_90F5: - les bx, [bp+arg_0] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 96D1h - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - mov [bp+var_2], 0 - mov [bp+src], 0 - lea ax, [bp+src] - push ss - push ax ; src - push cs ; int - mov ax, 96B3h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_9133: - mov dx, word ptr [bp+arg_0+2] - mov ax, word ptr [bp+arg_0] - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0$bctr$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator=(typeinfo const &) -@typeinfo@0$basg$qmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - pop di - pop si - pop bp - retf -@typeinfo@0$basg$qmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) -@typeinfo@0$bdtr$qv proc far - -driver = dword ptr 6 -arg_4 = word ptr 0Ah - - push bp - mov bp, sp - push si - push di - mov dx, [bp+arg_4] - mov ax, word ptr [bp+driver] - or ax, word ptr [bp+driver+2] - jz short loc_917E - les bx, [bp+driver] - mov word ptr es:[bx+2], seg seg000 - mov word ptr es:[bx], 96D1h - test dl, 1 - jz short loc_917E - push word ptr [bp+driver+2] - push word ptr [bp+driver] ; driver - nopcall @$bdele$qnv - pop cx - pop cx - -loc_917E: - ; typeinfo::~typeinfo(void)+21j - pop di - pop si - pop bp - retf -@typeinfo@0$bdtr$qv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator==(typeinfo const &)const -@typeinfo@0$beql$xqmx8typeinfo proc far - -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_4] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_65F4 - add sp, 8 - pop di - pop si - pop bp - retf -@typeinfo@0$beql$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::operator!=(typeinfo const &)const -@typeinfo@0$bneq$xqmx8typeinfo proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - push [bp+arg_6] - push [bp+arg_4] - push [bp+arg_2] - push [bp+arg_0] - push cs - call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) - add sp, 8 - neg ax - sbb ax, ax - inc ax - pop di - pop si - pop bp - retf -@typeinfo@0$bneq$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::before(typeinfo const &)const -@typeinfo@0before$xqmx8typeinfo proc far - -var_8 = dword ptr -8 -var_4 = dword ptr -4 -arg_0 = dword ptr 6 -arg_4 = dword ptr 0Ah - - push bp - mov bp, sp - sub sp, 8 - push si - push di - les bx, [bp+arg_0] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_91E2 - xor ax, ax - jmp short loc_923B -; --------------------------------------------------------------------------- - -loc_91E2: - les bx, [bp+arg_4] - mov ax, es:[bx+4] - or ax, es:[bx+6] - jnz short loc_91F4 - mov ax, 1 - jmp short loc_923B -; --------------------------------------------------------------------------- - -loc_91F4: - les bx, [bp+arg_4] - mov dx, es:[bx+6] - mov word ptr [bp+var_4+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_4], ax - les bx, [bp+var_4] - add ax, es:[bx+4] - push dx - push ax ; s2 - les bx, [bp+arg_0] - mov dx, es:[bx+6] - mov word ptr [bp+var_8+2], dx - mov ax, es:[bx+4] - mov word ptr [bp+var_8], ax - les bx, [bp+var_8] - add ax, es:[bx+4] - push dx - push ax ; s1 - nop - push cs - call near ptr _strcmp - add sp, 8 - or ax, ax - jge short loc_9239 - mov ax, 1 - jmp short loc_923B -; --------------------------------------------------------------------------- - -loc_9239: - xor ax, ax - -loc_923B: - ; typeinfo::before(typeinfo &)+29j ... - pop di - pop si - mov sp, bp - pop bp - retf -@typeinfo@0before$xqmx8typeinfo endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; typeinfo::name(void)const -@typeinfo@0name$xqv proc far - -arg_0 = dword ptr 6 - - push bp - mov bp, sp - push si - push di - les bx, [bp+arg_0] - push word ptr es:[bx+6] - push word ptr es:[bx+4] - push cs - call near ptr sub_65CF - pop cx - pop cx - pop di - pop si - pop bp - retf -@typeinfo@0name$xqv endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) -@__GetTypeInfo$qnvt1t1t1 proc far - -var_8 = dword ptr -8 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_C = word ptr 12h -arg_E = word ptr 14h - - push bp - mov bp, sp - sub sp, 8 - push si - push di - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov word ptr [bp+var_8+2], dx - mov word ptr [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_929D - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 51DCh - push ax ; src - push cs ; int - mov ax, 969Dh - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_929D: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_2], dx - mov [bp+var_4], ax - les bx, [bp+var_8] - mov dx, [bp+var_2] - mov ax, [bp+var_4] - mov es:[bx+6], dx - mov es:[bx+4], ax - mov dx, word ptr [bp+var_8+2] - mov ax, word ptr [bp+var_8] - pop di - pop si - mov sp, bp - pop bp - retf -@__GetTypeInfo$qnvt1t1t1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -sub_92DE proc near - ; sub_92DE+1C4p ... - -var_20 = word ptr -20h -var_1E = word ptr -1Eh -var_1C = dword ptr -1Ch -var_18 = word ptr -18h -var_16 = word ptr -16h -var_14 = dword ptr -14h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = dword ptr -4 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = dword ptr 8 -arg_8 = word ptr 0Ch -arg_A = word ptr 0Eh -arg_C = word ptr 10h -arg_E = word ptr 12h -arg_10 = word ptr 14h -arg_12 = word ptr 16h -arg_14 = word ptr 18h -arg_16 = word ptr 1Ah -arg_18 = word ptr 1Ch -arg_1A = word ptr 1Eh -arg_1C = word ptr 20h -arg_1E = word ptr 22h - - push bp - mov bp, sp - sub sp, 20h - push si - push di - mov [bp+var_8], 0 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - mov [bp+var_E], 0 - mov ax, [bp+arg_14] - or ax, [bp+arg_16] - jz short loc_9319 - push word ptr [bp+arg_4+2] - push word ptr [bp+arg_4] - push [bp+arg_16] - push [bp+arg_14] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_9323 - -loc_9319: - les bx, [bp+arg_4] - test byte ptr es:[bx+8], 4 - jnz short loc_932A - -loc_9323: - xor dx, dx - xor ax, ax - jmp loc_951E -; --------------------------------------------------------------------------- - -loc_932A: - mov [bp+var_6], 0 - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ch] - -loc_933C: - mov word ptr [bp+var_4+2], dx - mov word ptr [bp+var_4], ax - -loc_9342: - les bx, [bp+var_4] - mov dx, es:[bx+2] - mov ax, es:[bx] - mov word ptr [bp+var_1C+2], dx - mov word ptr [bp+var_1C], ax - mov ax, word ptr [bp+var_1C] - or ax, word ptr [bp+var_1C+2] - jnz short loc_935D - jmp loc_94E6 -; --------------------------------------------------------------------------- - -loc_935D: - les bx, [bp+var_4] - test byte ptr es:[bx+6], 8 - jz short loc_936A - jmp loc_94DF -; --------------------------------------------------------------------------- - -loc_936A: - cmp [bp+arg_1A], 0 - jz short loc_9384 - les bx, [bp+var_4] - mov ax, es:[bx+6] - and ax, 3 - cmp ax, 3 - jnz short loc_9384 - mov ax, 1 - jmp short loc_9386 -; --------------------------------------------------------------------------- - -loc_9384: - xor ax, ax - -loc_9386: - mov [bp+var_10], ax - les bx, [bp+var_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - add ax, es:[bx+4] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, [bp+arg_1E] - mov ax, [bp+arg_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - les bx, [bp+var_4] - test byte ptr es:[bx+6], 4 - jz short loc_93CD - les bx, [bp+var_14] - mov ax, es:[bx] - mov dx, word ptr [bp+var_14+2] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov dx, word ptr [bp+var_1C+2] - mov ax, word ptr [bp+var_1C] - mov [bp+var_16], dx - mov [bp+var_18], ax - -loc_93CD: - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push [bp+arg_E] - push [bp+arg_C] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_944F - les bx, [bp+var_1C] - test byte ptr es:[bx+8], 4 - jnz short loc_93F1 - jmp loc_94DF -; --------------------------------------------------------------------------- - -loc_93F1: - push [bp+var_16] - push [bp+var_18] - push [bp+var_10] - push [bp+arg_18] - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push [bp+arg_E] - push [bp+arg_C] - push [bp+arg_A] - push [bp+arg_8] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_92DE - add sp, 20h - mov [bp+var_1E], dx - mov [bp+var_20], ax - mov ax, [bp+var_20] - or ax, [bp+var_1E] - jnz short loc_9438 - jmp loc_94DF -; --------------------------------------------------------------------------- - -loc_9438: - mov dx, [bp+var_1E] - mov ax, [bp+var_20] - mov word ptr [bp+var_14+2], dx - mov word ptr [bp+var_14], ax - mov bx, [bp+arg_18] - mov ax, ss:[bx] - mov [bp+var_10], ax - jmp short loc_94AC -; --------------------------------------------------------------------------- - -loc_944F: - mov ax, [bp+arg_8] - or ax, [bp+arg_A] - jz short loc_9470 - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - cmp dx, word ptr [bp+var_14+2] - jnz short loc_94DF - cmp ax, word ptr [bp+var_14] - jnz short loc_94DF - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - jmp loc_951E -; --------------------------------------------------------------------------- - -loc_9470: - mov ax, [bp+arg_10] - or ax, [bp+arg_12] - jz short loc_94AC - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push [bp+arg_18] - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+arg_16] - push [bp+arg_14] - push [bp+arg_12] - push [bp+arg_10] - push word ptr [bp+var_1C+2] - push word ptr [bp+var_1C] - push word ptr [bp+var_14+2] - push word ptr [bp+var_14] - call sub_92DE - add sp, 20h - or ax, dx - jz short loc_94DF - -loc_94AC: - ; sub_92DE+198j - cmp [bp+var_E], 0 - jz short loc_94CA - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - cmp dx, [bp+var_A] - jnz short loc_94CA - cmp ax, [bp+var_C] - jnz short loc_94CA - mov ax, [bp+var_10] - or [bp+var_8], ax - jmp short loc_94DF -; --------------------------------------------------------------------------- - -loc_94CA: - ; sub_92DE+1DDj ... - inc [bp+var_E] - mov dx, word ptr [bp+var_14+2] - mov ax, word ptr [bp+var_14] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+var_10] - mov [bp+var_8], ax - -loc_94DF: - ; sub_92DE+110j ... - add word ptr [bp+var_4], 8 - jmp loc_9342 -; --------------------------------------------------------------------------- - -loc_94E6: - cmp [bp+var_6], 0 - jnz short loc_94FF - inc [bp+var_6] - les bx, [bp+arg_4] - mov dx, word ptr [bp+arg_4+2] - mov ax, word ptr [bp+arg_4] - add ax, es:[bx+0Ah] - jmp loc_933C -; --------------------------------------------------------------------------- - -loc_94FF: - mov bx, [bp+arg_18] - mov ax, [bp+var_8] - mov ss:[bx], ax - cmp [bp+var_E], 1 - jz short loc_9518 - mov [bp+var_A], 0 - mov [bp+var_C], 0 - -loc_9518: - mov dx, [bp+var_A] - mov ax, [bp+var_C] - -loc_951E: - ; sub_92DE+18Fj - pop di - pop si - mov sp, bp - pop bp - retn -sub_92DE endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) -@__DynamicCast$qnvt1t1t1i proc far - -var_16 = word ptr -16h -var_14 = word ptr -14h -var_12 = word ptr -12h -var_10 = word ptr -10h -var_E = word ptr -0Eh -var_C = word ptr -0Ch -var_A = word ptr -0Ah -var_8 = word ptr -8 -var_6 = word ptr -6 -var_4 = word ptr -4 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_8 = word ptr 0Eh -arg_A = word ptr 10h -arg_C = word ptr 12h -arg_E = word ptr 14h -arg_10 = word ptr 16h - - push bp - mov bp, sp - sub sp, 16h - push si - push di - mov dx, [bp+arg_A] - mov ax, [bp+arg_8] - mov [bp+var_2], dx - mov [bp+var_4], ax - mov dx, [bp+arg_E] - mov ax, [bp+arg_C] - mov [bp+var_6], dx - mov [bp+var_8], ax - mov ax, [bp+arg_0] - or ax, [bp+arg_2] - jnz short loc_954F - jmp loc_9653 -; --------------------------------------------------------------------------- - -loc_954F: - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_2] - mov ax, [bp+arg_0] - sub ax, es:[bx-4] - mov [bp+var_E], dx - mov [bp+var_10], ax - les bx, dword ptr [bp+arg_4] - mov dx, [bp+arg_4+2] - mov ax, [bp+arg_4] - sub ax, es:[bx-2] - mov [bp+arg_4+2], dx - mov [bp+arg_4], ax - les bx, dword ptr [bp+arg_4] - mov dx, es:[bx-6] - mov ax, es:[bx-8] - mov [bp+var_A], dx - mov [bp+var_C], ax - mov ax, [bp+arg_C] - or ax, [bp+arg_E] - jz short loc_95A5 - push [bp+var_A] - push [bp+var_C] - push [bp+var_6] - push [bp+var_8] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jz short loc_95AE - -loc_95A5: - mov dx, [bp+var_E] - mov ax, [bp+var_10] - jmp loc_9683 -; --------------------------------------------------------------------------- - -loc_95AE: - push [bp+var_A] - push [bp+var_C] - push [bp+var_2] - push [bp+var_4] - push cs - call near ptr sub_65F4 - add sp, 8 - or ax, ax - jnz short loc_9607 - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - push [bp+var_2] - push [bp+var_4] - push [bp+arg_2] - push [bp+arg_0] - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_92DE - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jnz short loc_964B - -loc_9607: - xor ax, ax - push ax - push ax - mov ax, 1 - push ax - lea ax, [bp+var_16] - push ax - xor ax, ax - push ax - push ax - xor ax, ax - push ax - push ax - push [bp+var_6] - push [bp+var_8] - xor ax, ax - push ax - push ax - push [bp+var_A] - push [bp+var_C] - push [bp+var_E] - push [bp+var_10] - call sub_92DE - add sp, 20h - mov [bp+var_12], dx - mov [bp+var_14], ax - mov ax, [bp+var_14] - or ax, [bp+var_12] - jz short loc_9653 - cmp [bp+var_16], 0 - jz short loc_9653 - -loc_964B: - mov dx, [bp+var_12] - mov ax, [bp+var_14] - jmp short loc_9683 -; --------------------------------------------------------------------------- - -loc_9653: - ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... - cmp [bp+arg_10], 0 - jz short loc_967F - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - xor ax, ax - push ax ; int - push ax ; int - push ds - mov ax, 51DDh - push ax ; src - push cs ; int - mov ax, 9689h - push ax ; int - push cs - call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) - add sp, 1Ah - -loc_967F: - xor dx, dx - xor ax, ax - -loc_9683: - ; __DynamicCast(void *,void *,void *,void *,int)+12Dj - pop di - pop si - mov sp, bp - pop bp - retf -@__DynamicCast$qnvt1t1t1i endp - -; --------------------------------------------------------------------------- - db 1, 0, 1, 0, 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h - db 64h, 5Fh, 63h, 61h, 73h, 74h, 2 dup(0), 1, 0, 1, 0 - db 0Ah, 0, 2 dup(0FFh), 2 dup(0), 42h, 61h, 64h, 5Fh, 74h - db 79h, 70h, 65h, 69h, 64h, 2 dup(0), 4, 0, 10h, 20h, 0Ah - db 0, 0D5h, 96h - dw seg seg000 -aTypeinfo db 'typeinfo *',0 - db 0, 0D5h, 96h - dw seg seg000 - db 4 dup(0), 4Eh, 91h - dw seg seg000 - db 8 ; Method - db 0 - db 3 ; Destructor/SafeFunction - db 0 - db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 - db 0, 1, 0, 4Eh, 91h - dw seg seg000 - db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh - db 0Eh dup(0) +include libs/BorlandC/xx.asm ; =============== S U B R O U T I N E ======================================= @@ -23518,8 +16927,7 @@ word_11CFC dw 0 word_11CFE dw 0 ; _setvbuf+35w include libs/BorlandC/sysnerr[data].asm -aNotype db '',0 -aBccxh1 db '**BCCxh1',0 +include libs/BorlandC/xx[data].asm include libs/BorlandC/setenvp[data].asm word_11D18 dw 1 word_11D1A dw 0 @@ -25521,9 +18929,7 @@ include libs/BorlandC/atexit[bss].asm include libs/BorlandC/sigdata[bss].asm dd ? include libs/BorlandC/signal[bss].asm -dword_141B4 dd ? -dword_141B8 dd ? - dw ? +include libs/BorlandC/xx[bss].asm edata@ label byte dw ?