From 4ae365a60b052b88da8c64d7a9cdd778d8e22234 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Wed, 2 Jul 2014 19:43:15 +0200 Subject: [PATCH] th02/maine: Initial state --- th02_maine.asm | 38989 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 38989 insertions(+) create mode 100644 th02_maine.asm diff --git a/th02_maine.asm b/th02_maine.asm new file mode 100644 index 00000000..86ba2d54 --- /dev/null +++ b/th02_maine.asm @@ -0,0 +1,38989 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : E6F971B37336C0F9FCE53F895780031E + +; File Name : th02/MAINE.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-FCF0h Loaded length: DE32h +; Entry Point : 0:0 +; OS type : MS DOS +; Application type: Executable 16bit + + .386 + .model large + +; =========================================================================== + +; Segment type: Pure code +seg000 segment byte public 'CODE' use16 + assume cs:seg000 + assume es:nothing, ss:seg008, ds:nothing, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + + public start +start proc far + mov dx, seg dseg + mov cs:DGROUP@, dx + mov ah, 30h + int 21h ; DOS - GET DOS VERSION + ; Return: AL = major version number (00h for DOS 1.x) + mov bp, ds:2 + mov bx, ds:2Ch + mov ds, dx + assume ds:dseg + mov word_CFFC, ax + mov segx, es + mov word_CFF6, bx + mov word_D00E, bp + call sub_178 + mov ax, word_CFF6 + mov es, ax + xor ax, ax + mov bx, ax + mov di, ax + mov cx, 7FFFh + cld + +loc_37: ; CODE XREF: start+3Fj + repne scasb + jcxz short loc_7E + inc bx + cmp es:[di], al + jnz short loc_37 + or ch, 80h + neg cx + mov word_CFF4, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_CFF8, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_D9F8 + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_D9F8, di + +loc_75: ; CODE XREF: start+6Bj + mov cl, 4 + shr di, cl + inc di + cmp bp, di + jnb short loc_83 + +loc_7E: ; CODE XREF: start+39j + nop + push cs + call near ptr sub_2CE4 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_D006, bx + mov word_D00A, bx + mov ax, segx + sub bx, ax + mov es, ax + assume es:nothing + mov ah, 4Ah ; 'J' + push di + int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) + ; ES = segment address of block to change + ; BX = new size in paragraphs + pop di + shl di, cl + cli + mov ss, dx + assume ss:nothing + mov sp, di + sti + mov ax, seg dseg + mov es, ax + assume es:dseg + mov es:word_D9F8, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 0EB2h + mov cx, 2CE2h + sub cx, di + cld + rep stosb + cmp word_D95A, 14h + jbe short loc_110 + cmp byte ptr word_CFFC, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_CFFC+1, 1Eh + jb short loc_110 + +loc_D7: ; CODE XREF: start+CEj + mov ax, 5801h + mov bx, 2 + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: set allocation strategy + jb short loc_10B + mov ah, 67h ; 'g' + mov bx, word_D95A + int 21h ; DOS - 3.3+ - SET HANDLE COUNT + ; BX = desired number of handles (max 255) + jb short loc_10B + mov ah, 48h ; 'H' + mov bx, 1 + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_10B + inc ax + mov word_D00E, ax + dec ax + mov es, ax + assume es:nothing + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + jb short loc_10B + mov ax, 5801h + mov bx, 0 + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: set allocation strategy + jnb short loc_110 + +loc_10B: ; CODE XREF: start+DFj start+E9j ... + nop + push cs + call near ptr sub_2CE4 +; --------------------------------------------------------------------------- + +loc_110: ; CODE XREF: start+C5j start+CCj ... + xor bp, bp + push bp + nop + push cs + call near ptr __ExceptInit + pop ax + mov es, cs:DGROUP@ + assume es:nothing + mov si, 0E8Eh + mov di, 0EACh + call sub_1E8 + push word_CFF2 + push envp ; _envp + push word_CFEE + push argv ; _argv + push argc ; _argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_2F79+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 0EACh + mov di, 0EB2h + call sub_22C + pop di + pop si + retf +start endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +__checknull proc far ; CODE XREF: sub_2F79+34p + retf +__checknull endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn bp-based frame + +__terminate proc near ; CODE XREF: sub_2F79+50p + +arg_2 = byte ptr 4 + + mov bp, sp + mov ah, 4Ch ; 'L' + mov al, [bp+arg_2] + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) +__terminate endp ; AL = exit code + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_163 proc near + mov dx, 4Bh ; 'K' + push ds + push dx ; buf + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_163 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_178 proc near ; CODE XREF: start+25p + push ds + mov ax, 3500h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + +loc_17E: ; DATA XREF: sub_B6AC+18r + mov word ptr dword_CFDA, bx + +loc_182: ; DATA XREF: sub_B654+4r + mov word ptr dword_CFDA+2, es + mov ax, 3504h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr dword_CFDE, bx + mov word ptr dword_CFDE+2, es + mov ax, 3505h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr dword_CFE2, bx + mov word ptr dword_CFE2+2, es + mov ax, 3506h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr dword_CFE6, bx + mov word ptr dword_CFE6+2, es + mov ax, 2500h + mov dx, cs + mov ds, dx + assume ds:seg000 + mov dx, 163h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + assume ds:dseg + retn +sub_178 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +__restorezero proc far ; CODE XREF: sub_2F79+2Fp + push ds + mov ax, 2500h + lds dx, dword_CFDA + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + push ds + mov ax, 2504h + lds dx, dword_CFDE + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + push ds + mov ax, 2505h + lds dx, dword_CFE2 + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + push ds + mov ax, 2506h + lds dx, dword_CFE6 + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + retf +__restorezero endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1E8 proc near ; CODE XREF: start+124p sub_1E8+3Aj ... + mov ax, 100h + mov dx, di + mov bx, si + +loc_1EF: ; CODE XREF: sub_1E8+22j + cmp bx, di + jz short loc_20C + cmp byte ptr es:[bx], 0FFh + jz short loc_207 + mov cl, es:[bx+1] + xor ch, ch + cmp cx, ax + jnb short loc_207 + mov ax, cx + mov dx, bx + +loc_207: ; CODE XREF: sub_1E8+Fj sub_1E8+19j + add bx, 6 + jmp short loc_1EF +; --------------------------------------------------------------------------- + +loc_20C: ; CODE XREF: sub_1E8+9j + cmp dx, di + jz short locret_22B + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_224 + call dword ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +loc_224: ; CODE XREF: sub_1E8+33j + call word ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +locret_22B: ; CODE XREF: sub_1E8+26j + retn +sub_1E8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22C proc near ; CODE XREF: start+153p sub_22C+37j ... + mov ah, 0 + mov dx, di + mov bx, si + +loc_232: ; CODE XREF: sub_22C+1Fj + cmp bx, di + jz short loc_24D + cmp byte ptr es:[bx], 0FFh + jz short loc_248 + cmp es:[bx+1], ah + jb short loc_248 + mov ah, es:[bx+1] + mov dx, bx + +loc_248: ; CODE XREF: sub_22C+Ej sub_22C+14j + add bx, 6 + jmp short loc_232 +; --------------------------------------------------------------------------- + +loc_24D: ; CODE XREF: sub_22C+8j + cmp dx, di + jz short locret_26C + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_265 + call dword ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +loc_265: ; CODE XREF: sub_22C+30j + call word ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +locret_26C: ; CODE XREF: sub_22C+23j + retn +sub_22C endp + +; --------------------------------------------------------------------------- +DGROUP@ dw 0 ; DATA XREF: start+3w start+B0r ... +__MMODEL dw 0C004h + db 0 +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_286 + +loc_272: ; CODE XREF: sub_286+6Fj sub_286+76j + push ds + mov ds, word ptr cs:loc_35E+1 + push cs + call near ptr sub_22DC + mov ax, 0FFF3h + +loc_27F: ; CODE XREF: sub_286+53j sub_286+5Bj + pop si + pop di + pop ds + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_286 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_286 proc far ; CODE XREF: sub_2882+60p + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 0272 SIZE 00000014 BYTES + + push bp + mov bp, sp + push ds + push si + push di + mov ax, [bp+arg_0] + mov word ptr cs:loc_36C+1, ax + mov word ptr cs:loc_35E+1, ds + mov ax, [bp+arg_6] + mov word ptr cs:loc_2EC+1, ax + push ds + lds bx, [bp+arg_2] + mov ax, [bx+8] + mov cx, [bx+0Ah] + mov bp, [bx+0Eh] + sub bp, [bx+0Ch] + inc bp + pop ds + shr ax, 3 + mov byte ptr cs:loc_308+1, al + mov dh, al + mov dl, cl + mov word ptr cs:loc_363+1, dx + mov byte ptr cs:loc_306+1, cl + mul cx + mov word ptr cs:loc_301+1, ax + shl ax, 2 + mov word ptr cs:loc_2E7+1, ax + xchg ax, bx + push bx + push cs + call near ptr sub_22F2 + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_22F2 + jb short loc_27F + mov es, ax + mov ds, cx + +loc_2E7: ; CODE XREF: sub_286+F5j + ; DATA XREF: sub_286+49w + mov cx, 1234h + xor dx, dx + +loc_2EC: ; DATA XREF: sub_286+15w + mov bx, 1234h + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jnb short loc_2F8 + jmp loc_272 +; --------------------------------------------------------------------------- + +loc_2F8: ; CODE XREF: sub_286+6Dj + cmp ax, cx + jz short loc_2FF + jmp loc_272 +; --------------------------------------------------------------------------- + +loc_2FF: ; CODE XREF: sub_286+74j + xor si, si + +loc_301: ; DATA XREF: sub_286+42w + mov dx, 1234h + xor bx, bx + +loc_306: ; DATA XREF: sub_286+3Bw + mov ch, 11h + +loc_308: ; CODE XREF: sub_286+D5j + ; DATA XREF: sub_286+2Ew + mov cl, 11h + +loc_30A: ; CODE XREF: sub_286+D1j + push cx + push dx + push bx + lodsw + mov bx, ax + lodsw + mov dx, ax + mov di, 4 + +loc_316: ; CODE XREF: sub_286+B7j + rol bl, 1 + rcl ch, 1 + rol bl, 1 + rcl cl, 1 + rol bl, 1 + rcl ah, 1 + rol bl, 1 + rcl al, 1 + rol bl, 1 + rcl ch, 1 + rol bl, 1 + rcl cl, 1 + rol bl, 1 + rcl ah, 1 + rol bl, 1 + rcl al, 1 + mov bl, bh + mov bh, dl + mov dl, dh + dec di + jnz short loc_316 + pop bx + pop dx + mov es:[bx+di], al + add di, dx + mov es:[bx+di], ah + add di, dx + mov es:[bx+di], cl + add di, dx + mov es:[bx+di], ch + pop cx + inc bx + dec cl + jnz short loc_30A + dec ch + jnz short loc_308 + push ds + +loc_35E: ; DATA XREF: sub_286-13r sub_286+Dw ... + mov ax, 1234h + mov ds, ax + assume ds:nothing + +loc_363: ; DATA XREF: sub_286+36w + mov ax, 1234h + push es + push ax + push es + xor ax, ax + push ax + +loc_36C: ; DATA XREF: sub_286+9w + mov ax, 1234h + push ax + push cs + call near ptr sub_2762 + pop es + pop ds + assume ds:dseg + jb short loc_37E + dec bp + jz short loc_39A + jmp loc_2E7 +; --------------------------------------------------------------------------- + +loc_37E: ; CODE XREF: sub_286+F0j + push ds + mov ds, word ptr cs:loc_35E+1 + mov cx, ax + push es + push cs + call near ptr sub_22DC + push cs + call near ptr sub_22DC + mov ax, cx + stc + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_39A: ; CODE XREF: sub_286+F3j + push ds + mov ds, word ptr cs:loc_35E+1 + push es + push cs + call near ptr sub_22DC + push cs + call near ptr sub_22DC + mov ax, 0 + clc + pop si + pop di + pop ds + pop bp + retf 8 +sub_286 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_FE2+57p + mov bx, sp + mov cx, ss:[bx+8] + les bx, ss:[bx+4] + mov dx, es:[bx+1Ch] + mov ax, 4201h + mov bx, cx + xor cx, cx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + mov ax, 0FFF3h + jb short locret_3D3 + mov ax, 0 + +locret_3D3: ; CODE XREF: sub_3B4+1Aj + retf 6 +sub_3B4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3D6 proc far ; CODE XREF: sub_FE2+31p sub_2882+1Dp + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds dx, [bp+arg_0] + mov bx, [bp+arg_4] + mov ah, 3Fh ; '?' + mov cx, 20h ; ' ' + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + push ds + pop es + assume es:dseg + pop ds + sbb cx, cx + xor ax, cx + sub ax, cx + jb short loc_40D + push si + push di + mov si, 3DCh + mov di, dx + mov cx, 5 + repe cmpsb + pop di + pop si + jnz short loc_409 + mov ax, 0 + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_409: ; CODE XREF: sub_3D6+2Aj + mov ax, 0FFF3h + stc + +loc_40D: ; CODE XREF: sub_3D6+1Aj + pop bp + retf 6 +sub_3D6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_412 proc far ; CODE XREF: sub_2882+3Fp + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + cld + push ds + lds bx, [bp+arg_0] + mov cx, [bx+1Ch] + mov si, [bx+1Eh] + pop ds + mov ax, 0 + jcxz short loc_46C + push cx + push cs + call near ptr sub_22F2 + jb short loc_46C + push ds + mov ds, ax + xor dx, dx + mov bx, [bp+arg_4] + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + mov ax, 0FFF3h + jb short loc_464 + mov dx, si + xor si, si + nop + +loc_444: ; CODE XREF: sub_412+45j + lodsb + cmp al, 10h + jz short loc_45E + add si, dx + sub si, 3 + lodsw + or ax, ax + jz short loc_459 + sub cx, dx + mov dx, ax + ja short loc_444 + +loc_459: ; CODE XREF: sub_412+3Fj + xor ax, ax + +loc_45B: ; DATA XREF: sub_12CC+4r + jmp short loc_464 +; --------------------------------------------------------------------------- + nop + +loc_45E: ; CODE XREF: sub_412+35j + lodsw + lodsb + and ax, 0Fh + nop + +loc_464: ; CODE XREF: sub_412+2Bj + ; sub_412:loc_45Bj + mov bx, ds + pop ds + push bx + push cs + call near ptr sub_22DC + +loc_46C: ; CODE XREF: sub_412+13j sub_412+1Aj + pop si + pop bp + retf 6 +sub_412 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_472 proc far ; CODE XREF: sub_1D36+Cp sub_2B06+C8p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + mov bx, es:0 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + push es + push cs + call near ptr sub_2682 + pop bp + retf 2 +sub_472 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_48A proc far ; CODE XREF: sub_506+29p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_CF80 + mov cx, word_CF86 + mov dx, 8 + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_4BA + or ax, ax + jz short loc_4BA + dec ax + mov word_CF82, ax + mov word_CF84, 1 + mov al, byte ptr off_CF88 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_CF82, ax + dec ax + pop ds + pop bp + retf 2 +sub_48A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4C6 proc far ; CODE XREF: sub_2882+53p + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds bx, [bp+arg_0] + test byte ptr [bx+5], 80h + pop ds + jz short loc_4FE + mov ah, 3Fh ; '?' + mov bx, [bp+arg_4] + mov cx, 30h ; '0' + mov dx, 20D0h + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_4FE + mov bx, dx + mov cx, 1004h + +loc_4E8: ; CODE XREF: sub_4C6+31j + mov dl, [bx] + mov ax, [bx+1] + mov [bx], ax + mov [bx+2], dl + add bx, 3 + dec ch + jnz short loc_4E8 + mov ax, 0 + jmp short loc_502 +; --------------------------------------------------------------------------- + +loc_4FE: ; CODE XREF: sub_4C6+Cj sub_4C6+1Bj + stc + mov ax, 0FFF3h + +loc_502: ; CODE XREF: sub_4C6+36j + pop bp + retf 6 +sub_4C6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_506 proc far ; CODE XREF: sub_60C+14p sub_1DAE+3Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + cmp word ptr es:2, 0 + jz short loc_52D + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + push es + push cs + call near ptr sub_48A + pop bp + retf 2 +sub_506 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_536 proc far ; CODE XREF: sub_9B64+66P sub_9B64+A7P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D3B0, 0 + nop + push cs + call near ptr sub_2434 + +loc_549: ; CODE XREF: sub_536+31j + nop + push cs + +loc_54B: ; DATA XREF: sub_11EE+1Fr + call loc_1C2C + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: sub_536+25j + nop + push cs + call near ptr sub_2434 + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: sub_536+1Dj + add word_D3B0, 6 + cmp word_D3B0, 64h ; 'd' + jl short loc_549 + mov word_D3B0, 64h ; 'd' + nop + push cs + call loc_1C2C + pop di + pop si + retf 2 +sub_536 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_57A proc far ; CODE XREF: sub_9B64+9BP + ; sub_9B64+2B2P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D3B0, 64h ; 'd' + nop + push cs + call near ptr sub_2434 + +loc_58D: ; CODE XREF: sub_57A+2Cj + nop + push cs + call loc_1C2C + mov di, si + cmp di, 0 + jle short loc_5A1 + +loc_599: ; CODE XREF: sub_57A+25j + nop + push cs + call near ptr sub_2434 + dec di + jnz short loc_599 + +loc_5A1: ; CODE XREF: sub_57A+1Dj + sub word_D3B0, 6 + jg short loc_58D + mov word_D3B0, 0 + nop + push cs + call loc_1C2C + pop di + pop si + retf 2 +sub_57A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5B8 proc far ; CODE XREF: sub_2B06+20p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov word_D6E0, 6 + mov ax, word_D3E8 + add ax, 9 + push ax + push cs + call near ptr sub_257E + jb short loc_5F4 + mov es, ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_CE4 + jb short loc_5FB + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_D3E8 + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5F4: ; CODE XREF: sub_5B8+14j + mov byte ptr word_D3EA, 3 + jmp short loc_605 +; --------------------------------------------------------------------------- + +loc_5FB: ; CODE XREF: sub_5B8+22j + push es + push cs + call near ptr sub_2682 + mov byte ptr word_D3EA, 1 + +loc_605: ; CODE XREF: sub_5B8+41j + xor ax, ax + pop bp + retf 4 +sub_5B8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_60C proc far ; CODE XREF: sub_2BE6+4Cp + +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 + mov di, [bp+arg_4] + mov si, [bp+arg_2] + cmp si, 0 + jle short loc_631 + +loc_61C: ; CODE XREF: sub_60C+23j + push [bp+arg_0] + push cs + call near ptr sub_506 + inc ah + jz short loc_631 + mov es, [bp+arg_6] + mov es:[di], al + inc di + dec si + jnz short loc_61C + +loc_631: ; CODE XREF: sub_60C+Ej sub_60C+19j + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_60C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_63C proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + mov es, [bp+arg_4] + mov ax, es:2 + mov dx, [bp+arg_0] + mov cx, [bp+arg_2] + or cx, cx + jnz short loc_664 + cmp dx, ax + ja short loc_664 + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_664: ; CODE XREF: sub_63C+12j sub_63C+16j + mov bx, es:0 + sub dx, ax + sbb cx, 0 + mov ax, 4201h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + sbb ax, ax + mov es:2, ax + pop bp + retf 6 +sub_63C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_67E proc far ; CODE XREF: sub_1E2E+34p sub_2BE6+BCp + +arg_0 = byte ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + mov es, [bp+arg_6] + mov bx, 0 + xchg bx, es:2 + mov al, [bp+arg_0] + mov dx, [bp+arg_2] + mov cx, [bp+arg_4] + cmp al, 1 + jnz short loc_69E + sub dx, bx + sbb cx, 0 + +loc_69E: ; CODE XREF: sub_67E+19j + mov bx, es:0 + mov ah, 42h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: + ; 0-from beginnig,1-from current,2-from end + sbb ax, ax + pop bp + retf 8 +sub_67E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6AE proc near ; CODE XREF: sub_DD4+64p sub_DD4+6Fp + or bl, bl + jz short loc_6EA + test bl, 3 + jz short loc_6EE + test bl, 1 + jz short loc_6C2 + mov ax, word_D362 + jmp short loc_6C5 +; --------------------------------------------------------------------------- + nop + +loc_6C2: ; CODE XREF: sub_6AE+Cj + mov ax, word_D366 + +loc_6C5: ; CODE XREF: sub_6AE+11j + sub cx, si + jz short loc_6EA + mov dx, di + sub dx, bp + mov di, ax + sub ax, si + imul dx + idiv cx + add ax, bp + mov cx, di + mov di, ax + xor ax, ax + or di, di + js short loc_6F8 + mov ax, word_D36A + cmp di, ax + jg short loc_6F8 + +loc_6E8: ; CODE XREF: sub_6AE+6Ej + xor bl, bl + +loc_6EA: ; CODE XREF: sub_6AE+2j sub_6AE+19j ... + or bx, bx + retn +; --------------------------------------------------------------------------- + nop + +loc_6EE: ; CODE XREF: sub_6AE+7j + xor ax, ax + test bl, 4 + jz short loc_6F8 + mov ax, word_D36A + +loc_6F8: ; CODE XREF: sub_6AE+31j sub_6AE+38j ... + sub di, bp + jz short loc_6EA + mov dx, cx + sub dx, si + mov cx, ax + sub ax, bp + imul dx + idiv di + add ax, si + mov di, cx + mov cx, ax + +loc_70E: ; DATA XREF: sub_12CC:loc_1311r + cmp word_D362, cx + jle short loc_718 + mov bl, 1 + retn +; --------------------------------------------------------------------------- + nop + +loc_718: ; CODE XREF: sub_6AE+64j + cmp cx, word_D366 + jle short loc_6E8 + mov bl, 2 + retn +sub_6AE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_722 proc far ; CODE XREF: sub_9FC+1Ap + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + lds dx, [bp+arg_0] + mov ax, [bp+arg_4] + int 21h ; DOS - + pop ds + sbb dx, dx + xor ax, dx + sub ax, dx + pop bp + retf 6 +sub_722 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_73A proc far ; CODE XREF: sub_C1A+5p + mov bx, sp + mov bx, ss:[bx+4] + mov ax, 4201h + xor cx, cx + mov dx, cx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + jb short loc_76A + push si + push di + push ax + push dx + xor dx, dx + mov ax, 4202h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from end of file + mov si, ax + mov di, dx + pop cx + pop dx + mov ax, 4200h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov ax, si + mov dx, di + pop di + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_76A: ; CODE XREF: sub_73A+Fj + neg ax + sbb dx, dx + retf 2 +sub_73A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_772 proc far ; CODE XREF: sub_233E+34p sub_233E+5Bp ... + +arg_0 = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + push ds + push bx + push es + mov al, [bp+arg_4] + lds dx, [bp+arg_0] + mov ah, 35h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov ah, 25h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + mov ax, bx + mov dx, es + pop es + pop bx + pop ds + pop bp + retf 6 +sub_772 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_792 proc far ; CODE XREF: sub_7C8+1p sub_C10B+3P + mov al, 0 + out 7Ch, al + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 80h ; '€' + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +sub_792 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_7A8 proc far ; CODE XREF: sub_7C8+27p sub_98B5+82P ... + mov ax, 0FFF0h + mov dx, 4A0h + out dx, ax + mov ax, 0FFFFh + mov dx, 4A8h + out dx, ax + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 4 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 0 + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +sub_7A8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_7C8 proc far ; CODE XREF: sub_B616+37P sub_B756+1EP + push cs + call near ptr sub_792 + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + xor ax, ax + out dx, ax + mov dx, 4AEh + mov ax, 0Fh + out dx, ax + push cs + call near ptr sub_7A8 + retf +sub_7C8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7F4 proc far ; CODE XREF: sub_9B64+18EP + +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 + + push bp + mov bp, sp + push ds + push si + push di + mov cx, [bp+arg_8] + mov dx, [bp+arg_4] + mov si, [bp+arg_2] + mov di, [bp+arg_0] + mov ax, di + shl ax, 2 + add ax, di + shl ax, 4 + mov word ptr cs:loc_8C7+2, ax + mov ax, si + sub ax, [bp+arg_6] + mov bx, ax + inc bx + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov ax, dx + shr ax, 3 + and ax, 0FFFEh + add si, ax + shr ax, 1 + mov bp, cx + shr bp, 4 + sub ax, bp + inc ax + mov bp, dx + sub bp, cx + mov cx, ax + and dl, 0Fh + mov dh, 0Fh + sub dh, dl + mov dl, dh + xor dh, dh + mov ax, dx + push bx + push bp + mov bx, bp + add bx, ax + shr bx, 4 + add bp, dx + shr bp, 4 + cmp al, dl + jz short loc_86E + jl short loc_868 + cmp bx, bp + jnz short loc_86E + jmp short loc_86C +; --------------------------------------------------------------------------- + nop + +loc_868: ; CODE XREF: sub_7F4+6Bj + cmp bx, bp + jge short loc_86E + +loc_86C: ; CODE XREF: sub_7F4+71j + inc cx + nop + +loc_86E: ; CODE XREF: sub_7F4+69j sub_7F4+6Fj ... + pop bp + pop bx + shl dl, 4 + or dl, al + mov di, dx + mov ax, 29h ; ')' + sub ax, cx + shl ax, 1 + mov byte ptr cs:loc_8D6+2, al + mov byte ptr cs:loc_8D9+2, al + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 80h ; '€' + out 7Ch, al + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A4h + mov ax, 28F0h + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + mov ax, di + or ax, 1000h + out dx, ax + mov dx, 4AEh + mov ax, bp + out dx, ax + std + mov ax, 0A800h + mov ds, ax + assume ds:nothing + mov es, ax + assume es:nothing + mov di, si + +loc_8C7: ; DATA XREF: sub_7F4+1Cw + add di, 1111h + mov dx, cx + nop + +loc_8CE: ; CODE XREF: sub_7F4+E9j + mov cx, dx + rep movsw + inc si + inc si + inc di + inc di + +loc_8D6: ; DATA XREF: sub_7F4+8Aw + sub si, 50h ; 'P' + +loc_8D9: ; DATA XREF: sub_7F4+8Ew + sub di, 50h ; 'P' + dec bx + jnz short loc_8CE + cld + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov al, 4 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 0 + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + pop di + pop si + pop ds + assume ds:dseg + pop bp + retf 0Ah +sub_7F4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_8FA proc far ; CODE XREF: sub_9AD4+55P + +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 + + push bp + mov bp, sp + push ds + push si + push di + mov cx, [bp+arg_8] + mov si, [bp+arg_6] + mov dx, [bp+arg_4] + mov bx, [bp+arg_2] + mov di, [bp+arg_0] + mov ax, di + dec ax + shr ax, 4 + shl ax, 1 + mov byte ptr cs:loc_9CB+2, al + sub bx, si + inc bx + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov ax, cx + shr ax, 3 + and ax, 0FFFEh + add si, ax + shr ax, 1 + mov bp, dx + shr bp, 4 + sub bp, ax + inc bp + mov ax, bp + mov bp, dx + sub bp, cx + mov es, cx + assume es:nothing + mov cx, ax + mov dx, es + sub dx, di + and dx, 0Fh + mov ax, es + and ax, 0Fh + push bx + push bp + mov bx, bp + add bx, ax + shr bx, 4 + add bp, dx + shr bp, 4 + cmp al, dl + jz short loc_972 + jl short loc_96C + cmp bx, bp + jnz short loc_972 + jmp short loc_970 +; --------------------------------------------------------------------------- + +loc_96C: ; CODE XREF: sub_8FA+6Aj + cmp bx, bp + jge short loc_972 + +loc_970: ; CODE XREF: sub_8FA+70j + inc cx + nop + +loc_972: ; CODE XREF: sub_8FA+68j sub_8FA+6Ej ... + pop bp + pop bx + shl dl, 4 + or dl, al + xor dh, dh + mov di, dx + mov ax, 29h ; ')' + sub ax, cx + shl ax, 1 + mov byte ptr cs:loc_9D8+2, al + mov byte ptr cs:loc_9DB+2, al + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 80h ; '€' + out 7Ch, al + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A4h + mov ax, 28F0h + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + mov ax, di + out dx, ax + mov dx, 4AEh + mov ax, bp + out dx, ax + mov ax, 0A800h + mov ds, ax + assume ds:nothing + mov es, ax + assume es:nothing + mov di, si + dec di + dec di + +loc_9CB: ; DATA XREF: sub_8FA+1Dw + sub di, 50h ; 'P' + mov dx, cx + +loc_9D0: ; CODE XREF: sub_8FA+E5j + mov cx, dx + rep movsw + dec si + dec si + dec di + dec di + +loc_9D8: ; DATA XREF: sub_8FA+8Aw + add si, 50h ; 'P' + +loc_9DB: ; DATA XREF: sub_8FA+8Ew + add di, 50h ; 'P' + dec bx + jnz short loc_9D0 + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov al, 4 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 0 + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + pop di + pop si + pop ds + assume ds:dseg + pop bp + retf 0Ah +sub_8FA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9FC proc far ; CODE XREF: sub_BBFD+73P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_D396 + cmp bx, 0FFFFh + jnz short loc_A4C + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_722 + or ax, dx + mov word_D396, ax + mov cx, ax + xor ax, ax + mov word_F04A, ax + mov word_F048, ax + mov word_F04C, ax + mov word_F04E, ax + mov word_F044, ax + mov word_F046, ax + inc dx + jz short loc_A4C + mov bx, cx + xor cx, cx + mov dx, cx + mov ax, 4202h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from end of file + mov word_F044, ax + mov word_F046, dx + mov ax, 1 + +loc_A4C: ; CODE XREF: sub_9FC+Dj sub_9FC+39j + pop bp + retf 4 +sub_9FC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A50 proc far ; CODE XREF: sub_ABC+1p sub_BD8+1p + mov bx, word_D396 + cmp bx, 0FFFFh + jz short locret_ABA + mov ax, word_F048 + cmp word_F04A, ax + jnb short loc_A8E + push ds + mov cx, word_F048 + lds dx, dword_F040 + mov ah, 40h + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop ds + jb short loc_A81 + add word_F044, ax + adc word_F046, 0 + cmp word_F048, ax + jz short loc_A87 + +loc_A81: ; CODE XREF: sub_A50+20j + mov word_F04E, 1 + +loc_A87: ; CODE XREF: sub_A50+2Fj + mov word_F048, 0 + retf +; --------------------------------------------------------------------------- + +loc_A8E: ; CODE XREF: sub_A50+10j + cmp word_F04A, 0 + jz short locret_ABA + mov dx, ax + mov cx, 0 + add dx, word_F044 + mov word_F04A, cx + mov word_F048, cx + adc cx, word_F046 + mov ax, 4200h + mov bx, word_D396 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_F044, ax + mov word_F046, dx + +locret_ABA: ; CODE XREF: sub_A50+7j sub_A50+43j + retf +sub_A50 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_ABC proc far ; CODE XREF: sub_95A3+1FP sub_B888+23P ... + push cs + call near ptr sub_A50 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_D396, 0FFFFh + retf +sub_ABC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_ACC proc far ; CODE XREF: sub_BC9E+DP seg004:06DFP + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_CE4 + jb short loc_AE2 + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_AE2: ; CODE XREF: sub_ACC+Fj + sbb ax, ax + inc ax + retf 4 +sub_ACC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE8 proc far ; CODE XREF: sub_95A3+1AP sub_B888+1EP ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_D394, 0 + jz short loc_B6C + mov bx, [bp+arg_0] + les di, [bp+arg_2] + assume es:nothing + +loc_AFA: ; CODE XREF: sub_AE8+7Fj + mov ax, word_F04A + cmp word_F048, ax + jb short loc_B30 + add word_F044, ax + adc word_F046, 0 + push bx + push ds + mov cx, word_D394 + mov bx, word_D396 + lds dx, dword_F040 + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + pop bx + cmc + sbb dx, dx + and ax, dx + mov word_F04A, ax + jz short loc_B8B + mov word_F048, 0 + +loc_B30: ; CODE XREF: sub_AE8+19j + mov si, word_F04A + sub si, word_F048 + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_B61 + or si, si + jz short loc_B61 + push si + push ds + mov cx, si + mov ax, word_F048 + lds si, dword_F040 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_B61: ; CODE XREF: sub_AE8+5Cj sub_AE8+60j + add word_F048, si + sub bx, si + jnz short loc_AFA + jmp short loc_B91 +; --------------------------------------------------------------------------- + nop + +loc_B6C: ; CODE XREF: sub_AE8+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_D396 + lds dx, [bp+arg_2] + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + add word_F044, ax + adc word_F046, 0 + mov bx, cx + sub bx, ax + jz short loc_B91 + +loc_B8B: ; CODE XREF: sub_AE8+40j + mov word_F04C, 1 + +loc_B91: ; CODE XREF: sub_AE8+81j sub_AE8+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_AE8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9C proc far ; CODE XREF: sub_95A3+8P sub_B888+8P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_D396 + cmp bx, 0FFFFh + jnz short loc_BD3 + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_CE4 + sbb bx, bx + or ax, bx + mov word_D396, ax + xor ax, ax + mov word_F04A, ax + mov word_F044, ax + mov word_F046, ax + mov word_F048, ax + mov word_F04C, ax + mov word_F04E, ax + lea ax, [bx+1] + +loc_BD3: ; CODE XREF: sub_B9C+Cj + pop bp + retf 4 +sub_B9C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_BD8 proc far ; CODE XREF: sub_B888+12P sub_B967+1EP ... + push cs + call near ptr sub_A50 + cmp bx, 0FFFFh + jz short locret_C09 + push bp + mov bp, sp + mov al, [bp+6] + mov ah, 42h ; 'B' + mov dx, [bp+8] + mov cx, [bp+0Ah] + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: + ; 0-from beginnig,1-from current,2-from end + pop bp + mov ax, 4201h + mov dx, 0 + mov cx, dx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from present location + mov word_F04C, 0 + mov word_F044, ax + mov word_F046, dx + +locret_C09: ; CODE XREF: sub_BD8+7j + retf 6 +sub_BD8 endp + +; --------------------------------------------------------------------------- + mov ax, word_F048 + xor dx, dx + add ax, word_F044 + adc dx, word_F046 + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_C1A proc far ; CODE XREF: sub_95A3+DP + push word_D396 + push cs + call near ptr sub_73A + jb short loc_C25 + retf +; --------------------------------------------------------------------------- + +loc_C25: ; CODE XREF: sub_C1A+8j + mov ax, dx + retf +sub_C1A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C28 proc far ; CODE XREF: sub_BBFD+94P + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_D394, 0 + jz short loc_C9E + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_C3A: ; CODE XREF: sub_C28+6Ej + mov cx, word_D394 + sub cx, word_F048 + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_F040 + add di, word_F048 + sub bx, cx + add word_F048, cx + push ds + mov ds, word ptr [bp+arg_2+2] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + or ax, ax + jns short loc_C94 + push ds + push bx + mov cx, word_D394 + mov bx, word_D396 + lds dx, dword_F040 + mov ah, 40h + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop bx + pop ds + jb short loc_CB0 + cmp word_D394, ax + jnz short loc_CB0 + mov word_F048, 0 + add word_F044, ax + adc word_F046, 0 + +loc_C94: ; CODE XREF: sub_C28+3Fj + or bx, bx + jnz short loc_C3A + mov ax, 1 + jmp short loc_CC6 +; --------------------------------------------------------------------------- + nop + +loc_C9E: ; CODE XREF: sub_C28+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_D396 + lds dx, [bp+arg_2] + mov ah, 40h + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop ds + jnb short loc_CB8 + +loc_CB0: ; CODE XREF: sub_C28+55j sub_C28+5Bj + mov word_F04E, 1 + xor ax, ax + +loc_CB8: ; CODE XREF: sub_C28+86j + add word_F044, ax + adc word_F046, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_CC6: ; CODE XREF: sub_C28+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_C28 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_CCE proc far ; CODE XREF: sub_2882+68p sub_2882+7Dp + mov bx, sp + mov ah, 3Eh ; '>' + mov bx, ss:[bx+4] + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov ax, 0 + jnb short locret_CE0 + mov ax, 0FFF3h + +locret_CE0: ; CODE XREF: sub_CCE+Dj + retf 2 +sub_CCE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_CE4 proc far ; CODE XREF: sub_5B8+1Fp sub_ACC+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_D398 + push ds + lds dx, ss:[bx+4] + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + pop ds + jb short loc_CF8 + retf 4 +; --------------------------------------------------------------------------- + +loc_CF8: ; CODE XREF: sub_CE4+Fj + mov ax, 0FFFEh + retf 4 +sub_CE4 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_D04 + +loc_CFE: ; CODE XREF: sub_D04+1Fj sub_D04+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_D04 + +; =============== S U B R O U T I N E ======================================= + + +sub_D04 proc far ; CODE XREF: sub_9AD4+74P sub_A8A4+1AP ... + +; FUNCTION CHUNK AT 0CFE SIZE 00000006 BYTES + + push bp + push si + push di + cli + add sp, 0Ah + pop di + pop si + pop ax + pop bx + sub sp, 12h + sti + cmp bx, si + jle short loc_D19 + xchg bx, si + +loc_D19: ; CODE XREF: sub_D04+11j + mov bp, word_D362 + mov dx, word_D364 + sub si, bp + jl short loc_CFE + sub bx, bp + cmp bx, 8000h + sbb cx, cx + and bx, cx + sub si, dx + sbb cx, cx + and si, cx + add si, dx + sub si, bx + jl short loc_CFE + add bx, bp + cmp ax, di + jle short loc_D42 + xchg ax, di + +loc_D42: ; CODE XREF: sub_D04+3Bj + mov dx, word_D368 + mov bp, word_D36A + sub di, dx + js short loc_CFE + sub ax, dx + cmp ax, 8000h + sbb cx, cx + and ax, cx + sub di, bp + sbb cx, cx + and di, cx + add di, bp + sub di, ax + jl short loc_CFE + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_D36E + mov es, ax + mov dx, di + shl di, 2 + add di, dx + shl di, 4 + mov dx, bx + shr dx, 4 + shl dx, 1 + add di, dx + and bx, 0Fh + add si, bx + sub si, 10h + shl bx, 1 + mov dx, [bx+3F2h] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+3F4h] + sar si, 4 + js short loc_DC0 + lea bp, [si+2Ah] + shl bp, 1 + +loc_DA8: ; CODE XREF: sub_D04+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_DA8 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_DC0: ; CODE XREF: sub_D04+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_DC8: ; CODE XREF: sub_D04+C7j + stosw + sub di, bp + jnb short loc_DC8 + pop di + pop si + pop bp + retf 8 +sub_D04 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_DD4 proc far ; CODE XREF: sub_C045+88P sub_C045+99P ... + push bp + push si + push di + cli + add sp, 0Ah + pop bp + pop si + pop di + pop cx + sub sp, 12h + sti + mov ax, word_D368 + sub di, ax + sub bp, ax + mov ax, word_D362 + mov dx, word_D36A + mov bx, 505h + cmp ax, cx + jg short loc_E04 + xor bl, 3 + cmp cx, word_D366 + jg short loc_E04 + xor bl, 2 + +loc_E04: ; CODE XREF: sub_DD4+22j sub_DD4+2Bj + cmp di, dx + jg short loc_E12 + xor bl, 0Ch + or di, di + js short loc_E12 + xor bl, 8 + +loc_E12: ; CODE XREF: sub_DD4+32j sub_DD4+39j + cmp ax, si + jg short loc_E22 + xor bh, 3 + cmp si, word_D366 + jg short loc_E22 + xor bh, 2 + +loc_E22: ; CODE XREF: sub_DD4+40j sub_DD4+49j + cmp bp, dx + jg short loc_E30 + xor bh, 0Ch + or bp, bp + js short loc_E30 + xor bh, 8 + +loc_E30: ; CODE XREF: sub_DD4+50j sub_DD4+57j + test bh, bl + jnz short loc_E9B + or bx, bx + jz short loc_E48 + call sub_6AE + jz short loc_E48 + xchg bh, bl + xchg cx, si + xchg di, bp + call sub_6AE + jnz short loc_E9B + +loc_E48: ; CODE XREF: sub_DD4+62j sub_DD4+67j + mov es, word_D36E + sub si, cx + jnb short loc_E56 + add cx, si + neg si + xchg di, bp + +loc_E56: ; CODE XREF: sub_DD4+7Aj + sub bp, di + sbb dx, dx + mov bx, 50h ; 'P' + add bx, dx + xor bx, dx + add bp, dx + xor dx, bp + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov ax, cx + shr ax, 3 + add di, ax + xor ax, ax + cmp si, dx + jg short loc_EF0 + jz short loc_EAE + dec bx + xchg dx, si + div si + mov dx, 8000h + mov bp, ax + and cl, 7 + mov al, dh + shr al, cl + lea cx, [si+1] + +loc_E92: ; CODE XREF: sub_DD4+C5j sub_DD4+D2j + stosb + add dx, bp + jb short loc_EA2 + add di, bx + loop loc_E92 + +loc_E9B: ; CODE XREF: sub_DD4+5Ej sub_DD4+72j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_EA2: ; CODE XREF: sub_DD4+C1j + ror al, 1 + adc di, bx + loop loc_E92 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_EAE: ; CODE XREF: sub_DD4+A8j + dec bx + and cl, 7 + mov al, 80h ; '€' + shr al, cl + lea cx, [si+1] + shr cx, 1 + jnb short loc_EC2 + stosb + ror al, 1 + adc di, bx + +loc_EC2: ; CODE XREF: sub_DD4+E7j + jcxz short loc_EEA + shr cx, 1 + jnb short loc_ED2 + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + +loc_ED2: ; CODE XREF: sub_DD4+F2j + jcxz short loc_EEA + +loc_ED4: ; CODE XREF: sub_DD4+114j + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + stosb + ror al, 1 + adc di, bx + loop loc_ED4 + +loc_EEA: ; CODE XREF: sub_DD4:loc_EC2j + ; sub_DD4:loc_ED2j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_EF0: ; CODE XREF: sub_DD4+A6j + and di, 0FFFEh + or dx, dx + jz short loc_F44 + div si + mov dx, 8000h + mov bp, dx + and cl, 0Fh + shr dx, cl + mov cx, si + inc cx + mov si, ax + xor ax, ax + +loc_F0A: ; CODE XREF: sub_DD4+140j sub_DD4+155j ... + or ax, dx + ror dx, 1 + jb short loc_F20 + add bp, si + jb short loc_F32 + loop loc_F0A + xchg ah, al + stosw + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F20: ; CODE XREF: sub_DD4+13Aj + xchg ah, al + stosw + xor ax, ax + add bp, si + jb short loc_F39 + loop loc_F0A + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F32: ; CODE XREF: sub_DD4+13Ej + xchg ah, al + mov es:[di], ax + xor ax, ax + +loc_F39: ; CODE XREF: sub_DD4+153j + add di, bx + loop loc_F0A + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_F44: ; CODE XREF: sub_DD4+121j + mov bx, cx + and bx, 0Fh + lea cx, [bx+si-10h] + shl bx, 1 + mov ax, [bx+3F2h] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_F66 + stosw + mov ax, 0FFFFh + rep stosw + +loc_F66: ; CODE XREF: sub_DD4+18Aj + and ax, [bx+3F4h] + stosw + pop di + pop si + pop bp + retf 8 +sub_DD4 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F72 proc far ; CODE XREF: sub_9701+62P sub_9A7E+CP ... + mov bx, sp + mov al, ss:[bx+6] + mov ah, ss:[bx+4] + mov dx, 7Eh ; '~' + pushf + cli + out 7Ch, al + shr ah, 1 + sbb al, al + out dx, al + shr ah, 1 + sbb al, al + out dx, al + shr ah, 1 + sbb al, al + out dx, al + shr ah, 1 + sbb al, al + out dx, al + popf + retf 4 +sub_F72 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F9C proc far ; CODE XREF: sub_9701+7CP sub_9A7E+4DP ... + xor al, al + out 7Ch, al + retf +sub_F9C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_FA2 proc far ; CODE XREF: _main+20P + xor ax, ax + cmp word_D39A, ax + jnz short locret_FC5 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_2592 + or ax, ax + jz short locret_FC5 + mov word_D39A, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_115A + mov ax, 1 + +locret_FC5: ; CODE XREF: sub_FA2+6j sub_FA2+13j + retf +sub_FA2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_FC6 proc far ; CODE XREF: _main+CAP + mov ax, word_D39A + test ax, ax + jz short locret_FE1 + push ax + push ax + xor ax, ax + mov word_D39A, ax + push ax + push cs + call near ptr sub_11C8 + nop + push cs + call near ptr sub_2682 + mov ax, 1 + +locret_FE1: ; CODE XREF: sub_FC6+5j + retf +sub_FC6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FE2 proc far ; CODE XREF: _main+29P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + sub sp, 20h + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_CE4 + mov bp, ax + mov ax, 0 + jb short loc_106F + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_22F2 + mov si, ax + mov ax, 0 + jb short loc_1067 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_105D + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_105D + add di, 8 + push si + mov si, 41Ch + mov cx, 4 + repe cmpsw + pop si + jnz short loc_105D + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3B4 + push ds + mov ds, si + mov bx, bp + xor dx, dx + mov cx, 2000h + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + cmp ax, 2000h + jnz short loc_105D + push si + xor ax, ax + push ax + push cs + call near ptr sub_11C8 + mov ax, 1 + jmp short loc_105F +; --------------------------------------------------------------------------- + +loc_105D: ; CODE XREF: sub_FE2+34j sub_FE2+3Fj ... + xor ax, ax + +loc_105F: ; CODE XREF: sub_FE2+79j + push ax + push si + nop + push cs + call near ptr sub_22DC + pop ax + +loc_1067: ; CODE XREF: sub_FE2+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_106F: ; CODE XREF: sub_FE2+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_FE2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1078 proc far ; CODE XREF: sub_B9B3+60P sub_BA25+81P ... + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + mov cx, di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_D670 + mov es, di + mov di, [bp+arg_6] + shl di, 1 + mov ah, [bp+arg_2] + mov al, 0 + rol ax, 1 + shr ax, 1 + adc ax, 56h ; 'V' + mov bx, [bp+arg_0] + mov bp, dx + mov es:[di+2000h], bx + stosw + or ah, 80h + mov es:[di+2000h], bx + stosw + mov di, cx + retf 8 +sub_1078 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10BC proc far ; CODE XREF: sub_BA25+16P sub_BA25+28P ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_D670 + mov es, di + mov di, [bp+arg_8] + shl di, 1 + push ds + lds si, [bp+arg_2] + mov cx, di + mov bx, [bp+arg_0] + mov bp, dx + lodsb + or al, al + jz short loc_10FE + +loc_10EA: ; CODE XREF: sub_10BC+40j + mov ah, al + mov al, 0 + rol ax, 1 + shr ax, 1 + adc al, 56h ; 'V' + stosw + or ah, 80h + stosw + lodsb + or al, al + jnz short loc_10EA + +loc_10FE: ; CODE XREF: sub_10BC+2Cj + xchg cx, di + sub cx, di + shr cx, 1 + mov ax, bx + add di, 2000h + rep stosw + pop ds + pop di + pop si + retf 0Ah +sub_10BC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1112 proc near ; CODE XREF: sub_1134+1Ap sub_115A+15p + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov cx, 10h + mov bx, 0 + +loc_111E: ; CODE XREF: sub_1112+1Ej + mov al, bl + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, bl + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + stosw + inc bx + loop loc_111E + retn +sub_1112 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1134 proc far + push di + mov dx, sp + cli + add sp, 6 + pop di + pop es + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_1112 + mov al, 0Ah + out 68h, al + pop di + retf 6 +sub_1134 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_115A proc far ; CODE XREF: sub_FA2+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_1168: ; CODE XREF: sub_115A+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1112 + inc dl + jnz short loc_1168 + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_115A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_117E proc near ; CODE XREF: sub_11A0+1Bp sub_11C8+16p + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov cx, 10h + mov bx, 0 + +loc_118A: ; CODE XREF: sub_117E+1Ej + mov al, bl + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + lodsw + out 0A9h, al ; Interrupt Controller #2, 8259A + mov al, bl + out 0A5h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A9h, al ; Interrupt Controller #2, 8259A + inc bx + loop loc_118A + retn +sub_117E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11A0 proc far + push ds + push si + mov dx, sp + cli + add sp, 8 + pop si + pop ds + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_117E + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +sub_11A0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11C8 proc far ; CODE XREF: sub_FC6+10p sub_FE2+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_11D7: ; CODE XREF: sub_11C8+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_117E + inc dl + jnz short loc_11D7 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_11C8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_11EE proc far ; CODE XREF: sub_B756+23P + mov ah, 42h ; 'B' + mov ch, 0C0h ; 'À' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov ax, 0A800h + mov word_D3A4, ax + mov word_D36E, ax + mov word_D3A6, 3E80h + xor ax, ax + mov word_D362, ax + mov word_D368, ax + mov es, ax + assume es:seg000 + mov ah, byte ptr es:loc_54B+2 + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_D3AC, ax + mov ax, 27Fh + mov word_D366, ax + mov word_D364, ax + mov ax, 190h + mov word_D3A8, ax + dec ax + mov word_D36C, ax + mov word_D36A, ax + mov word_D370, 7CB0h + retf +sub_11EE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_123C proc far ; CODE XREF: sub_A8FA+6E4P sub_B616+EP ... + mov al, 80h ; '€' + pushf + cli + out 7Ch, al + popf + xor ax, ax + mov dx, 7Eh ; '~' + out dx, al + out dx, al + out dx, al + out dx, al + mov bx, di + xor di, di + mov cx, word_D3A6 + mov es, word_D3A4 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_123C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1260 proc near ; CODE XREF: sub_1276+25p sub_1276+28p ... + xor al, 1 + out 0A6h, al ; Interrupt Controller #2, 8259A + mov ds, bx + mov es, dx + xor di, di + mov si, di + rep movsw + mov cx, di + shr cx, 1 + xchg bx, dx + retn +sub_1260 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1276 proc far ; CODE XREF: sub_A8FA+3DBP + xor dx, dx + mov cx, word_D3A6 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_22F2 + xchg ax, dx + jb short locret_12C8 + xor al, al + out 7Ch, al + mov bx, sp + mov ax, ss:[bx+4] + and al, 1 + push si + push di + push ds + mov bx, 0A800h + call sub_1260 + call sub_1260 + mov bx, 0B000h + call sub_1260 + call sub_1260 + mov bx, 0B800h + call sub_1260 + call sub_1260 + mov bx, 0E000h + call sub_1260 + call sub_1260 + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_22DC + mov ax, 1 + +locret_12C8: ; CODE XREF: sub_1276+11j + retf 2 +sub_1276 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_12CC proc far ; CODE XREF: sub_233E+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_131F + mov bx, sp + mov cx, ss:[bx+6] + mov dx, ss:[bx+4] + mov ah, 31h ; '1' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov ah, bh + jcxz short locret_131F + and dx, cx + not cx + and ax, cx + or ax, dx + mov cx, ax + mov bh, ah + mov ah, 30h ; '0' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test word_D674, 1 + jz short loc_1306 + mov ah, 0Ch + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + +loc_1306: ; CODE XREF: sub_12CC+34j + test cl, 1 + jz short loc_1311 + mov ah, 0Eh + xor dx, dx + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + +loc_1311: ; CODE XREF: sub_12CC+3Dj + test byte ptr es:loc_70E+3, 1 + jz short loc_131D + mov ah, 11h + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + +loc_131D: ; CODE XREF: sub_12CC+4Bj + mov ax, cx + +locret_131F: ; CODE XREF: sub_12CC+Aj sub_12CC+1Cj + retf 4 +sub_12CC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1322 proc far ; CODE XREF: sub_95CB+67P + ; sub_A8FA+494P ... + +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 di + mov cx, [bp+arg_6] + mov di, [bp+arg_4] + mov dx, [bp+arg_0] + mov bp, [bp+arg_2] + adc bp, 5680h + and bp, 0FF7Fh + pushf + mov al, 0C0h ; 'À' + cli + out 7Ch, al + popf + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + mov al, 0Bh + out 68h, al + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add di, ax + mov es, word_D3A4 + assume es:nothing + mov ax, bp + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov dx, 10h + xor ch, ch + +loc_1382: ; CODE XREF: sub_1322+84j + mov al, ch + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, ch + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov bh, al + mov bl, 0 + shr ax, cl + shr bx, cl + xchg al, ah + stosw + mov es:[di], bl + add di, 4Eh ; 'N' + inc ch + dec dx + jnz short loc_1382 + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop di + pop bp + retf 8 +sub_1322 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13B6 proc far ; CODE XREF: sub_A8FA+4E2P + ; sub_A8FA+5E7P + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + push si + push di + push ds + mov es, word_D3A4 + mov cx, [bp+arg_A] + mov di, [bp+arg_8] + mov bx, [bp+arg_6] + lds si, [bp+arg_2] + mov dx, [bp+arg_0] + mov bp, bx + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov al, 0C0h ; 'À' + pushf + cli + out 7Ch, al + popf + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + mov al, 0Bh + out 68h, al + +loc_13FE: ; CODE XREF: sub_13B6+98j + lodsb + or al, al + jz short loc_1450 + mov ah, 0 + adc ax, 5680h + and ax, 0FF7Fh + mov bx, cx + and cx, 7 + shr bx, 3 + add di, bx + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov dx, 10h + xor ch, ch + +loc_1420: ; CODE XREF: sub_13B6+8Ej + mov al, ch + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, ch + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov bh, al + mov bl, 0 + shr ax, cl + shr bx, cl + xchg al, ah + stosw + mov es:[di], bl + add di, 4Eh ; 'N' + inc ch + dec dx + jnz short loc_1420 + sub di, 500h + xor ch, ch + add cx, bp + jmp short loc_13FE +; --------------------------------------------------------------------------- + +loc_1450: ; CODE XREF: sub_13B6+4Bj + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ch +sub_13B6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1460 proc far ; CODE XREF: sub_9B64+5FP + ; sub_9B64+2ABP ... + +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + xor cx, cx + les bx, [bp+arg_4] + mov ax, es:[bx+2] + test ax, ax + jz short loc_1481 + push ax + nop + push cs + call near ptr sub_2682 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_1481: ; CODE XREF: sub_1460+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_149B + push ax + nop + push cs + call near ptr sub_2682 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_149B: ; CODE XREF: sub_1460+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_14A8 + push ax + nop + push cs + call near ptr sub_2682 + +loc_14A8: ; CODE XREF: sub_1460+40j + pop bp + retf 8 +sub_1460 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_14B8 + +loc_14AC: ; CODE XREF: sub_14B8+11j sub_14B8+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_14B8 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14B8 proc far ; CODE XREF: sub_B4F5+20P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 14AC SIZE 0000000B BYTES + + push bp + mov bp, sp + push si + push di + cld + push [bp+arg_A] + push [bp+arg_8] + nop + push cs + call near ptr sub_CE4 + jb short loc_14AC + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_22F2 + jb short loc_14AC + mov ds, ax + mov ds:410Eh, bx + mov byte ptr ds:4112h, 0 + mov byte ptr ds:4113h, 0 + mov cx, 4000h + xor dx, dx + mov ds:4110h, dx + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + mov ax, ds + mov es, ax + assume es:dseg + mov ax, 1 + mov cx, 10h + mov di, 400Ch + nop + +loc_1502: ; CODE XREF: sub_14B8+54j sub_14B8+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_1502 + inc al + loop loc_1502 + mov ax, 0FFF3h + call sub_1A62 + cmp dl, 50h ; 'P' + jnz short loc_14AC + call sub_1A62 + cmp dl, 69h ; 'i' + jnz short loc_14AC + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_152D: ; CODE XREF: sub_14B8+7Cj + inc ax + call sub_1A62 + cmp dl, 1Ah + jnz short loc_152D + stosw + +loc_1537: ; CODE XREF: sub_14B8+84j + call sub_1A62 + or dl, dl + jnz short loc_1537 + call sub_1A62 + mov al, dl + stosb + mov ds:410Ch, al + call sub_1A62 + mov ah, dl + call sub_1A62 + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_155C + jmp loc_14AC +; --------------------------------------------------------------------------- + +loc_155C: ; CODE XREF: sub_14B8+9Fj + call sub_1A62 + cmp dl, 4 + jz short loc_1567 + jmp loc_14AC +; --------------------------------------------------------------------------- + +loc_1567: ; CODE XREF: sub_14B8+AAj + mov al, dl + stosb + call sub_1A62 + mov al, dl + call sub_1A62 + mov ah, dl + stosw + call sub_1A62 + mov al, dl + call sub_1A62 + mov ah, dl + stosw + call sub_1A62 + mov ah, dl + call sub_1A62 + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_D6E0, 0Ah + nop + push cs + call near ptr sub_24DA + pop ds + stosw + jb short loc_15B8 + push es + push di + mov es, ax + xor di, di + +loc_15AC: ; CODE XREF: sub_14B8+FBj + call sub_1A62 + mov al, dl + stosb + dec bx + jnz short loc_15AC + pop di + pop es + nop + +loc_15B8: ; CODE XREF: sub_14B8+ECj + call sub_1A62 + mov ah, dl + call sub_1A62 + mov al, dl + stosw + mov ds:4000h, ax + mov bx, ax + call sub_1A62 + mov ah, dl + call sub_1A62 + mov al, dl + stosw + mov ds:4002h, ax + add ax, 2 + mul bx + shr dx, 1 + rcr ax, 1 + push ds + push dx + push ax + shl dx, 0Ch + mov ds:4008h, ax + mov ds:400Ah, dx + push seg dseg + pop ds + mov word_D6E0, 0Ah + nop + push cs + call near ptr sub_24DA + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_1606 + jmp loc_14AC +; --------------------------------------------------------------------------- + +loc_1606: ; CODE XREF: sub_14B8+149j + mov ax, bx + mov word ptr ds:4004h, 0 + mov ds:4006h, ax + add ds:400Ah, ax + mov cx, ds:4000h + push es + les bx, [bp+arg_0] + mov es:[bx], cx + mov es:[bx+2], ax + pop es + shl byte ptr ds:410Ch, 1 + jb short loc_1638 + mov bl, 30h ; '0' + nop + +loc_162E: ; CODE XREF: sub_14B8+17Ej + call sub_1A62 + mov al, dl + stosb + dec bl + jnz short loc_162E + +loc_1638: ; CODE XREF: sub_14B8+171j + xor bl, bl + call sub_1974 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1974 + or al, dl + les di, ds:4004h + mov cx, ds:4000h + rep stosb + mov cl, 0FFh + nop + +loc_1656: ; CODE XREF: sub_14B8+490j + ; sub_14B8+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_1682 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1676 + call sub_1A8E + +loc_1676: ; CODE XREF: sub_14B8+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1682: ; CODE XREF: sub_14B8+1ADj + xchg cl, ch + shl dx, cl + sub ch, cl + mov ds:4112h, dl + mov ds:4113h, ch + mov dl, dh + mov dh, 0 + pop cx + mov bl, dl + cmp dl, 3 + jnz short loc_16D0 + push cx + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_16C2 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_16B8 + call sub_1A8E + +loc_16B8: ; CODE XREF: sub_14B8+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_16C2: ; CODE XREF: sub_14B8+1F1j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + adc bl, 0 + pop cx + +loc_16D0: ; CODE XREF: sub_14B8+1E2j + cmp bl, cl + jnz short loc_1744 + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_16EA + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov bl, es:[di-1] + pop es + assume es:nothing + +loc_16EA: ; CODE XREF: sub_14B8+223j + and bl, 0Fh + nop + +loc_16EE: ; CODE XREF: sub_14B8+284j + call sub_1974 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1974 + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_170C + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_170C: ; CODE XREF: sub_14B8+24Aj + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_1732 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1728 + call sub_1A8E + nop + +loc_1728: ; CODE XREF: sub_14B8+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1732: ; CODE XREF: sub_14B8+260j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + jb short loc_16EE + mov cl, 0FFh + jmp loc_1942 +; --------------------------------------------------------------------------- + nop + +loc_1744: ; CODE XREF: sub_14B8+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, ds:4112h + mov cl, ds:4113h + nop + +loc_1754: ; CODE XREF: sub_14B8+2BCj + inc bh + dec cl + jns short loc_1772 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1768 + call sub_1A8E + nop + +loc_1768: ; CODE XREF: sub_14B8+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1772: ; CODE XREF: sub_14B8+2A0j + shl dl, 1 + jb short loc_1754 + mov ds:4112h, dl + mov ds:4113h, cl + mov dh, 0 + dec bh + jnz short loc_1787 + jmp loc_181E +; --------------------------------------------------------------------------- + +loc_1787: ; CODE XREF: sub_14B8+2CAj + cmp bh, 8 + jl short loc_17CC + mov cx, bp + +loc_178E: ; CODE XREF: sub_14B8+30Fj + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_179C + call sub_1A8E + +loc_179C: ; CODE XREF: sub_14B8+2DFj + mov dh, 0 + mov dl, [si] + inc si + mov ds:4110h, si + mov cl, ds:4113h + sub cl, 8 + neg cl + shl dx, cl + xchg dl, ds:4112h + or dl, dh + mov dh, 0 + pop cx + mov ch, cl + mov cl, ah + mov ah, al + mov al, dl + sub bh, 8 + cmp bh, 8 + jg short loc_178E + mov bp, cx + nop + +loc_17CC: ; CODE XREF: sub_14B8+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_17F8 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_17EC + call sub_1A8E + +loc_17EC: ; CODE XREF: sub_14B8+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_17F8: ; CODE XREF: sub_14B8+323j + xchg cl, ch + shl dx, cl + sub ch, cl + mov ds:4112h, dl + mov ds:4113h, ch + mov dl, dh + mov dh, 0 + pop cx + mov cl, ch + mov dh, ah + shl ax, cl + or al, dl + mov dl, 0 + rol dx, cl + mov dh, 0 + shl bp, cl + or bp, dx + nop + +loc_181E: ; CODE XREF: sub_14B8+2CCj + mov cx, ax + test bl, bl + jnz short loc_1827 + jmp loc_18C4 +; --------------------------------------------------------------------------- + +loc_1827: ; CODE XREF: sub_14B8+36Aj + mov bh, 0 + mov ax, ds:4000h + cmp bl, 1 + jz short loc_1846 + cmp bl, 2 + jnz short loc_183C + shl ax, 1 + adc bh, bh + jmp short loc_1846 +; --------------------------------------------------------------------------- + +loc_183C: ; CODE XREF: sub_14B8+37Cj + dec ax + cmp bl, 3 + jz short loc_1846 + add ax, 2 + nop + +loc_1846: ; CODE XREF: sub_14B8+377j + ; sub_14B8+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_185A + sub dx, 1000h + nop + +loc_185A: ; CODE XREF: sub_14B8+39Bj + mov ds, dx + or bh, bh + jnz short loc_189C + mov ax, cx + +loc_1862: ; CODE XREF: sub_14B8+3DEj + mov cx, si + cmp si, di + ja short loc_186A + mov cx, di + +loc_186A: ; CODE XREF: sub_14B8+3AEj + neg cx + test ax, ax + jz short loc_1878 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1878: ; CODE XREF: sub_14B8+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1888 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1888: ; CODE XREF: sub_14B8+3C6j + or si, si + jnz short loc_1894 + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1894: ; CODE XREF: sub_14B8+3D2j + test ax, ax + jnz short loc_1862 + pop ds + assume ds:dseg + jmp loc_1940 +; --------------------------------------------------------------------------- + +loc_189C: ; CODE XREF: sub_14B8+3A6j + ; sub_14B8:loc_18BEj + lodsb + mov ah, al + or si, si + jnz short loc_18AC + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_18AC: ; CODE XREF: sub_14B8+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_18BE + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_18BE: ; CODE XREF: sub_14B8+3FCj + loop loc_189C + pop ds + assume ds:dseg + jmp short loc_1940 +; --------------------------------------------------------------------------- + nop + +loc_18C4: ; CODE XREF: sub_14B8+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_18DA + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-1] + pop es + assume es:nothing + +loc_18DA: ; CODE XREF: sub_14B8+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_18FC + nop + +loc_18E4: ; CODE XREF: sub_14B8:loc_18F2j + ; sub_14B8+43Fj + stosb + or di, di + jnz short loc_18F2 + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_18F2: ; CODE XREF: sub_14B8+42Fj + loop loc_18E4 + sub bp, 1 + jnb short loc_18E4 + jmp short loc_1940 +; --------------------------------------------------------------------------- + nop + +loc_18FC: ; CODE XREF: sub_14B8+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_1914 + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_1914: ; CODE XREF: sub_14B8+44Dj + ; sub_14B8:loc_1938j ... + mov al, dl + stosb + or di, di + jnz short loc_1922 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1922: ; CODE XREF: sub_14B8+461j + loop loc_192A + sub bp, 1 + jb short loc_1940 + nop + +loc_192A: ; CODE XREF: sub_14B8:loc_1922j + mov al, bh + stosb + or di, di + jnz short loc_1938 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1938: ; CODE XREF: sub_14B8+477j + loop loc_1914 + sub bp, 1 + jnb short loc_1914 + nop + +loc_1940: ; CODE XREF: sub_14B8+3E1j + ; sub_14B8+409j ... + mov cl, bl + +loc_1942: ; CODE XREF: sub_14B8+288j + cmp ds:4008h, di + jbe short loc_194B + jmp loc_1656 +; --------------------------------------------------------------------------- + +loc_194B: ; CODE XREF: sub_14B8+48Ej + mov ax, es + cmp ds:400Ah, ax + jbe short loc_1956 + jmp loc_1656 +; --------------------------------------------------------------------------- + +loc_1956: ; CODE XREF: sub_14B8+499j + mov ah, 3Eh ; '>' + mov bx, ds:410Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + push ds + mov bx, seg dseg + mov ds, bx + nop + push cs + call near ptr sub_22DC + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_14B8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1974 proc near ; CODE XREF: sub_14B8+182p + ; sub_14B8+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, ds:4112h + mov cl, ds:4113h + dec cl + jns short loc_199C + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1992 + call sub_1A8E + +loc_1992: ; CODE XREF: sub_1974+19j + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_199C: ; CODE XREF: sub_1974+Fj + shl dl, 1 + jb short loc_19EA + add al, 2 + dec cl + jns short loc_19BE + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19B4 + call sub_1A8E + nop + +loc_19B4: ; CODE XREF: sub_1974+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_19BE: ; CODE XREF: sub_1974+30j + shl dl, 1 + jnb short loc_19EA + add al, 2 + inc ah + dec cl + jns short loc_19E2 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19D8 + call sub_1A8E + nop + +loc_19D8: ; CODE XREF: sub_1974+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_19E2: ; CODE XREF: sub_1974+54j + shl dl, 1 + jnb short loc_19EA + add al, 4 + inc ah + +loc_19EA: ; CODE XREF: sub_1974+2Aj sub_1974+4Cj ... + mov ds:4112h, dl + mov ds:4113h, cl + mov ch, ah + inc ch + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_1A20 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1A14 + call sub_1A8E + +loc_1A14: ; CODE XREF: sub_1974+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1A20: ; CODE XREF: sub_1974+8Fj + xchg cl, ch + shl dx, cl + sub ch, cl + mov ds:4112h, dl + mov ds:4113h, ch + mov dl, dh + mov dh, 0 + pop cx + add al, dl + xor al, 0Fh + mov ah, 0 + mov bh, 0 + shl bx, 4 + add bx, 400Ch + add bx, ax + mov cx, 0Fh + mov dh, 0 + mov dl, [bx] + sub cx, ax + jnz short loc_1A54 + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_1A54: ; CODE XREF: sub_1974+D9j sub_1974+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_1A54 + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1974 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A62 proc near ; CODE XREF: sub_14B8+5Dp sub_14B8+65p ... + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1A70 + call sub_1A8E + +loc_1A70: ; CODE XREF: sub_1A62+9j + mov dh, 0 + mov dl, [si] + inc si + mov ds:4110h, si + mov cl, ds:4113h + sub cl, 8 + neg cl + shl dx, cl + xchg dl, ds:4112h + or dl, dh + mov dh, 0 + pop cx + retn +sub_1A62 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8E proc near ; CODE XREF: sub_14B8+1BBp + ; sub_14B8+1FDp ... + pusha + mov ah, 3Fh ; '?' + mov bx, ds:410Eh + mov cx, 4000h + xor dx, dx + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + popa + xor si, si + retn +sub_1A8E endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1AA6 + +loc_1AA0: ; CODE XREF: sub_1AA6+10j sub_1AA6+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1AA6 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AA6 proc far ; CODE XREF: sub_B7B3+37P + +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 + +; FUNCTION CHUNK AT 1AA0 SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_D368 + cmp ax, word_D36A + ja short loc_1AA0 + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_1AA0 + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1AD6 + add cx, di + jle short loc_1AA0 + shl di, 2 + add si, di + xor di, di + +loc_1AD6: ; CODE XREF: sub_1AA6+23j + cmp di, 50h ; 'P' + jge short loc_1AA0 + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1AE5 + mov cx, 50h ; 'P' + +loc_1AE5: ; CODE XREF: sub_1AA6+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_D36E + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1AF8: ; CODE XREF: sub_1AA6+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1EDCh] + mov dx, cs:[bx+1EDEh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1EDCh] + or dx, cs:[bx+1EDEh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1EDCh] + or dx, cs:[bx+1EDEh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1EDCh] + or dx, cs:[bx+1EDEh] + inc si + mov es:[di], al + mov bx, es + mov es:[di-8000h], ah + add bh, 10h + mov es, bx + assume es:nothing + mov es:[di], dl + add bh, 28h ; '(' + mov es, bx + assume es:nothing + mov es:[di], dh + sub bh, 38h ; '8' + mov es, bx + assume es:nothing + inc di + dec bp + jnz short loc_1AF8 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1AA6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1B74 proc far ; CODE XREF: sub_B45F+9P sub_B45F+15P ... + mov bx, sp + mov ax, ss:[bx+4] + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov al, ah + mov ah, 0 + retf 2 +sub_1B74 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1B86 proc far ; CODE XREF: sub_A874+18P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + push si + push di + mov bx, [bp+arg_0] + shl bx, 1 + mov cx, [bp+arg_4] + mov bp, [bp+arg_2] + mov ax, bp + shl ax, 2 + add bp, ax + shl bp, 4 + shr cx, 3 + add bp, cx + mov dx, [bx+2512h] + mov ds, word ptr [bx+2112h] + mov al, dh + mul dl + mov si, ax + mov bx, 50h ; 'P' + sub bl, dh + mov al, dh + xor ah, ah + mov cx, 0A800h + call sub_1BDC + mov cx, 0B000h + call sub_1BDC + mov cx, 0B800h + call sub_1BDC + mov cx, 0E000h + call sub_1BDC + pop di + pop si + pop ds + pop bp + retf 6 +sub_1B86 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1BDC proc near ; CODE XREF: sub_1B86+3Ap sub_1B86+40p ... + mov es, cx + assume es:nothing + mov dh, dl + mov di, bp + test di, 1 + jnz short loc_1C08 + shr ax, 1 + jb short loc_1BFA + +loc_1BEC: ; CODE XREF: sub_1BDC+18j + mov cx, ax + rep movsw + add di, bx + dec dh + jnz short loc_1BEC + shl ax, 1 + retn +; --------------------------------------------------------------------------- + nop + +loc_1BFA: ; CODE XREF: sub_1BDC+Ej sub_1BDC+27j + mov cx, ax + rep movsw + movsb + lea di, [bx+di] + dec dh + jnz short loc_1BFA + rcl ax, 1 + retn +; --------------------------------------------------------------------------- + +loc_1C08: ; CODE XREF: sub_1BDC+Aj + shr ax, 1 + jb short loc_1C1E + dec ax + +loc_1C0D: ; CODE XREF: sub_1BDC+3Bj + mov cx, ax + movsb + rep movsw + movsb + add di, bx + dec dh + jnz short loc_1C0D + inc ax + shl ax, 1 + retn +; --------------------------------------------------------------------------- + nop + +loc_1C1E: ; CODE XREF: sub_1BDC+2Ej sub_1BDC+4Bj + mov cx, ax + movsb + rep movsw + lea di, [bx+di] + dec dh + jnz short loc_1C1E + rcl ax, 1 + retn +sub_1BDC endp + +; --------------------------------------------------------------------------- + +loc_1C2C: ; CODE XREF: sub_536:loc_54Bp + ; sub_536+3Bp ... + cld + push si + mov ax, word_D3B0 + cwd + not dx + and ax, dx + sub ax, 0C8h ; 'È' + sbb dx, dx + and ax, dx + add ax, 0C8h ; 'È' + mov dh, al + xor bx, bx + mov ch, bl + cmp dh, 64h ; 'd' + jbe short loc_1C52 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1C52: ; CODE XREF: seg000:1C49j + mov si, 20D0h + mov dl, 64h ; 'd' + cmp word_D3E2, bx + jnz short loc_1C96 + +loc_1C5D: ; CODE XREF: seg000:1C91j + mov al, bl + out 0A8h, al ; Interrupt Controller #2, 8259A + lodsw + shr ax, 4 + mov cl, ah + and al, 0Fh + xor al, ch + mul dh + div dl + xor al, ch + out 0ACh, al ; Interrupt Controller #2, 8259A + mov al, cl + xor al, ch + mul dh + div dl + xor al, ch + out 0AAh, al ; Interrupt Controller #2, 8259A + lodsb + shr al, 4 + xor al, ch + mul dh + div dl + xor al, ch + out 0AEh, al ; Interrupt Controller #2, 8259A + inc bx + cmp bx, 10h + jl short loc_1C5D + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1C96: ; CODE XREF: seg000:1C5Bj + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1CAB + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1CAB: ; CODE XREF: seg000:1CA2j + shr al, 1 + cmc + sbb al, al + mov cs:byte_1D14, al + mov dx, bx + push di + mov di, 0 + +loc_1CBA: ; CODE XREF: seg000:1D31j + mov ax, di + out 0A8h, al ; Interrupt Controller #2, 8259A + lodsw + mov bx, ax + shr bx, 4 + and bl, ch + lodsb + and al, ch + xor al, ch + mul dh + div dl + xor al, ch + xchg al, bh + xor al, ch + mul dh + div dl + xor al, ch + xchg al, bl + xor al, ch + mul dh + div dl + xor al, ch + xchg al, bl + mov ah, bh + cmp bh, al + ja short loc_1CEF + mov bh, al + +loc_1CEF: ; CODE XREF: seg000:1CEBj + cmp bh, bl + ja short loc_1CF5 + mov bh, bl + +loc_1CF5: ; CODE XREF: seg000:1CF1j + shl al, 1 + add al, bl + shl al, 1 + add al, ah + add al, bh + mov cl, 3 + mul cl + mov cl, 14h + div cl + shr al, 1 + adc al, 0 + sub al, 2 + cmc + sbb ah, ah + and ah, al +; --------------------------------------------------------------------------- + db 80h, 0F4h +byte_1D14 db 0 ; DATA XREF: seg000:1CB0w +; --------------------------------------------------------------------------- + shr ah, 1 + sbb al, al + and al, 0Fh + out 0AEh, al ; Interrupt Controller #2, 8259A + shr ah, 1 + sbb al, al + and al, 0Fh + out 0ACh, al ; Interrupt Controller #2, 8259A + shr ah, 1 + sbb al, al + and al, 0Fh + out 0AAh, al ; Interrupt Controller #2, 8259A + inc di + cmp di, 10h + jl short loc_1CBA + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1D36 proc far ; CODE XREF: sub_2972+2Cp seg000:2A4Bp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + push word ptr es:0 + push cs + call near ptr sub_472 + push [bp+arg_0] + push cs + call near ptr sub_2682 + pop bp + retf 2 +sub_1D36 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + call word ptr es:2 + pop bp + retf 2 +; --------------------------------------------------------------------------- + nop + cmp word ptr es:1Ah, 0 + jz short loc_1D7E + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1D7E: ; CODE XREF: seg000:1D66j + call word ptr es:4 + test ah, ah + jnz short locret_1DAD + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1DAD + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1DAC + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1DAC: ; CODE XREF: seg000:1D9Aj + pop ax + +locret_1DAD: ; CODE XREF: seg000:1D85j seg000:1D90j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1DAE proc near ; CODE XREF: seg000:1DF2p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1DCB + ja short loc_1DC7 + cmp ax, es:6 + jb short loc_1DCB + +loc_1DC7: ; CODE XREF: sub_1DAE+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1DCB: ; CODE XREF: sub_1DAE+Ej sub_1DAE+17j + add ax, 1 + adc dx, 0 + mov es:0Ah, ax + mov es:0Ch, dx + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + push es + push word ptr es:0 + push cs + call near ptr sub_506 + pop es + retn +sub_1DAE endp + +; --------------------------------------------------------------------------- + call sub_1DAE + or ah, ah + jnz short locret_1DFE + xor al, es:1Eh + +locret_1DFE: ; CODE XREF: seg000:1DF7j + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E00 proc far ; CODE XREF: seg000:2A6Bp + +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 + cld + mov si, [bp+arg_2] + mov di, [bp+arg_4] + test si, si + jz short loc_1E23 + +loc_1E10: ; CODE XREF: sub_1E00+21j + mov es, [bp+arg_0] + call word ptr es:2 + inc ah + jz short loc_1E23 + mov es, [bp+arg_6] + stosb + dec si + jnz short loc_1E10 + +loc_1E23: ; CODE XREF: sub_1E00+Ej sub_1E00+1Aj + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_1E00 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E2E proc far ; CODE XREF: seg000:2AA0p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_67E + pop bp + retf 2 +sub_1E2E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E6A proc far ; CODE XREF: seg000:2AACp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov es, [bp+arg_4] + inc [bp+arg_2] + mov di, [bp+arg_0] + or di, di + jz short loc_1E87 + +loc_1E7B: ; CODE XREF: sub_1E6A+1Bj sub_1E6A+20j + call word ptr es:2 + test ah, ah + jnz short loc_1E8C + dec di + jnz short loc_1E7B + +loc_1E87: ; CODE XREF: sub_1E6A+Fj + dec [bp+arg_2] + jnz short loc_1E7B + +loc_1E8C: ; CODE XREF: sub_1E6A+18j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 +sub_1E6A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1E9A proc far ; CODE XREF: sub_A09D+17EP + ; sub_A8FA+12EP ... + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_CE4 + jb short locret_1ED9 + mov bx, ax + mov dx, 20D0h + mov cx, 30h ; '0' + mov ah, 3Fh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + sbb cx, cx + push bx + mov bx, 2Fh ; '/' + +loc_1EBD: ; CODE XREF: sub_1E9A+2Fj + mov al, [bx+20D0h] + shl al, 4 + or [bx+20D0h], al + dec bx + jns short loc_1EBD + pop bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov ax, 0 + jcxz short locret_1ED9 + mov ax, 0FFF3h + stc + +locret_1ED9: ; CODE XREF: sub_1E9A+Fj sub_1E9A+39j + retf 4 +sub_1E9A endp + +; --------------------------------------------------------------------------- + dd 0 + db 1, 4 dup(0), 1, 2 dup(0), 2 dup(1), 4 dup(0), 1, 0 + db 1, 0, 1, 2 dup(0), 2 dup(1), 0, 3 dup(1), 4 dup(0) + db 2 dup(1), 2 dup(0), 1, 0, 1, 0, 3 dup(1), 0, 1, 2 dup(0) + db 3 dup(1), 0, 2 dup(1), 0, 7 dup(1), 2, 3 dup(0), 3 + db 3 dup(0), 2, 1, 2 dup(0), 3, 1, 2 dup(0), 2, 0, 1, 0 + db 3, 0, 1, 0, 2, 2 dup(1), 0, 3, 2 dup(1), 0, 2, 2 dup(0) + db 1, 3, 2 dup(0), 1, 2, 1, 0, 1, 3, 1, 0, 1, 2, 0, 2 dup(1) + db 3, 0, 2 dup(1), 2, 3 dup(1), 3, 3 dup(1), 0, 2, 2 dup(0) + db 1, 2, 3 dup(0), 3, 2 dup(0), 1, 3, 3 dup(0), 2, 1, 0 + db 1, 2, 1, 2 dup(0), 3, 1, 0, 1, 3, 1, 2 dup(0), 2, 0 + db 2 dup(1), 2, 0, 1, 0, 3, 0, 2 dup(1), 3, 0, 1, 0, 2 + db 3 dup(1), 2, 2 dup(1), 0, 3, 3 dup(1), 3, 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 2 dup(0), 2, 3, 2 dup(0) + db 2 dup(3), 2 dup(0), 2 dup(2), 1, 0, 3, 2, 1, 0, 2, 3 + db 1, 0, 2 dup(3), 1, 0, 2 dup(2), 0, 1, 3, 2, 0, 1, 2 + db 3, 0, 1, 2 dup(3), 0, 1, 2 dup(2), 2 dup(1), 3, 2, 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(3), 2 dup(1), 2 dup(0), 2, 0 + db 1, 0, 2, 2 dup(0), 1, 2, 0, 2 dup(1), 2, 3 dup(0), 3 + db 0, 1, 0, 3, 2 dup(0), 1, 3, 0, 2 dup(1), 3, 3 dup(0) + db 2, 2 dup(1), 0, 2, 1, 0, 1, 2, 3 dup(1), 2, 1, 2 dup(0) + db 3, 2 dup(1), 0, 3, 1, 0, 1, 3, 3 dup(1), 3, 1, 2, 0 + db 2, 0, 3, 0, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 2, 0, 3, 0 + db 3, 0, 3, 0, 2, 1, 3, 0, 3, 1, 3, 0, 2, 0, 2, 1, 3, 0 + db 2, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 0, 3, 1, 3, 0, 3, 1 + db 2, 1, 3, 1, 3, 1, 3, 1, 0, 2 dup(2), 0, 1, 2 dup(2) + db 2 dup(0), 3, 2, 0, 1, 3, 2, 2 dup(0), 2, 3, 0, 1, 2 + db 3, 2 dup(0), 2 dup(3), 0, 1, 2 dup(3), 2 dup(0), 2 dup(2) + db 2 dup(1), 2 dup(2), 1, 0, 3, 2, 2 dup(1), 3, 2, 1, 0 + db 2, 3, 2 dup(1), 2, 3, 1, 0, 2 dup(3), 2 dup(1), 2 dup(3) + db 1, 3 dup(2), 0, 3, 2 dup(2), 0, 2, 3, 2, 0, 2 dup(3) + db 2, 0, 2 dup(2), 3, 0, 3, 2, 3, 0, 2, 2 dup(3), 0, 3 dup(3) + db 0, 3 dup(2), 1, 3, 2 dup(2), 1, 2, 3, 2, 1, 2 dup(3) + db 2, 1, 2 dup(2), 3, 1, 3, 2, 3, 1, 2, 2 dup(3), 1, 3 dup(3) + db 1, 3 dup(0), 2, 1, 2 dup(0), 2, 0, 1, 0, 2, 2 dup(1) + db 0, 2, 2 dup(0), 1, 2, 1, 0, 1, 2, 0, 2 dup(1), 2, 3 dup(1) + db 2, 3 dup(0), 3, 1, 2 dup(0), 3, 0, 1, 0, 3, 2 dup(1) + db 0, 3, 2 dup(0), 1, 3, 1, 0, 1, 3, 0, 2 dup(1), 3, 3 dup(1) + db 3, 2, 2 dup(0), 2, 3, 2 dup(0), 2 dup(2), 1, 0, 2, 3 + db 1, 0, 2 dup(2), 0, 1, 2, 3, 0, 1, 2 dup(2), 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(2), 2 dup(0), 2 dup(3), 2 dup(0) + db 3, 2, 1, 0, 2 dup(3), 1, 0, 3, 2, 0, 1, 2 dup(3), 0 + db 1, 3, 2, 2 dup(1), 2 dup(3), 2 dup(1), 3, 0, 2, 0, 2 + db 1, 2, 0, 2, 0, 3, 0, 2, 1, 3, 0, 2, 0, 2, 1, 2, 1, 2 + db 1, 2, 0, 3, 1, 2, 1, 3, 1, 2, 0 + db 2, 0, 3, 1, 2, 0, 3, 0, 3, 0, 3, 1, 3, 0, 3, 0, 2, 1 + db 3, 1, 2, 1, 3, 0, 3, 1, 3, 1, 3, 1, 3, 2 dup(2), 0 + db 2, 3, 2, 0, 2 dup(2), 3, 0, 2, 2 dup(3), 0, 3 dup(2) + db 1, 2, 3, 2, 1, 2 dup(2), 3, 1, 2, 2 dup(3), 1, 3 dup(2) + db 0, 2 dup(3), 2, 0, 3, 2, 3, 0, 3 dup(3), 0, 3, 2 dup(2) + db 1, 2 dup(3), 2, 1, 3, 2, 3, 1, 3 dup(3), 1, 3, 2 dup(0) + db 2 dup(2), 1, 0, 2 dup(2), 0, 1, 2 dup(2), 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 1, 0, 3, 2, 0, 1, 3, 2, 2 dup(1) + db 3, 2, 2 dup(0), 2, 3, 1, 0, 2, 3, 0, 1, 2, 3, 2 dup(1) + db 2, 3, 2 dup(0), 2 dup(3), 1, 0, 2 dup(3), 0, 1, 2 dup(3) + db 2 dup(1), 2 dup(3), 2, 0, 2 dup(2), 3, 0, 3 dup(2) + db 1, 2 dup(2), 3, 1, 3 dup(2), 0, 3, 2, 3, 0, 3, 2 dup(2) + db 1, 3, 2, 3, 1, 3, 2 dup(2), 0, 2, 2 dup(3), 0, 2, 3 + db 2, 1, 2, 2 dup(3), 1, 2, 3, 2, 0, 3 dup(3), 0, 2 dup(3) + db 2, 1, 3 dup(3), 1, 2 dup(3), 0, 3 dup(2), 1, 3 dup(2) + db 0, 3, 2 dup(2), 1, 3, 2 dup(2), 0, 2, 3, 2, 1, 2, 3 + db 2, 0, 2 dup(3), 2, 1, 2 dup(3), 2, 0, 2 dup(2), 3, 1 + db 2 dup(2), 3, 0, 3, 2, 3, 1, 3, 2, 3, 0, 2, 2 dup(3) + db 1, 2, 2 dup(3), 0, 3 dup(3), 1, 3 dup(3), 4 dup(2) + db 3, 4 dup(2), 3, 2 dup(2), 2 dup(3), 4 dup(2), 3, 2 + db 3, 2, 3, 2 dup(2), 2 dup(3), 2, 3 dup(3), 4 dup(2) + db 2 dup(3), 2 dup(2), 3, 2, 3, 2, 3 dup(3), 2, 3, 2 dup(2) + db 3 dup(3), 2, 2 dup(3), 2, 7 dup(3) + +; =============== S U B R O U T I N E ======================================= + + +sub_22DC proc far ; CODE XREF: sub_286-Dp sub_286+102p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_F090, bx + pop bx + retf 2 +sub_22DC endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_22F2 + +loc_22EC: ; CODE XREF: sub_22F2+5j + push cs + call near ptr sub_2556 + jb short loc_2321 +; END OF FUNCTION CHUNK FOR sub_22F2 + +; =============== S U B R O U T I N E ======================================= + + +sub_22F2 proc far ; CODE XREF: sub_286+50p sub_286+58p ... + +; FUNCTION CHUNK AT 22EC SIZE 00000006 BYTES + + cmp word_D6DC, 0 + jz short loc_22EC + push bx + mov bx, sp + mov bx, ss:[bx+6] + add bx, 0Fh + rcr bx, 1 + shr bx, 1 + shr bx, 1 + shr bx, 1 + mov ax, word_F090 + add bx, ax + jb short loc_2320 + cmp word_F08C, bx + jb short loc_2320 + mov word_F090, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2320: ; CODE XREF: sub_22F2+1Ej sub_22F2+24j + pop bx + +loc_2321: ; CODE XREF: sub_22F2-2j + mov ax, 0FFF8h + retf 2 +sub_22F2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2328 proc far ; CODE XREF: sub_B616+32P + mov al, 1Bh + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + mov al, 5Bh ; '[' + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + mov al, 32h ; '2' + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + mov al, 4Ah ; 'J' + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + retf +sub_2328 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_233A dd 0 ; DATA XREF: sub_233E+5Ew seg000:23A9r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_233E proc far ; CODE XREF: sub_B756+19P + xor ax, ax + push ax + push ax + push cs + call near ptr sub_12CC + and ax, 0Ch + cmp ax, 0Ch + mov word_D6D8, 33FFh + jz short loc_235A + mov word_D6D8, 0 + +loc_235A: ; CODE XREF: sub_233E+14j + xor ax, ax + mov word_F080, ax + mov word_F082, ax + cmp byte_D6DA, al + jnz short locret_23A7 + mov al, 0Ah + push ax + push cs + mov ax, 23B2h + push ax + nop + push cs + call near ptr sub_772 + mov word_F084, ax + mov word_F086, dx + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + mov ah, al + and al, 0FBh + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + popf + or ah, 0FBh + mov byte_D6DA, ah + mov ax, 18h + push ax + push cs + mov ax, 23A8h + push ax + nop + push cs + call near ptr sub_772 + mov word ptr cs:dword_233A, ax + mov word ptr cs:dword_233A+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_23A7: ; CODE XREF: sub_233E+28j + retf +sub_233E endp + +; --------------------------------------------------------------------------- + pushf + call cs:dword_233A + out 64h, al ; AT Keyboard controller 8042. + iret +; --------------------------------------------------------------------------- + nop + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_D6D8 + add word_F088, ax + jb short loc_23E3 + inc word_F080 + inc word_F082 + cmp word_D6D6, 0 + jz short loc_23E3 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_D6D4 + pop es + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_23E3: ; CODE XREF: seg000:23C0j seg000:23CFj + pop ds + mov al, 20h ; ' ' + out 0, al + out 64h, al ; AT Keyboard controller 8042. + pop ax + iret + +; =============== S U B R O U T I N E ======================================= + + +sub_23EC proc far ; CODE XREF: sub_B616+28P + cmp byte_D6DA, 0 + jz short locret_2432 + mov ax, 18h + push ax + push word ptr cs:dword_233A+2 + push word ptr cs:dword_233A + nop + push cs + call near ptr sub_772 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + or al, 4 + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + popf + mov ax, 0Ah + push ax + push word_F086 + push word_F084 + nop + push cs + call near ptr sub_772 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_D6DA + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + popf + out 64h, al ; AT Keyboard controller 8042. + xor al, al + mov byte_D6DA, al + +locret_2432: ; CODE XREF: sub_23EC+5j + retf +sub_23EC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2434 proc far ; CODE XREF: sub_536+10p sub_536+21p ... + cmp byte_D6DA, 0 + jnz short loc_2450 + +loc_243B: ; CODE XREF: sub_2434+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_243B + +loc_2445: ; CODE XREF: sub_2434+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2445 + retf +; --------------------------------------------------------------------------- + +loc_2450: ; CODE XREF: sub_2434+5j + mov ax, word_F080 + +loc_2453: ; CODE XREF: sub_2434+23j + cmp ax, word_F080 + jz short loc_2453 + retf +sub_2434 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_245A proc far ; CODE XREF: sub_9AD4+35P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D3B0, 0C8h ; 'È' + push cs + call near ptr sub_2434 + +loc_246C: ; CODE XREF: sub_245A+2Ej + push cs + call loc_1C2C + mov di, si + cmp di, 0 + jle short loc_247E + +loc_2477: ; CODE XREF: sub_245A+22j + push cs + call near ptr sub_2434 + dec di + jnz short loc_2477 + +loc_247E: ; CODE XREF: sub_245A+1Bj + sub word_D3B0, 6 + cmp word_D3B0, 64h ; 'd' + jg short loc_246C + mov word_D3B0, 64h ; 'd' + push cs + call loc_1C2C + pop di + pop si + retf 2 +sub_245A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_249A proc far ; CODE XREF: sub_9AD4+14P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D3B0, 64h ; 'd' + push cs + call near ptr sub_2434 + +loc_24AC: ; CODE XREF: sub_249A+2Fj + push cs + call loc_1C2C + mov di, si + cmp di, 0 + jle short loc_24BE + +loc_24B7: ; CODE XREF: sub_249A+22j + push cs + call near ptr sub_2434 + dec di + jnz short loc_24B7 + +loc_24BE: ; CODE XREF: sub_249A+1Bj + add word_D3B0, 6 + cmp word_D3B0, 0C8h ; 'È' + jl short loc_24AC + mov word_D3B0, 0C8h ; 'È' + push cs + call loc_1C2C + pop di + pop si + retf 2 +sub_249A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24DA proc far ; CODE XREF: sub_14B8+E7p + ; sub_14B8+140p + push bx + mov bx, sp + mov ax, ss:[bx+8] + mov bx, ss:[bx+6] + add bx, 0Fh + adc ax, 0 + shr ax, 1 + rcr bx, 1 + shr ax, 1 + rcr bx, 1 + shr ax, 1 + rcr bx, 1 + shr ax, 1 + jnz short loc_2506 + rcr bx, 1 + push bx + push cs + call near ptr sub_2592 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_2506: ; CODE XREF: sub_24DA+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_24DA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_250E proc far ; CODE XREF: sub_B756+6P + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_2529 + push ax + push bx + push cs + call near ptr sub_2530 + xor ax, ax + mov word_D6DE, 1 + +loc_2529: ; CODE XREF: sub_250E+Bj + neg ax + pop bx + retf 2 +sub_250E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2530 proc far ; CODE XREF: sub_250E+10p sub_2556+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_D6DC, ax + mov word_F090, ax + add ax, [bp+arg_0] + mov word_F08A, ax + mov word_F08C, ax + mov word_F08E, 0 + mov word_D6DE, 0 + clc + pop bp + retf 4 +sub_2530 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2556 proc far ; CODE XREF: sub_22F2-5p sub_2592+Fp + push bx + mov bx, 0FFFFh + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + mov ax, word_D6E2 + cmp bx, ax + jbe short loc_2567 + sub bx, ax + +loc_2567: ; CODE XREF: sub_2556+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_257B + push ax + push ax + push bx + push cs + call near ptr sub_2530 + mov word_D6DE, 1 + pop ax + +loc_257B: ; CODE XREF: sub_2556+15j + pop bx + retf +sub_2556 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_257E proc far ; CODE XREF: sub_5B8+11p sub_2762+21p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + add bx, 0Fh + rcr bx, 1 + shr bx, 1 + shr bx, 1 + shr bx, 1 + jmp short loc_2599 +sub_257E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2592 proc far ; CODE XREF: sub_FA2+Ep sub_24DA+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_2599: ; CODE XREF: sub_257E+12j + cmp word_D6DC, 0 + jnz short loc_25A4 + push cs + call near ptr sub_2556 + +loc_25A4: ; CODE XREF: sub_2592+Cj + push cx + push es + test bx, bx + jz short loc_2605 + mov ax, word_F08A + sub ax, word_F090 + cmp bx, ax + jnb short loc_2605 + inc bx + mov ax, word_F08E + test ax, ax + jz short loc_25E1 + mov cx, word_F08A + +loc_25C1: ; CODE XREF: sub_2592+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_25DD + mov cx, es + add cx, bx + jb short loc_25D9 + cmp cx, ax + jbe short loc_2612 + +loc_25D9: ; CODE XREF: sub_2592+41j + mov cx, word_F08A + +loc_25DD: ; CODE XREF: sub_2592+3Bj + cmp ax, cx + jnz short loc_25C1 + +loc_25E1: ; CODE XREF: sub_2592+29j + mov ax, word_F08C + mov cx, ax + sub ax, bx + jb short loc_2605 + cmp ax, word_F090 + jb short loc_2605 + mov word_F08C, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_266B +; --------------------------------------------------------------------------- + +loc_2605: ; CODE XREF: sub_2592+16j sub_2592+21j ... + mov ax, 0 + mov word_D6E0, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2612: ; CODE XREF: sub_2592+45j + sub ax, cx + cmp ax, 1 + jbe short loc_2642 + add ax, cx + mov word ptr es:0, 1 + mov es:2, cx + mov bx, es + mov es, cx + mov es:2, ax + mov word ptr es:0, 0 + cmp bx, word_F08E + jnz short loc_266B + mov word_F08E, cx + jmp short loc_266B +; --------------------------------------------------------------------------- + +loc_2642: ; CODE XREF: sub_2592+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_F08E + jnz short loc_266B + mov ax, word_F08A + mov cx, bx + push bx + +loc_2657: ; CODE XREF: sub_2592+D0j + les cx, es:0 + jcxz short loc_2666 + mov bx, es + cmp bx, ax + jb short loc_2657 + xor bx, bx + +loc_2666: ; CODE XREF: sub_2592+CAj + mov word_F08E, bx + pop bx + +loc_266B: ; CODE XREF: sub_2592+71j sub_2592+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_D6E0 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_267C: ; CODE XREF: sub_2682+12j sub_2682+1Aj + pop es + pop cx + pop bx + retf 2 +sub_2592 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2682 proc far ; CODE XREF: sub_472+11p sub_5B8+45p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_F08C + jz short loc_26E6 + jb short loc_267C + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_267C + mov es:[bx], bx + mov cx, word_F08E + mov ax, es + mov word_F08E, ax + jcxz short loc_2723 + cmp ax, cx + jb short loc_26B5 + mov ax, cx + mov word_F08E, ax + +loc_26B5: ; CODE XREF: sub_2682+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_F08A + jnz short loc_26C3 + mov ax, es + +loc_26C3: ; CODE XREF: sub_2682+3Dj + push ds + +loc_26C4: ; CODE XREF: sub_2682+4Dj sub_2682+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_26E3 + cmp [bx], bx + jnz short loc_26C4 + +loc_26D1: ; CODE XREF: sub_2682+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_26C4 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_26D1 + +loc_26E3: ; CODE XREF: sub_2682+49j + pop ds + jmp short loc_2723 +; --------------------------------------------------------------------------- + +loc_26E6: ; CODE XREF: sub_2682+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_F08C, ax + cmp ax, word_F08A + jz short loc_2723 + mov es, ax + cmp es:[bx], bx + jnz short loc_2723 + mov ax, es:[bx+2] + mov word_F08C, ax + mov cx, word_F08A + cmp ax, cx + jz short loc_271F + jmp short loc_2716 +; --------------------------------------------------------------------------- + nop + +loc_270E: ; CODE XREF: sub_2682+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_271F + +loc_2716: ; CODE XREF: sub_2682+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_270E + mov bx, es + +loc_271F: ; CODE XREF: sub_2682+87j sub_2682+92j + mov word_F08E, bx + +loc_2723: ; CODE XREF: sub_2682+28j sub_2682+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_2682 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_272A proc far ; CODE XREF: sub_B616+2DP + cmp word_D6DC, 0 + jz short loc_2745 + mov ax, word_D6DC + mov es, ax + xor ax, ax + cmp word_D6DE, ax + mov word_D6DC, ax + jz short loc_2745 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2745: ; CODE XREF: sub_272A+5j sub_272A+15j + mov ax, 1 + retf +sub_272A endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_2762 + +loc_274E: ; CODE XREF: sub_2762+32j + push ax + push es + push cs + call near ptr sub_2682 + pop ax + jmp short loc_275B +; END OF FUNCTION CHUNK FOR sub_2762 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_2762 + +loc_2758: ; CODE XREF: sub_2762+24j + mov ax, 0FFF8h + +loc_275B: ; CODE XREF: sub_2762-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_2762 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2762 proc far ; CODE XREF: sub_286+EBp + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 274E SIZE 00000009 BYTES +; FUNCTION CHUNK AT 2758 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_D706 + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_D6E0, 4 + push ax + push cs + call near ptr sub_257E + jb short loc_2758 + mov es, ax + push word_D706 + push dx + push ax + push cs + call near ptr sub_280E + jb short loc_274E + push ds + lds si, [bp+arg_2] + mov di, bx + mov cx, bx + shl cx, 1 + rep movsw + push es + pop ds + mov si, bx + mov dx, [bp+arg_0] + mov dh, dl + mov cx, bx + xor di, di + shr dh, 1 + jb short loc_27B8 + rep movsb + jmp short loc_27BE +; --------------------------------------------------------------------------- + nop + +loc_27B8: ; CODE XREF: sub_2762+4Fj sub_2762+5Aj + lodsb + not al + stosb + loop loc_27B8 + +loc_27BE: ; CODE XREF: sub_2762+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_27C6: ; CODE XREF: sub_2762+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_27C6 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_27D6: ; CODE XREF: sub_2762+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_27D6 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_27E6: ; CODE XREF: sub_2762+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_27E6 + test dl, dl + jz short loc_2802 + mov ah, 4 + +loc_27F4: ; CODE XREF: sub_2762+9Ej + xor si, si + mov cx, bx + +loc_27F8: ; CODE XREF: sub_2762+9Aj + lodsb + and [di], al + inc di + loop loc_27F8 + dec ah + jnz short loc_27F4 + +loc_2802: ; CODE XREF: sub_2762+8Ej + pop ds + mov ax, word_D706 + dec ax + pop di + pop si + pop bp + retf 8 +sub_2762 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_280E proc far ; CODE XREF: sub_2762+2Fp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push bx + cld + mov bx, [bp+arg_4] + cmp bx, 200h + cmc + mov ax, 0FFE1h + jb short loc_287D + cmp word_D704, 0 + jnz short loc_284E + mov word_D6E0, 4 + push 240h + push cs + call near ptr sub_2592 + mov word_D704, ax + mov ax, 0FFF8h + jb short loc_287D + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 2512h + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_284E: ; CODE XREF: sub_280E+17j + mov ax, bx + shl bx, 1 + cmp ax, word_D706 + jnb short loc_2869 + cmp word ptr [bx+2512h], 0 + jz short loc_286D + push word ptr [bx+2112h] + push cs + call near ptr sub_2682 + jmp short loc_286D +; --------------------------------------------------------------------------- + +loc_2869: ; CODE XREF: sub_280E+48j + inc ax + mov word_D706, ax + +loc_286D: ; CODE XREF: sub_280E+4Fj sub_280E+59j + mov ax, [bp+arg_2] + mov [bx+2512h], ax + mov ax, [bp+arg_0] + mov [bx+2112h], ax + xor ax, ax + +loc_287D: ; CODE XREF: sub_280E+10j sub_280E+2Cj + pop bx + pop bp + retf 6 +sub_280E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2882 proc far ; CODE XREF: _main+80P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push ds + push si + push di + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_CE4 + jb short loc_2904 + mov bx, ax + mov cx, 764h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_28FC + mov al, byte_D6E9 + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_28FC + xor si, si + mov ax, word_D700 + or ax, ax + jz short loc_28C8 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_412 + pop cx + pop bx + mov si, ax + +loc_28C8: ; CODE XREF: sub_2882+37j + test byte_D6E9, 80h + jz short loc_28DC + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_28FC + +loc_28DC: ; CODE XREF: sub_2882+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call near ptr sub_286 + pop bx + jb short loc_28FC + push bx + push cs + call near ptr sub_CCE + mov ax, word_D6F2 + sub ax, word_D6F0 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_28FC: ; CODE XREF: sub_2882+22j sub_2882+2Ej ... + push ax + push bx + push cs + call near ptr sub_CCE + pop ax + stc + +loc_2904: ; CODE XREF: sub_2882+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_2882 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_290C dd 0 ; DATA XREF: sub_2912+4r sub_2912+14w ... +byte_2910 db 0, 90h ; DATA XREF: seg000:29A2r seg000:29B9w ... + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2912 proc far ; CODE XREF: sub_B756+31P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_290C + or ax, word ptr cs:dword_290C+2 + jnz short loc_2948 + mov ax, 3521h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr cs:dword_290C, bx + mov word ptr cs:dword_290C+2, es + mov word_FAEA, 0 + mov word_FAEC, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 29A2h + mov ax, 2521h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + assume ds:dseg + +loc_2948: ; CODE XREF: sub_2912+Dj + push si + push di + push ds + mov cx, 0FFFFh + mov al, 0 + les di, [bp+arg_0] + repne scasb + not cx + sub di, cx + mov si, di + mov di, 2AEAh + push ds + push es + pop ds + pop es + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop di + pop si + pop bp + retf 4 +sub_2912 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2972 proc far ; CODE XREF: sub_B616+3P + mov ax, word ptr cs:dword_290C + or ax, word ptr cs:dword_290C+2 + jz short locret_29A1 + push ds + lds dx, cs:dword_290C + mov ax, 2521h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + xor ax, ax + mov word ptr cs:dword_290C, ax + mov word ptr cs:dword_290C+2, ax + cmp word_FAEA, ax + jz short locret_29A1 + push word_FAEA + push cs + call near ptr sub_1D36 + +locret_29A1: ; CODE XREF: sub_2972+9j sub_2972+25j + retf +sub_2972 endp + +; --------------------------------------------------------------------------- + cmp cs:byte_2910, 0 + jz short loc_29AF + jmp cs:dword_290C +; --------------------------------------------------------------------------- + +loc_29AF: ; CODE XREF: seg000:29A8j + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_2910 + push word ptr [bp+18h] + popf + mov cs:byte_2A06, ah + mov si, 29D6h + +loc_29CA: ; CODE XREF: seg000:29D0j + add si, 4 + cmp ah, cs:[si] + jnz short loc_29CA + mov di, word_FAEC + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 0Ah, 2Ah, 3Eh, 0, 3Fh, 2Ah, 3Fh, 0, 5Dh, 2Ah + db 42h, 0, 71h, 2Ah, 46h, 0, 0D2h, 2Ah, 40h, 0, 0D6h, 2Ah + db 45h, 0, 0D6h, 2Ah, 4Ch, 0, 0B4h, 2Ah, 57h, 0, 0D6h + db 2Ah, 5Ch, 0, 0D6h, 2Ah, 44h, 0, 0C0h, 2Ah +byte_2A06 db 0 ; DATA XREF: seg000:29C2w + db 0 +; --------------------------------------------------------------------------- + fisubr dword ptr [bp+si] + test al, 0Fh + jz short loc_2A11 + jmp loc_2ADA +; --------------------------------------------------------------------------- + +loc_2A11: ; CODE XREF: seg000:2A0Cj + or di, di + js short loc_2A18 + jmp loc_2ADA +; --------------------------------------------------------------------------- + +loc_2A18: ; CODE XREF: seg000:2A13j + push ds + push offset unk_FA6A + push word ptr [bp+2] + push dx + push cs + call near ptr sub_2B06 + or ax, ax + jnz short loc_2A2B + jmp loc_2ADA +; --------------------------------------------------------------------------- + +loc_2A2B: ; CODE XREF: seg000:2A26j + mov word_FAEA, ax + mov es, ax + mov es, word ptr es:0 + mov ax, es:0 + mov word_FAEC, ax + jmp loc_2AF5 +; --------------------------------------------------------------------------- + cmp bx, di + jz short loc_2A46 + jmp loc_2ADA +; --------------------------------------------------------------------------- + +loc_2A46: ; CODE XREF: seg000:2A41j + push word_FAEA + push cs + call near ptr sub_1D36 + mov word_FAEA, 0 + mov word_FAEC, 0FFFFh + jmp loc_2AF5 +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_2ADA + push word ptr [bp+2] + push dx + push cx + push word_FAEA + push cs + call near ptr sub_1E00 + jmp loc_2AF5 +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_2ADA + or cx, cx + jl short loc_2AEC + cmp al, 1 + jz short loc_2AA5 + jl short loc_2A99 + mov es, word_FAEA + mov dx, es:16h + mov cx, es:18h + sub dx, es:12h + sbb cx, es:14h + jmp short loc_2AA5 +; --------------------------------------------------------------------------- + +loc_2A99: ; CODE XREF: seg000:2A7Dj + push cx + push dx + push word_FAEA + push cs + call near ptr sub_1E2E + pop dx + pop cx + +loc_2AA5: ; CODE XREF: seg000:2A7Bj seg000:2A97j + push word_FAEA + push cx + push dx + push cs + call near ptr sub_1E6A + mov [bp+0Eh], dx + jmp short loc_2AF5 +; --------------------------------------------------------------------------- + db 2Eh, 0C5h, 16h, 0Ch, 29h, 0B8h, 21h, 25h, 0CDh, 21h + db 0EBh, 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h + db 6, 0D0h, 2Ah, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh + db 74h, 16h, 3Bh, 0DFh, 74h, 12h +; --------------------------------------------------------------------------- + +loc_2ADA: ; CODE XREF: seg000:2A0Ej seg000:2A15j ... + dec cs:byte_2910 + push word ptr [bp+18h] + popf + pop es + pop ds + popa + cli + jmp cs:dword_290C +; --------------------------------------------------------------------------- + +loc_2AEC: ; CODE XREF: seg000:2A77j + or byte ptr [bp+18h], 1 + mov ax, 1 + jmp short loc_2AF9 +; --------------------------------------------------------------------------- + +loc_2AF5: ; CODE XREF: seg000:2A3Cj seg000:2A5Aj ... + and byte ptr [bp+18h], 0FEh + +loc_2AF9: ; CODE XREF: seg000:2AF3j + mov [bp+12h], ax + dec cs:byte_2910 + pop es + pop ds + popa + iret +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2B06 proc far ; CODE XREF: seg000:2A21p + +var_20 = byte ptr -20h +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + enter 20h, 0 + push si + push di + mov word_D6E0, 7 + push 1Fh + push cs + call near ptr sub_257E + jnb short loc_2B1D + jmp loc_2BD8 +; --------------------------------------------------------------------------- + +loc_2B1D: ; CODE XREF: sub_2B06+12j + mov si, ax + push [bp+arg_6] + push [bp+arg_4] + push cs + call near ptr sub_5B8 + or ax, ax + jnz short loc_2B30 + jmp loc_2BD1 +; --------------------------------------------------------------------------- + +loc_2B30: ; CODE XREF: sub_2B06+25j + mov es, si + mov es:0, ax + lea di, [bp+var_20] + push di + push si + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + call sub_2BE6 + or ax, ax + jnz short loc_2BC5 + mov ax, 1DF2h + mov es:4, ax + mov al, byte_D3EC + mov es:1Eh, al + mov ax, ss:[di] + cmp ax, 0F388h + jz short loc_2B6E + cmp ax, 9595h + jz short loc_2B78 + mov ax, 5 + jmp short loc_2BC5 +; --------------------------------------------------------------------------- + +loc_2B6E: ; CODE XREF: sub_2B06+5Cj + mov ax, es:4 + mov es:2, ax + jmp short loc_2B8D +; --------------------------------------------------------------------------- + +loc_2B78: ; CODE XREF: sub_2B06+61j + mov word ptr es:2, 1D60h + mov word ptr es:1Ah, 0 + mov word ptr es:1Ch, 0FFFFh + +loc_2B8D: ; CODE XREF: sub_2B06+70j + mov ax, ss:[di+arg_A] + mov dx, ss:[di+arg_C] + mov es:6, ax + mov es:8, dx + mov ax, ss:[di+arg_E] + mov dx, ss:[di+arg_10] + mov es:16h, ax + mov es:18h, dx + xor ax, ax + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + mov ax, si + jmp short loc_2BDF +; --------------------------------------------------------------------------- + +loc_2BC5: ; CODE XREF: sub_2B06+46j sub_2B06+66j + mov word_D3EA, ax + push word ptr es:0 + push cs + call near ptr sub_472 + +loc_2BD1: ; CODE XREF: sub_2B06+27j + push si + push cs + call near ptr sub_2682 + jmp short loc_2BDD +; --------------------------------------------------------------------------- + +loc_2BD8: ; CODE XREF: sub_2B06+14j + mov byte ptr word_D3EA, 3 + +loc_2BDD: ; CODE XREF: sub_2B06+D0j + xor ax, ax + +loc_2BDF: ; CODE XREF: sub_2B06+BDj + pop di + pop si + leave + retf 8 +sub_2B06 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2BE6 proc near ; CODE XREF: sub_2B06+41p + +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_14 = word ptr 18h +arg_16 = word ptr 1Ah + + enter 6, 0 + push si + push di + push es + mov si, [bp+arg_8] + mov es, si + xor ax, ax + mov es:0Eh, ax + mov es:10h, ax + push ds + push si + cld + xor bx, bx + mov dx, bx + lds si, [bp+arg_4] + +loc_2C06: ; CODE XREF: sub_2BE6+27j sub_2BE6+2Ej + lodsb + cmp al, 0 + jz short loc_2C16 + cmp al, 2Eh ; '.' + jnz short loc_2C06 + lea bx, [si-1] + mov dx, ds + jmp short loc_2C06 +; --------------------------------------------------------------------------- + +loc_2C16: ; CODE XREF: sub_2BE6+23j + pop si + pop ds + mov ax, dx + or ax, bx + jz short $+2 + mov di, [bp+arg_A] + mov byte_D713, 0 + +loc_2C26: ; CODE XREF: sub_2BE6+9Bj + mov es, si + push ss + push di + push 20h ; ' ' + push word ptr es:0 + push cs + call near ptr sub_60C + inc byte_D713 + cmp byte_D713, 0FFh + mov bx, 2 + jz short loc_2C83 + cmp ax, 20h ; ' ' + jnz short loc_2C83 + mov es, si + add es:0Eh, ax + adc word ptr es:10h, 0 + mov ax, ss:[di] + and ax, ax + mov bx, 6 + jz short loc_2C83 + lea bx, [di+3] + +loc_2C62: ; CODE XREF: sub_2BE6+86j + cmp byte ptr ss:[bx], 0 + jz short loc_2C6E + not byte ptr ss:[bx] + inc bx + jmp short loc_2C62 +; --------------------------------------------------------------------------- + +loc_2C6E: ; CODE XREF: sub_2BE6+80j + lea bx, [di+3] + push [bp+arg_2] + push [bp+arg_0] + push ss + push bx + call sub_2CAC + mov ax, 0 + jnz short loc_2C85 + jmp short loc_2C26 +; --------------------------------------------------------------------------- + +loc_2C83: ; CODE XREF: sub_2BE6+5Bj sub_2BE6+60j ... + mov ax, bx + +loc_2C85: ; CODE XREF: sub_2BE6+99j + mov es, si + mov ax, ss:[di+arg_14] + mov dx, ss:[di+arg_16] + mov es:0Eh, ax + mov es:10h, dx + push word ptr es:0 + push dx + push ax + push 0 + push cs + call near ptr sub_67E + pop es + pop di + pop si + leave + retn 0Ch +sub_2BE6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2CAC proc near ; CODE XREF: sub_2BE6+93p + +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+arg_4] + lds si, [bp+arg_0] + +loc_2CB8: ; CODE XREF: sub_2CAC+2Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_2CC5 + sub al, 20h ; ' ' + +loc_2CC5: ; CODE XREF: sub_2CAC+15j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_2CD0 + sub ah, 20h ; ' ' + +loc_2CD0: ; CODE XREF: sub_2CAC+1Fj + cmp ah, al + jnz short loc_2CDA + add al, 61h ; 'a' + jnz short loc_2CB8 + jmp short loc_2CDC +; --------------------------------------------------------------------------- + +loc_2CDA: ; CODE XREF: sub_2CAC+26j + xor ax, ax + +loc_2CDC: ; CODE XREF: sub_2CAC+2Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 +sub_2CAC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_2CE4 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 81Ch + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_2CE4 endp + +; --------------------------------------------------------------------------- + add sp, 6 + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl stpcpy(char *dest, const char *src) +_stpcpy proc far ; CODE XREF: __DOSENV+DDp + ; __DOSENV+140p ... + +var_2 = word ptr -2 +dest = dword ptr 6 +s = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 2 + push si + push di + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov [bp+var_2], ax + inc ax + push ax ; n + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + add ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retf +_stpcpy endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + +; void abort(void) +_abort proc far ; CODE XREF: terminate(void)+4p + ; ___call_terminate+6Ep ... + push si + push di + mov ax, 16h + push ax + nop + push cs + call near ptr sub_41EA + pop cx + nop + push cs + call near ptr sub_2CE4 +_abort endp + +; --------------------------------------------------------------------------- + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl atexit(void (*func)(void)) +_atexit proc far + +func = dword ptr 6 + + push bp + mov bp, sp + push si + push di + cmp word_D7BC, 20h ; ' ' + jnz short loc_2D61 + mov ax, 1 + jmp short loc_2D7D +; --------------------------------------------------------------------------- + +loc_2D61: ; CODE XREF: _atexit+Aj + mov bx, word_D7BC + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+2C4Eh], dx + mov [bx+2C4Ch], ax + inc word_D7BC + xor ax, ax + +loc_2D7D: ; CODE XREF: _atexit+Fj + pop di + pop si + pop bp + retf +_atexit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl registerbgidriver(void (*driver)(void)) +_registerbgidriver proc far ; CODE XREF: _registerbgifont+Dp + ; seg000:34FEp ... + +driver = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + push [bp+arg_2] + push [bp+driver] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + pop di + pop si + pop bp + retf +_registerbgidriver endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl registerbgifont(void (*font)(void)) +_registerbgifont proc far ; CODE XREF: sub_7E39+3A5p + +driver = dword ptr 6 + + push bp + mov bp, sp + push si + push di + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + pop di + pop si + pop bp + retf +_registerbgifont endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __stdcall _DOSENV(__int32, char *s, int, int) +__DOSENV proc near ; CODE XREF: sub_9349+1E4p + +dest = dword ptr -0Ah +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 +s = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+var_6], 1 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + or ax, dx + jz short loc_2DFF + mov [bp+var_6], 0 + jmp short loc_2DEA +; --------------------------------------------------------------------------- + +loc_2DD1: ; CODE XREF: __DOSENV+50j + les bx, [bp+var_4] + add word ptr [bp+var_4], 4 + push word ptr es:[bx+2] + push word ptr es:[bx] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + add [bp+var_6], ax + +loc_2DEA: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2DFF + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_2DD1 + +loc_2DFF: ; CODE XREF: __DOSENV+1Bj __DOSENV+47j + inc [bp+var_6] + mov ax, word ptr [bp+s] + or ax, word ptr [bp+s+2] + jz short loc_2E1D + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + add ax, 3 + add [bp+var_6], ax + +loc_2E1D: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_2E27 + jmp loc_2F0E +; --------------------------------------------------------------------------- + +loc_2E27: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_3C38 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_2E41 + jmp loc_2F0E +; --------------------------------------------------------------------------- + +loc_2E41: ; CODE XREF: __DOSENV+8Fj + les bx, [bp+arg_0] + mov ax, word ptr [bp+dest] + mov es:[bx+2], dx + mov es:[bx], ax + add word ptr [bp+dest], 0Fh + and word ptr [bp+dest], 0FFF0h + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + or ax, dx + jz short loc_2EB7 + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2EB7 + jmp short loc_2EA0 +; --------------------------------------------------------------------------- + +loc_2E74: ; CODE XREF: __DOSENV+106j + les bx, [bp+var_4] + add word ptr [bp+var_4], 4 + push word ptr es:[bx+2] + push word ptr es:[bx] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _stpcpy + add sp, 8 + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_2EA0: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2EC1 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_2E74 + jmp short loc_2EC1 +; --------------------------------------------------------------------------- + +loc_2EB7: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_2EC1: ; CODE XREF: __DOSENV+FDj + ; __DOSENV+108j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + mov ax, word ptr [bp+s] + or ax, word ptr [bp+s+2] + jz short loc_2F03 + les bx, [bp+dest] + mov word ptr es:[bx], 1 + add word ptr [bp+dest], 2 + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _stpcpy + add sp, 8 + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_2F03: ; CODE XREF: __DOSENV+124j + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + sub ax, [bp+var_6] + jmp short loc_2F12 +; --------------------------------------------------------------------------- + +loc_2F0E: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_2F12: ; CODE XREF: __DOSENV+15Fj + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSENV endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl _dos_getdrive(unsigned int *drive) +__dos_getdrive proc far ; CODE XREF: sub_470F+66p + +drive = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + les bx, [bp+drive] + mov es:[bx], ax + pop di + pop si + pop bp + retf +__dos_getdrive endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl _dos_setdrive(unsigned int drive, unsigned int *ndrives) +__dos_setdrive proc far + +drive = word ptr 6 +ndrives = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov dl, byte ptr [bp+drive] + dec dl + mov ah, 0Eh + int 21h ; DOS - SELECT DISK + ; DL = new default drive number (0 = A, 1 = B, etc.) + ; Return: AL = number of logical drives + mov ah, 0 + les bx, [bp+ndrives] + mov es:[bx], ax + pop di + pop si + pop bp + retf +__dos_setdrive endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far __ErrorMessage(char *buf) +___ErrorMessage proc far ; CODE XREF: sub_163+7p sub_2CE4+9p + +buf = dword ptr 6 + + push bp + mov bp, sp + push si + push di + push word ptr [bp+buf+2] + push word ptr [bp+buf] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + push ax ; len + push word ptr [bp+buf+2] + push word ptr [bp+buf] ; buf + mov al, byte_D7F6 + cbw + push ax ; handle + nop + push cs + call near ptr __rtl_write + add sp, 8 + pop di + pop si + pop bp + retf +___ErrorMessage endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_2F74 proc far ; CODE XREF: sub_2F79+29P sub_2F79+43P ... + push si + push di + pop di + pop si + retf +sub_2F74 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_2F79 proc near ; CODE XREF: _exit+Cp __exit+Fp ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + push di + cmp [bp+arg_4], 0 + jnz short loc_2FA6 + jmp short loc_2F96 +; --------------------------------------------------------------------------- + +loc_2F86: ; CODE XREF: sub_2F79+22j + dec word_D7BC + mov bx, word_D7BC + mov cl, 2 + shl bx, cl + call dword ptr [bx+2C4Ch] + +loc_2F96: ; CODE XREF: sub_2F79+Bj + cmp word_D7BC, 0 + jnz short loc_2F86 + nop + push cs + call __cleanup + call off_D7BE + +loc_2FA6: ; CODE XREF: sub_2F79+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_2FCD + cmp [bp+arg_4], 0 + jnz short loc_2FC4 + call off_D7C2 + call off_D7C6 + +loc_2FC4: ; CODE XREF: sub_2F79+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_2FCD: ; CODE XREF: sub_2F79+3Bj + pop di + pop si + pop bp + retn 6 +sub_2F79 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn bp-based frame + +; void __cdecl exit(int status) +_exit proc far ; CODE XREF: start+143p + +status = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor ax, ax + push ax + push ax + push [bp+status] + call sub_2F79 + pop di + pop si + pop bp + retf +_exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn bp-based frame + +; void __cdecl _exit(int status) +__exit proc far ; CODE XREF: sub_163+12p sub_2CE4+12p ... + +status = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+status] + call sub_2F79 + pop di + pop si + pop bp + retf +__exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; void _cexit(void) +__cexit proc far ; CODE XREF: __exec+216p + push si + push di + xor ax, ax + push ax + mov ax, 1 + push ax + xor ax, ax + push ax + call sub_2F79 + pop di + pop si + retf +__cexit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; void _c_exit(void) +__c_exit proc far + push si + push di + mov ax, 1 + push ax + push ax + xor ax, ax + push ax + call sub_2F79 + pop di + pop si + retf +__c_exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +SCOPY@ proc far ; CODE XREF: sub_9643+12P sub_97F1+12P ... + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + push ds + lds si, [bp+arg_0] + les di, [bp+arg_4] + cld + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop di + pop si + pop bp + retf 8 +SCOPY@ endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl getdate(struct date *datep) +_getdate proc far ; CODE XREF: sub_BC9E+11FP + +datep = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 2Ah + int 21h ; DOS - GET CURRENT DATE + ; Return: DL = day, DH = month, CX = year + ; AL = day of the week (0=Sunday, 1=Monday, etc.) + les bx, [bp+datep] + mov es:[bx], cx + mov es:[bx+2], dx + pop di + pop si + pop bp + retf +_getdate endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl gettime(struct time *timep) +_gettime proc far + +timep = dword ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 2Ch + int 21h ; DOS - GET CURRENT TIME + ; Return: CH = hours, CL = minutes, DH = seconds + ; DL = hundredths of seconds + les bx, [bp+timep] + mov es:[bx], cx + mov es:[bx+2], dx + pop di + pop si + pop bp + retf +_gettime endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void (__cdecl __interrupt far *__cdecl getvect(int interruptno))() +_getvect proc far ; CODE XREF: seg000:4182p + +interruptno = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov ah, 35h ; '5' + mov al, [bp+interruptno] + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + xchg ax, bx + mov dx, es + pop di + pop si + pop bp + retf +_getvect endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl setvect(int interruptno, void (__interrupt far *isr)()) +_setvect proc far ; CODE XREF: seg000:40C7p seg000:41C4p ... + +interruptno = byte ptr 6 +isr = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov ah, 25h ; '%' + mov al, [bp+interruptno] + push ds + lds dx, [bp+isr] + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + pop di + pop si + pop bp + retf +_setvect endp + +; --------------------------------------------------------------------------- + +N_LDIV@: + pop cx + push cs + push cx + +LDIV@: + xor cx, cx + jmp short loc_30AD + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_7C86+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_30AD +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_30AD +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_30AD: ; CODE XREF: seg000:3095j N_LUDIV@+6j ... + push bp + push si + push di + mov bp, sp + mov di, cx + mov ax, [bp+0Ah] + mov dx, [bp+0Ch] + mov bx, [bp+0Eh] + mov cx, [bp+10h] + or cx, cx + jnz short loc_30CC + or dx, dx + jz short loc_3131 + or bx, bx + jz short loc_3131 + +loc_30CC: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_30EE + or dx, dx + jns short loc_30E0 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_30E0: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_30EE + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_30EE: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_30F8: ; CODE XREF: N_LUDIV@:loc_310Fj + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_310F + ja short loc_310A + cmp si, bx + jb short loc_310F + +loc_310A: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_310F: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_30F8 + pop bx + test bx, 2 + jz short loc_311E + mov ax, si + mov dx, di + shr bx, 1 + +loc_311E: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_312B + neg dx + neg ax + sbb dx, 0 + +loc_312B: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_3131: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_313A + xchg ax, dx + +loc_313A: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_312B +N_LUDIV@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LXLSH@ proc far ; CODE XREF: __sbrk+Fp + pop bx + push cs + push bx + +LXLSH@: + cmp cl, 10h + jnb short loc_3156 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_3156: ; CODE XREF: N_LXLSH@+6j + sub cl, 10h + xchg ax, dx + xor ax, ax + shl dx, cl + retf +N_LXLSH@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_PADD@ proc far ; CODE XREF: __sbrk+38p + pop es + push cs + push es + +F_PADD@: + or cx, cx + jge short loc_3172 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_31A1 +; --------------------------------------------------------------------------- + +loc_3172: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_317A + add dx, 1000h + +loc_317A: ; CODE XREF: N_PADD@+15j + mov ch, cl + mov cl, 4 + shl ch, cl + add dh, ch + mov ch, al + shr ax, cl + add dx, ax + mov al, ch + and ax, 0Fh + retf +; --------------------------------------------------------------------------- + +N_PSUB@: + pop es + push cs + push es + +F_PSUB@: + or cx, cx + jge short loc_31A1 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_3172 +; --------------------------------------------------------------------------- + +loc_31A1: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_31A9 + sub dx, 1000h + +loc_31A9: ; CODE XREF: N_PADD@+44j + mov bh, cl + mov cl, 4 + shl bh, cl + xor bl, bl + sub dx, bx + mov ch, al + shr ax, cl + add dx, ax + mov al, ch + and ax, 0Fh + retf +N_PADD@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__IOERROR proc near ; CODE XREF: __DOSERROR+8p _lseek+25p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_0] + or dx, dx + jl short loc_31E2 + cmp dx, 58h ; 'X' + jle short loc_31D3 + +loc_31D0: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_31D3: ; CODE XREF: __IOERROR+Fj + mov word_D984, dx + mov bx, dx + mov al, [bx+0A06h] + cbw + mov dx, ax + jmp short loc_31F0 +; --------------------------------------------------------------------------- + +loc_31E2: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_DC66 + jg short loc_31D0 + mov word_D984, 0FFFFh + +loc_31F0: ; CODE XREF: __IOERROR+21j + mov word_CFFE, dx + mov ax, 0FFFFh + pop di + pop si + pop bp + retn 2 +__IOERROR endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__DOSERROR proc near + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + push [bp+arg_0] + call __IOERROR + mov ax, [bp+arg_0] + pop di + pop si + pop bp + retn 2 +__DOSERROR endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl isatty(int handle) +_isatty proc far ; CODE XREF: seg000:35B3p seg000:35ECp + +handle = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, 4400h + mov bx, [bp+handle] + int 21h ; DOS - 2+ - IOCTL - GET DEVICE INFORMATION + ; BX = file or device handle + xchg ax, dx + and ax, 80h + pop di + pop si + pop bp + retf +_isatty endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __int32 __cdecl lseek(int handle, __int32 offset, int fromwhere) +_lseek proc far ; CODE XREF: _fseek+67p _ftell+1Bp ... + +handle = word ptr 6 +_offset = word ptr 8 +arg_4 = word ptr 0Ah +fromwhere = byte ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+9DCh], 0FDFFh + mov ah, 42h ; 'B' + mov al, [bp+fromwhere] + mov bx, [bp+handle] + mov cx, [bp+arg_4] + mov dx, [bp+_offset] + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: + ; 0-from beginnig,1-from current,2-from end + jb short loc_324A + jmp short loc_324F +; --------------------------------------------------------------------------- + +loc_324A: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_324F: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_347E + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 53h, 32h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 3261h + nop + push cs + call near ptr ___InitExceptBlocks + xor ax, ax + push ax + push ax + push ax + push ax + mov ax, 5 + push ax + mov ax, seg seg000 + push ax + mov ax, 3359h + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0A60h + push ax + push ss + lea ax, [bp-6] + push ax + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + mov ax, word_D9E4 + mov [bp-2], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp-6] + push ss + push ax + push cs + mov ax, 347Eh + push ax + nop + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; set_new_handler(void (*)(void)) +@set_new_handler$qnqv$v proc far + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov dx, seg_D9E8 + mov ax, word_D9E6 + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_D9E8, dx + mov word_D9E6, ax + mov dx, [bp+var_2] + mov ax, [bp+var_4] + pop di + pop si + mov sp, bp + pop bp + retf +@set_new_handler$qnqv$v endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; operator new(unsigned int) +@$bnew$qui proc far ; CODE XREF: xalloc::xalloc(string &,uint)+13p + ; xmsg::xmsg(string &)+21p ... + +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 + mov [bp+var_2], 0 + mov [bp+var_4], 0 + cmp [bp+arg_0], 0 + jz short loc_3325 + mov ax, [bp+arg_0] + jmp short loc_3328 +; --------------------------------------------------------------------------- + +loc_3325: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_3328: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_3331 +; --------------------------------------------------------------------------- + +loc_332D: ; CODE XREF: operator new(uint)+43j + call dword ptr word_D9E6 + +loc_3331: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_3C38 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_334D + mov ax, word_D9E6 + or ax, seg_D9E8 + jnz short loc_332D + +loc_334D: ; CODE XREF: operator new(uint)+3Aj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + pop di + pop si + mov sp, bp + pop bp + retf +@$bnew$qui endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+0Ah] + mov ax, es:[bx+4] + les bx, [bp+6] + mov es:[bx+4], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + dd byte_347E + db 2 dup(0), 60h, 0Ah + dw seg dseg + dd byte_3444 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 9Ch, 33h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::contains(char const *)const +@string@contains$xqnxc proc far ; DATA XREF: dseg:0E90o + +var_22 = word ptr -22h +var_16 = word ptr -16h +driver = byte ptr -4 + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 33B4h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 0A6Ah + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + call @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ds + mov ax, 0A60h + push ax + nop + push cs + call near ptr @xalloc@$bctr$qmx6stringui ; xalloc::xalloc(string &,uint) + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + call @string@$bdtr$qv ; string::~string(void) + add sp, 10h + push [bp+var_22] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@contains$xqnxc endp + +; --------------------------------------------------------------------------- + +loc_341D: ; DATA XREF: dseg:0EAEo + push si + push di + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push ds + mov ax, 0A60h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_3444 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:33A6o + db 0Dh dup(0), 1, 0, 1, 0, 8, 3 + dw seg seg006 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_347E db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:3253o seg000:339Co + db 0Dh dup(0), 2, 0, 2, 0, 0C0h, 34h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0Dh, 35h + dw seg seg000 + db 2 dup(0), 3, 0Dh dup(0) +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_3507 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_3505 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_3509 +; --------------------------------------------------------------------------- + +loc_3505: ; CODE XREF: seg000:34F4j + jmp short loc_3509 +; --------------------------------------------------------------------------- + +loc_3507: ; CODE XREF: seg000:34CBj + xor ax, ax + +loc_3509: ; CODE XREF: seg000:3503j + ; seg000:loc_3505j + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LXMUL@ proc near ; CODE XREF: sub_7C86+51p sub_7C86+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_354E + mul bx + +loc_354E: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_3555 + xchg ax, cx + mul si + add ax, cx + +loc_3555: ; CODE XREF: N_LXMUL@:loc_354Ej + xchg ax, si + mul bx + add dx, si + pop si + retn +N_LXMUL@ endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_PCMP@ proc near ; CODE XREF: __brk+13p __brk+26p ... + push cx + mov ch, al + mov cl, 4 + shr ax, cl + add dx, ax + mov al, ch + mov ah, bl + shr bx, cl + pop cx + add cx, bx + mov bl, ah + and ax, 0Fh + and bx, 0Fh + cmp dx, cx + jnz short locret_357C + cmp ax, bx + +locret_357C: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_35A6 +; --------------------------------------------------------------------------- + +loc_3584: ; CODE XREF: seg000:35AAj + mov bx, cx + add bx, bx + mov word ptr [bx+9DCh], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+84Eh], 0FFh + add ax, 84Ah + mov bx, dx + mov [bx+85Ch], ax + inc cx + +loc_35A6: ; CODE XREF: seg000:3582j + cmp cx, word_D95A + jb short loc_3584 + mov al, byte_D7CE + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_35C1 + and word_D7CC, 0FDFFh + +loc_35C1: ; CODE XREF: seg000:35B9j + mov ax, 200h + push ax + test byte ptr word_D7CC+1, 2 + jz short loc_35D1 + mov ax, 1 + jmp short loc_35D3 +; --------------------------------------------------------------------------- + +loc_35D1: ; CODE XREF: seg000:35CAj + xor ax, ax + +loc_35D3: ; CODE XREF: seg000:35CFj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 84Ah + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_D7E2 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_35FA + and word_D7E0, 0FDFFh + +loc_35FA: ; CODE XREF: seg000:35F2j + mov ax, 200h + push ax + test byte ptr word_D7E0+1, 2 + jz short loc_360A + mov ax, 2 + jmp short loc_360C +; --------------------------------------------------------------------------- + +loc_360A: ; CODE XREF: seg000:3603j + xor ax, ax + +loc_360C: ; CODE XREF: seg000:3608j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 85Eh + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + pop di + pop si + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl toupper(int ch) +_toupper proc far ; CODE XREF: sub_470F+4Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_0] + cmp dx, 0FFFFh + jnz short loc_3633 + mov ax, 0FFFFh + jmp short loc_364D +; --------------------------------------------------------------------------- + +loc_3633: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_3649 + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_364D +; --------------------------------------------------------------------------- + +loc_3649: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_364D: ; CODE XREF: _toupper+10j _toupper+26j + pop di + pop si + pop bp + retf +_toupper endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __RefDestructorCount(void) +@__RefDestructorCount$qv proc far ; CODE XREF: seg000:32B2p seg000:3382p ... + mov dx, ss + mov ax, 10h + retf +@__RefDestructorCount$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __RefExceptionList(void) +@__RefExceptionList$qv proc far ; CODE XREF: ___InitExceptBlocks+5Cp + ; ___ExitExceptBlocks+4p + mov dx, ss + mov ax, 14h + retf +@__RefExceptionList$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +___InitExceptBlocks proc far ; CODE XREF: seg000:327Fp + ; string::contains(char *)+10p ... + mov es, ax + mov dx, bx + mov cx, bp + mov bx, es:[bx+4] + add bx, cx + mov ss:[bx+6], dx + mov ss:[bx+8], ax + mov ax, sp + add ax, 4 + mov ss:[bx+0Ah], ax + mov ax, seg dseg + mov ss:[bx+0Eh], ax + mov ss:[bx+10h], si + mov word ptr ss:[bx+2], offset __ExceptionHandler + mov word ptr ss:[bx+4], seg seg000 + mov word ptr ss:[bx+0Ch], 0 + mov word ptr ss:[bx+12h], 0 + push bx + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + pop bx + xchg ax, bx + mov es, dx + mov cx, es:[bx] + mov dx, es:[bx+2] + mov bx, ax + mov ss:[bx+1Ah], cx + mov ss:[bx+1Ch], dx + push bx + push cs + call near ptr @__RefExceptionList$qv ; __RefExceptionList(void) + pop bx + xchg ax, bx + mov es, dx + mov cx, es:[bx] + mov es:[bx], ax + mov bx, ax + mov ss:[bx], cx + retf +___InitExceptBlocks endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +___ExitExceptBlocks proc far ; CODE XREF: string::contains(char *)+52p + ; seg000:37CCp ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push cs + call near ptr @__RefExceptionList$qv ; __RefExceptionList(void) + mov bx, [bp+arg_0] + xchg ax, bx + mov es, dx + mov es:[bx], ax + pop bp + retf 2 +___ExitExceptBlocks endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + +; terminate(void) +@terminate$qv proc near ; DATA XREF: dseg:0B86o + push si + push di + nop + push cs + call near ptr _abort +@terminate$qv endp + +; --------------------------------------------------------------------------- + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; set_terminate(void (*)(void)) +@set_terminate$qnqv$v proc far + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_3720 + les bx, ss:16h + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov es:[bx+0Ch], dx + mov es:[bx+0Ah], ax + +loc_3720: ; CODE XREF: set_terminate(void (*)(void))+21j + mov dx, [bp+var_2] + mov ax, [bp+var_4] + pop di + pop si + mov sp, bp + pop bp + retf +@set_terminate$qnqv$v endp + +; --------------------------------------------------------------------------- + dd 0 + dd loc_37BA + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 2Ch, 37h + dw seg seg000 + dw 0 + db 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn bp-based frame + +___call_terminate proc far ; CODE XREF: unexpected(void)+3p + ; sub_6311+272p ... + +var_26 = dword ptr -26h +var_22 = word ptr -22h +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_12 = word ptr -12h + + push bp + mov bp, sp + sub sp, 26h + push si + push di + mov ax, seg seg000 + mov bx, 3744h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_22], ds + nop + push cs + call near ptr _flushall + les bx, ss:16h + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + mov [bp+var_12], 6 + les bx, ss:16h + cmp word ptr es:[bx+12h], 0 + jnz short loc_379E + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_379E: ; CODE XREF: ___call_terminate+3Dj + les bx, ss:16h + mov ax, es:[bx+12h] + mov [bp+var_20], ax + mov ds, [bp+var_20] + call [bp+var_26] + mov ds, [bp+var_22] + mov [bp+var_12], 0 + jmp short loc_37C2 +; --------------------------------------------------------------------------- + +loc_37BA: ; DATA XREF: seg000:3730o + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_37C2: ; CODE XREF: ___call_terminate+62j + nop + push cs + call near ptr _abort +___call_terminate endp + +; --------------------------------------------------------------------------- + push word ptr [bp-1Eh] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + +; unexpected(void) +@unexpected$qv proc near ; DATA XREF: dseg:0B8Ao + push si + push di + push cs + call near ptr ___call_terminate +@unexpected$qv endp + +; --------------------------------------------------------------------------- + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; set_unexpected(void (*)(void)) +@set_unexpected$qnqv$v proc far + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov dx, es:[bx+10h] + mov ax, es:[bx+0Eh] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_3814 + les bx, ss:16h + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov es:[bx+10h], dx + mov es:[bx+0Eh], ax + +loc_3814: ; CODE XREF: set_unexpected(void (*)(void))+21j + mov dx, [bp+var_2] + mov ax, [bp+var_4] + pop di + pop si + mov sp, bp + pop bp + retf +@set_unexpected$qnqv$v endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn bp-based frame + +___call_unexpected proc far ; CODE XREF: __ExceptionHandler+127p + +var_6 = dword ptr -6 +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+10h] + mov ax, es:[bx+0Eh] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + les bx, ss:16h + cmp word ptr es:[bx+14h], 0 + jnz short loc_3850 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_3850: ; CODE XREF: ___call_unexpected+25j + les bx, ss:16h + mov ax, es:[bx+14h] + mov [bp+var_2], ax + push ds + mov ds, [bp+var_2] + call [bp+var_6] + pop ds + nop + push cs + call near ptr _abort +___call_unexpected endp + +; --------------------------------------------------------------------------- + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __GetPolymorphicDTC(void *, unsigned int) +@__GetPolymorphicDTC$qnvui proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_3883 + xor ax, ax + jmp short loc_38BD +; --------------------------------------------------------------------------- + +loc_3883: ; CODE XREF: __GetPolymorphicDTC(void *,uint)+Ej + les bx, [bp+arg_0] + add bx, [bp+arg_4] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + sub ax, es:[bx-2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov ax, es:[bx+1Ah] + +loc_38BD: ; CODE XREF: __GetPolymorphicDTC(void *,uint)+12j + pop di + pop si + mov sp, bp + pop bp + retf +@__GetPolymorphicDTC$qnvui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __GetPolymorphicDTCfar(void *, unsigned int) +@__GetPolymorphicDTCfar$qnvui proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_38D7 + xor ax, ax + jmp short loc_3915 +; --------------------------------------------------------------------------- + +loc_38D7: ; CODE XREF: __GetPolymorphicDTCfar(void *,uint)+Ej + les bx, [bp+arg_0] + add bx, [bp+arg_4] + 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, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + sub ax, es:[bx-2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx-6] + mov ax, es:[bx-8] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov ax, es:[bx+1Ah] + +loc_3915: ; CODE XREF: __GetPolymorphicDTCfar(void *,uint)+12j + pop di + pop si + mov sp, bp + pop bp + retf +@__GetPolymorphicDTCfar$qnvui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +__ExceptInit proc far ; CODE XREF: start+115p + push si + push di + mov word ptr ss:12h, 0 + mov word ptr ss:10h, 0 + mov word ptr ss:18h, ds + mov word ptr ss:16h, 0B7Ch + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_DB10, ax + mov word_DB0E, ax + mov dx, ss:18h + mov ax, ss:16h + add ax, 0A8h ; '¨' + les bx, ss:16h + mov es:[bx+22h], dx + mov es:[bx+20h], ax + mov word ptr ss:14h, 0FFFFh + pop di + pop si + retf +__ExceptInit endp + +; --------------------------------------------------------------------------- + +unknown_libname_1: ; BCC v4.x/5.x DOS runtime + pushf + pop bx + mov ax, 0FFFh + and ax, bx + push ax + popf + pushf + pop ax + and ax, 0F000h + cmp ax, 0F000h + mov word_DC24, 0 + jz short locret_39C4 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_DC24, 2 + jz short locret_39C4 + mov edx, esp + and sp, 0FFFCh + pushfd + pop eax + mov ecx, eax + xor eax, 40000h + push eax + popfd + pushfd + pop eax + xor eax, ecx + mov word_DC24, 3 + mov esp, edx + jz short locret_39C4 + mov word_DC24, 4 + +locret_39C4: ; CODE XREF: seg000:3980j seg000:3993j ... + retn +; --------------------------------------------------------------------------- +word_39C5 dw 0 ; DATA XREF: sub_39D1r sub_39D1+1Dr ... +word_39C7 dw 0 ; DATA XREF: sub_39D1+14w sub_39D1+27w ... +word_39C9 dw 0 ; DATA XREF: sub_39D1+4Cw sub_3AA5+19w ... +word_39CB dw 0 ; DATA XREF: sub_39D1+32r + ; sub_39D1:loc_3A24r ... +word_39CD dw 0 ; DATA XREF: sub_3CBF+1r sub_3D9F+1Aw +word_39CF dw 0 ; DATA XREF: sub_3CBF+7r sub_3D9F+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_39D1 proc near ; CODE XREF: sub_3B05+18p + cmp dx, cs:word_39C5 + jz short loc_3A0F + mov ds, dx + mov ds, word_CF82 + cmp word_CF82, 0 + jz short loc_39EC + mov cs:word_39C7, ds + jmp short loc_3A24 +; --------------------------------------------------------------------------- + +loc_39EC: ; CODE XREF: sub_39D1+12j + mov ax, ds + cmp ax, cs:word_39C5 + jz short loc_3A0A + mov ax, off_CF88 + mov cs:word_39C7, ax + push ds + xor ax, ax + push ax + call sub_3AA5 + mov ds, cs:word_39CB + jmp short loc_3A2D +; --------------------------------------------------------------------------- + +loc_3A0A: ; CODE XREF: sub_39D1+22j + mov dx, cs:word_39C5 + +loc_3A0F: ; CODE XREF: sub_39D1+5j + mov cs:word_39C5, 0 + mov cs:word_39C7, 0 + mov cs:word_39C9, 0 + +loc_3A24: ; CODE XREF: sub_39D1+19j + mov ds, cs:word_39CB + push dx + xor ax, ax + push ax + +loc_3A2D: ; CODE XREF: sub_39D1+37j + call __brk + add sp, 4 + retn +sub_39D1 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3A34 proc near ; CODE XREF: sub_3B05:loc_3B22p + mov ds, dx + push ds + mov es, word_CF82 + mov word_CF82, 0 + mov off_CF88, es + cmp dx, cs:word_39C5 + jz short loc_3A7A + cmp word ptr es:2, 0 + jnz short loc_3A7A + mov ax, word_CF80 + pop bx + push es + add es:0, ax + mov cx, es + add dx, ax + mov es, dx + cmp word ptr es:2, 0 + jnz short loc_3A73 + mov es:8, cx + jmp short loc_3A7D +; --------------------------------------------------------------------------- + +loc_3A73: ; CODE XREF: sub_3A34+36j + mov es:2, cx + jmp short loc_3A7D +; --------------------------------------------------------------------------- + +loc_3A7A: ; CODE XREF: sub_3A34+16j sub_3A34+1Ej + call sub_3ACE + +loc_3A7D: ; CODE XREF: sub_3A34+3Dj sub_3A34+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_CF82, 0 + jz short loc_3A8F + retn +; --------------------------------------------------------------------------- + +loc_3A8F: ; CODE XREF: sub_3A34+58j + mov ax, word_CF80 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_CF80 + mov es, bx + mov es:2, ax +sub_3A34 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_3AA5 proc near ; CODE XREF: sub_39D1+2Fp sub_3C42+66p + mov bx, ds + cmp bx, word_CF86 + jz short loc_3AC6 + mov es, word_CF86 + mov ds, word_CF84 + mov word_CF86, es + mov word ptr es:4, ds + mov cs:word_39C9, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_3AC6: ; CODE XREF: sub_3AA5+6j + mov cs:word_39C9, 0 + retn +sub_3AA5 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3ACE proc near ; CODE XREF: sub_3A34:loc_3A7Ap + mov ax, cs:word_39C9 + or ax, ax + jz short loc_3AF7 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov word_CF84, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov word_CF86, es + retn +; --------------------------------------------------------------------------- + +loc_3AF7: ; CODE XREF: sub_3ACE+6j + mov cs:word_39C9, ds + mov word_CF84, ds + mov word_CF86, ds + retn +sub_3ACE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3B05 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_3CBF+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_39CB, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_3B25 + cmp dx, cs:word_39C7 + jnz short loc_3B22 + call sub_39D1 + jmp short loc_3B25 +; --------------------------------------------------------------------------- + +loc_3B22: ; CODE XREF: sub_3B05+16j + call sub_3A34 + +loc_3B25: ; CODE XREF: sub_3B05+Fj sub_3B05+1Bj + mov ds, cs:word_39CB + pop di + pop si + pop bp + retf +sub_3B05 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B2E proc near ; CODE XREF: sub_3C42:loc_3C97p + push ax + mov ds, cs:word_39CB + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_3B57 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_39CB + push ax + push dx + call __sbrk + add sp, 4 + +loc_3B57: ; CODE XREF: sub_3B2E+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_39CB + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3B8E + mov cs:word_39C5, dx + mov cs:word_39C7, dx + mov ds, dx + mov word_CF80, bx + mov word_CF82, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3B8E: ; CODE XREF: sub_3B2E+46j + xor ax, ax + cwd + retn +sub_3B2E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B92 proc near ; CODE XREF: sub_3C42:loc_3C92p + push ax + mov ds, cs:word_39CB + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_3BBA + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_39CB + push ax + push dx + call __sbrk + add sp, 4 + +loc_3BBA: ; CODE XREF: sub_3B92+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_39CB + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3C11 + and ax, 0Fh + jnz short loc_3BF6 + +loc_3BDE: ; CODE XREF: sub_3B92+7Dj + mov cx, cs:word_39C7 + mov cs:word_39C7, dx + mov ds, dx + mov word_CF80, bx + mov word_CF82, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3BF6: ; CODE XREF: sub_3B92+4Aj + push bx + push dx + neg ax + add ax, 10h + xor bx, bx + push bx + push ax + call __sbrk + add sp, 4 + pop dx + pop bx + cmp ax, 0FFFFh + jz short loc_3C11 + inc dx + jmp short loc_3BDE +; --------------------------------------------------------------------------- + +loc_3C11: ; CODE XREF: sub_3B92+45j sub_3B92+7Aj + xor ax, ax + cwd + retn +sub_3B92 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3C15 proc near ; CODE XREF: sub_3C42:loc_3C9Cp + mov bx, dx + sub word_CF80, ax + add dx, word_CF80 + mov ds, dx + mov word_CF80, ax + mov word_CF82, bx + mov bx, dx + add bx, word_CF80 + mov ds, bx + mov word_CF82, dx + mov ax, 4 + retn +sub_3C15 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C38 proc far ; CODE XREF: __DOSENV+83p + ; operator new(uint)+2Ep ... + +arg_2 = word ptr 6 + + push bp + mov bp, sp + xor dx, dx + mov ax, [bp+arg_2] + jmp short loc_3C4B +sub_3C38 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C42 proc far ; CODE XREF: sub_3CBF+Ep sub_3D9F+64p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + +loc_3C4B: ; CODE XREF: sub_3C38+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_39CB, ds + jz short loc_3CB6 + add ax, 13h + adc dx, 0 + jb short loc_3CA1 + test dx, 0FFF0h + jnz short loc_3CA1 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_39C5 + or dx, dx + jz short loc_3C97 + mov dx, cs:word_39C9 + or dx, dx + jz short loc_3C92 + mov bx, dx + +loc_3C82: ; CODE XREF: sub_3C42+4Ej + mov ds, dx + cmp word_CF80, ax + jnb short loc_3CA6 + mov dx, word_CF86 + cmp dx, bx + jnz short loc_3C82 + +loc_3C92: ; CODE XREF: sub_3C42+3Cj + call sub_3B92 + jmp short loc_3CB6 +; --------------------------------------------------------------------------- + +loc_3C97: ; CODE XREF: sub_3C42+33j + call sub_3B2E + jmp short loc_3CB6 +; --------------------------------------------------------------------------- + +loc_3C9C: ; CODE XREF: sub_3C42:loc_3CA6j + call sub_3C15 + jmp short loc_3CB6 +; --------------------------------------------------------------------------- + +loc_3CA1: ; CODE XREF: sub_3C42+1Cj sub_3C42+22j + xor ax, ax + cwd + jmp short loc_3CB6 +; --------------------------------------------------------------------------- + +loc_3CA6: ; CODE XREF: sub_3C42+46j + ja short loc_3C9C + call sub_3AA5 + mov bx, off_CF88 + mov word_CF82, bx + mov ax, offset word_CF84 + +loc_3CB6: ; CODE XREF: sub_3C42+14j sub_3C42+53j ... + mov ds, cs:word_39CB + pop di + pop si + pop bp + retf +sub_3C42 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3CBF proc near ; CODE XREF: sub_3D9F:loc_3DFBp + push bx + mov si, cs:word_39CD + push si + mov si, cs:word_39CF + push si + push cs + call near ptr sub_3C42 + add sp, 4 + or dx, dx + jnz short loc_3CD9 + pop bx + retn +; --------------------------------------------------------------------------- + +loc_3CD9: ; CODE XREF: sub_3CBF+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_CF80 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_3D2A + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_3CFD: ; CODE XREF: sub_3CBF+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_3D0C + mov cx, 1000h + +loc_3D0C: ; CODE XREF: sub_3CBF+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_3D2A + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + mov ax, ds + add ax, 1000h + mov ds, ax + assume ds:nothing + jmp short loc_3CFD +; --------------------------------------------------------------------------- + +loc_3D2A: ; CODE XREF: sub_3CBF+32j sub_3CBF+59j + mov ds, cs:word_39CB + assume ds:dseg + push cs + call near ptr sub_3B05 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_3CBF endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D3B proc near ; CODE XREF: sub_3D9F:loc_3DF6p + cmp bx, cs:word_39C7 + jz short loc_3D87 + mov di, bx + add di, ax + mov es, di + assume es:nothing + mov si, cx + sub si, ax + mov es:0, si + mov es:2, bx + push es + push ax + mov es, bx + mov es:0, ax + mov dx, bx + add dx, cx + mov es, dx + cmp word ptr es:2, 0 + jz short loc_3D73 + mov es:2, di + jmp short loc_3D78 +; --------------------------------------------------------------------------- + +loc_3D73: ; CODE XREF: sub_3D3B+2Fj + mov es:8, di + +loc_3D78: ; CODE XREF: sub_3D3B+36j + mov si, bx + push cs + call near ptr sub_3B05 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3D87: ; CODE XREF: sub_3D3B+5j + push bx + mov es, bx + mov es:0, ax + add bx, ax + push bx + xor ax, ax + push ax + call __brk + add sp, 4 + pop dx + mov ax, 4 + retn +sub_3D3B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3D9F proc far ; CODE XREF: sub_470F+2DDp + ; seg006:0751P ... + +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + xor dx, dx + jmp short loc_3DAC +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_3DAC: ; CODE XREF: sub_3D9F+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_39CB, ds + mov cs:word_39CD, dx + mov cs:word_39CF, ax + or bx, bx + jz short loc_3E00 + mov cx, ax + or cx, dx + jz short loc_3E0B + add ax, 13h + adc dx, 0 + jb short loc_3E14 + test dx, 0FFF0h + jnz short loc_3E14 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov es, bx + mov cx, es:0 + cmp cx, ax + jb short loc_3DFB + ja short loc_3DF6 + mov dx, bx + mov ax, 4 + jmp short loc_3E17 +; --------------------------------------------------------------------------- + +loc_3DF6: ; CODE XREF: sub_3D9F+4Ej + call sub_3D3B + jmp short loc_3E17 +; --------------------------------------------------------------------------- + +loc_3DFB: ; CODE XREF: sub_3D9F+4Cj + call sub_3CBF + jmp short loc_3E17 +; --------------------------------------------------------------------------- + +loc_3E00: ; CODE XREF: sub_3D9F+25j + push dx + push ax + push cs + call near ptr sub_3C42 + add sp, 4 + jmp short loc_3E17 +; --------------------------------------------------------------------------- + +loc_3E0B: ; CODE XREF: sub_3D9F+2Bj + push bx + push ax + push cs + call near ptr sub_3B05 + add sp, 4 + +loc_3E14: ; CODE XREF: sub_3D9F+33j sub_3D9F+39j + xor ax, ax + cwd + +loc_3E17: ; CODE XREF: sub_3D9F+55j sub_3D9F+5Aj ... + mov ds, cs:word_39CB + pop di + pop si + pop bp + retf +sub_3D9F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_3E20 proc near ; CODE XREF: __brk+31p __sbrk+74p + +newsize = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, [bp+arg_2] + inc ax + mov [bp+newsize], ax + mov ax, segx + sub [bp+newsize], ax + mov ax, [bp+newsize] + add ax, 3Fh ; '?' + mov cl, 6 + shr ax, cl + mov [bp+newsize], ax + cmp ax, word_DC26 + jz short loc_3E84 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_D00E + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_3E65 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_3E65: ; CODE XREF: sub_3E20+3Aj + push [bp+newsize] ; newsize + push segx ; _segx + nop + push cs + call near ptr _setblock + pop cx + pop cx + mov dx, ax + cmp dx, 0FFFFh + jnz short loc_3E96 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_DC26, ax + +loc_3E84: ; CODE XREF: sub_3E20+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_D00A, dx + mov word_D008, ax + mov ax, 1 + jmp short loc_3EA6 +; --------------------------------------------------------------------------- + +loc_3E96: ; CODE XREF: sub_3E20+58j + mov ax, segx + add ax, dx + mov word_D00E, ax + mov word_D00C, 0 + xor ax, ax + +loc_3EA6: ; CODE XREF: sub_3E20+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_3E20 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_39D1:loc_3A2Dp + ; sub_3D3B+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_D006 + mov bx, word_D004 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_3EE6 + mov cx, word_D00E + mov bx, word_D00C + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_3EE6 + push [bp+arg_2] + push [bp+arg_0] + call sub_3E20 + or ax, ax + jnz short loc_3EEB + +loc_3EE6: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_3EED +; --------------------------------------------------------------------------- + +loc_3EEB: ; CODE XREF: __brk+36j + xor ax, ax + +loc_3EED: ; CODE XREF: __brk+3Bj + pop di + pop si + pop bp + retn +__brk endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__sbrk proc near ; CODE XREF: sub_3B2E+Ap sub_3B2E+23p ... + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, word_D00A + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_D008 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_3F1C + jg short loc_3F6C + cmp ax, 0FFFFh + ja short loc_3F6C + +loc_3F1C: ; CODE XREF: __sbrk+22j + mov dx, word_D00A + mov ax, word_D008 + mov cx, [bp+arg_2] + mov bx, [bp+arg_0] + call near ptr N_PADD@ + mov [bp+var_2], dx + mov [bp+var_4], ax + mov cx, word_D006 + mov bx, word_D004 + call N_PCMP@ + jb short loc_3F6C + mov cx, word_D00E + mov bx, word_D00C + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_3F6C + mov dx, word_D00A + mov ax, word_D008 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_3E20 + or ax, ax + jnz short loc_3F74 + +loc_3F6C: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_3F7A +; --------------------------------------------------------------------------- + +loc_3F74: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_3F7A: ; CODE XREF: __sbrk+81j + pop di + pop si + mov sp, bp + pop bp + retn +__sbrk endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + push ax + push bx + push cx + push dx + push es + push ds + push si + push di + push bp + mov bp, seg dseg + mov ds, bp + mov bp, sp + sub sp, 4 + mov dx, word_DC34 + mov ax, word_DC32 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_3FA9 + cmp ax, 1 + jz short loc_3FE6 + +loc_3FA9: ; CODE XREF: seg000:3FA2j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_3FBD + cmp word ptr [bp-2], 0FFFFh + jnz short loc_3FC7 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_3FC7 + +loc_3FBD: ; CODE XREF: seg000:3FAFj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_3FC7: ; CODE XREF: seg000:3FB5j seg000:3FBBj + mov word_DC34, 0 + mov word_DC32, 0 + push ss + lea ax, [bp+0] + push ax + mov ax, 7Fh ; '' + push ax + mov ax, 8 + push ax + call dword ptr [bp-4] + add sp, 8 + +loc_3FE6: ; CODE XREF: seg000:3FA7j + mov sp, bp + pop bp + pop di + pop si + pop ds + pop es + pop dx + pop cx + pop bx + pop ax + iret +; --------------------------------------------------------------------------- + push ax + push bx + push cx + push dx + push es + push ds + push si + push di + push bp + mov bp, seg dseg + mov ds, bp + mov bp, sp + sub sp, 4 + mov dx, word_DC34 + mov ax, word_DC32 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_401B + cmp ax, 1 + jz short loc_4058 + +loc_401B: ; CODE XREF: seg000:4014j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_402F + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4039 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4039 + +loc_402F: ; CODE XREF: seg000:4021j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4039: ; CODE XREF: seg000:4027j seg000:402Dj + mov word_DC34, 0 + mov word_DC32, 0 + push ss + lea ax, [bp+0] + push ax + mov ax, 7Eh ; '~' + push ax + mov ax, 8 + push ax + call dword ptr [bp-4] + add sp, 8 + +loc_4058: ; CODE XREF: seg000:4019j + mov sp, bp + pop bp + pop di + pop si + pop ds + pop es + pop dx + pop cx + pop bx + pop ax + iret +; --------------------------------------------------------------------------- + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, seg dseg + mov ds, bp + mov bp, sp + sub sp, 4 + pushf + mov dx, word_DC2C + mov ax, word_DC2A + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_408F + cmp ax, 1 + jz short loc_40D4 + +loc_408F: ; CODE XREF: seg000:4088j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_40A3 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_40AD + cmp word ptr [bp-4], 0FFFFh + jnz short loc_40AD + +loc_40A3: ; CODE XREF: seg000:4095j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_40AD: ; CODE XREF: seg000:409Bj seg000:40A1j + mov word_DC2C, 0 + mov word_DC2A, 0 + push word_FC56 + push word_FC54 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _setvect + mov ax, 2 + push ax + call dword ptr [bp-4] + add sp, 8 + +loc_40D4: ; CODE XREF: seg000:408Dj + popf + clc + mov sp, bp + pop es + pop ds + pop di + pop si + pop bp + pop bx + pop bx + pop dx + pop cx + pop ax + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_40E3 proc far ; CODE XREF: seg000:412Cp sub_41EA+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_40EA: ; CODE XREF: sub_40E3+1Cj + mov bx, dx + mov al, [bx+0CC2h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_40FB + mov ax, dx + jmp short loc_4104 +; --------------------------------------------------------------------------- + +loc_40FB: ; CODE XREF: sub_40E3+12j + inc dx + cmp dx, 6 + jl short loc_40EA + mov ax, 0FFFFh + +loc_4104: ; CODE XREF: sub_40E3+16j + pop di + pop si + pop bp + retf +sub_40E3 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_DC29, 0 + jnz short loc_4128 + mov word_FC4E, seg seg000 + mov word_FC4C, 4108h + mov byte_DC29, 1 + +loc_4128: ; CODE XREF: seg000:4115j + push word ptr [bp+6] + push cs + call near ptr sub_40E3 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_4147 + mov word_CFFE, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_41E4 +; --------------------------------------------------------------------------- + +loc_4147: ; CODE XREF: seg000:4136j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+0CACh] + mov ax, [bx+0CAAh] + mov [bp-4], dx + mov [bp-6], ax + mov bx, [bp-2] + shl bx, cl + mov dx, [bp+0Ah] + mov ax, [bp+8] + mov [bx+0CACh], dx + mov [bx+0CAAh], ax + cmp word ptr [bp+6], 2 + jnz short loc_41B1 + cmp byte_DC28, 0 + jnz short loc_4192 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_FC56, dx + mov word_FC54, ax + mov byte_DC28, 1 + +loc_4192: ; CODE XREF: seg000:417Aj + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_41A4 + push word_FC56 + push word_FC54 + jmp short loc_41AC +; --------------------------------------------------------------------------- + +loc_41A4: ; CODE XREF: seg000:4198j + mov ax, seg seg000 + push ax + mov ax, 4064h + push ax + +loc_41AC: ; CODE XREF: seg000:41A2j + mov ax, 23h ; '#' + jmp short loc_41D5 +; --------------------------------------------------------------------------- + +loc_41B1: ; CODE XREF: seg000:4173j + cmp word ptr [bp+6], 8 + jnz short loc_41DE + mov ax, seg seg000 + push ax + mov ax, 3F80h + push ax + xor ax, ax + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + mov ax, seg seg000 + push ax + mov ax, 3FF2h + push ax + mov ax, 4 + +loc_41D5: ; CODE XREF: seg000:41AFj + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_41DE: ; CODE XREF: seg000:41B5j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_41E4: ; CODE XREF: seg000:4144j + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_41EA proc far ; CODE XREF: _abort+8p + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + push [bp+arg_0] + push cs + call near ptr sub_40E3 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_4207 + mov ax, 1 + jmp short loc_427B +; --------------------------------------------------------------------------- + +loc_4207: ; CODE XREF: sub_41EA+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+0CACh] + mov ax, [bx+0CAAh] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_4225 + cmp ax, 1 + jz short loc_4279 + +loc_4225: ; CODE XREF: sub_41EA+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_4254 + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_423F + cmp ax, 16h + jnz short loc_4248 + nop + push cs + call near ptr sub_2CE4 +; --------------------------------------------------------------------------- + +loc_423F: ; CODE XREF: sub_41EA+49j + xor ax, ax + int 23h ; DOS - CONTROL "C" EXIT ADDRESS + ; Return: return via RETF 2 with CF set + ; DOS will abort program with errorlevel 0 + ; else + ; interrupted DOS call continues + mov ax, 4C03h + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) + ; AL = exit code +; --------------------------------------------------------------------------- + +loc_4248: ; CODE XREF: sub_41EA+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_4279 +; --------------------------------------------------------------------------- + +loc_4254: ; CODE XREF: sub_41EA+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+0CACh], 0 + mov word ptr [bx+0CAAh], 0 + mov bx, [bp+var_2] + mov al, [bx+0CC8h] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_4279: ; CODE XREF: sub_41EA+39j sub_41EA+68j + xor ax, ax + +loc_427B: ; CODE XREF: sub_41EA+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_41EA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _access(char *pathname, char) +__access proc far ; CODE XREF: sub_4C57+A8p sub_92C0+72p + +pathname = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + push si + push di + xor ax, ax + push ax ; func + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + nop + push cs + call near ptr __chmod + add sp, 6 + mov dx, ax + cmp dx, 0FFFFh + jnz short loc_42A0 + jmp short loc_42B8 +; --------------------------------------------------------------------------- + +loc_42A0: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_42AB + test dl, 1 + jnz short loc_42AF + +loc_42AB: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_42B8 +; --------------------------------------------------------------------------- + +loc_42AF: ; CODE XREF: __access+28j + mov word_CFFE, 5 + mov ax, 0FFFFh + +loc_42B8: ; CODE XREF: __access+1Dj __access+2Cj + pop di + pop si + pop bp + retf +__access endp + +; --------------------------------------------------------------------------- + db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 1Eh, 6, 8Bh + db 0ECh, 0A1h, 0CEh, 0Ch, 0Bh, 6, 0D0h, 0Ch, 75h, 27h + db 0BEh, 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h + db 8Ch, 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h + db 5, 83h, 0FEh, 0FFh, 75h, 6, 0BEh, 0D2h, 0Ch, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_DC4E, si + mov word ptr dword_DC4E+2, ax + mov sp, bp + pop es + pop ds + pop di + pop si + pop bp + pop bx + pop bx + pop dx + pop cx + pop ax + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4305 proc near ; CODE XREF: sub_432A+35p + ; sub_470F+284p ... + +arg_2 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov al, [bp+arg_2] + xor cx, cx + les bx, dword_DC4E + +loc_4313: ; CODE XREF: sub_4320+2j + mov dx, es:[bx] + or dx, dx + jz short loc_4325 + cmp al, dl + jb short loc_4325 + inc bx + inc bx +sub_4305 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc far ; CODE XREF: sub_603A+7Bp sub_603A+9Ap ... + cmp al, dh + ja short loc_4313 + inc cx + +loc_4325: ; CODE XREF: sub_4305+13j sub_4305+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_4320 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_432A proc far ; CODE XREF: sub_46D5+23p + ; sub_470F+1AEp ... + +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, 4 + push si + push di + xor cx, cx + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_4340: ; CODE XREF: sub_432A+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_434D + xor cx, cx + jmp short loc_437B +; --------------------------------------------------------------------------- + +loc_434D: ; CODE XREF: sub_432A+1Dj + cmp cx, 1 + jnz short loc_4357 + mov cx, 2 + jmp short loc_436E +; --------------------------------------------------------------------------- + +loc_4357: ; CODE XREF: sub_432A+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call sub_4305 + pop cx + or ax, ax + jz short loc_436C + mov cx, 1 + jmp short loc_436E +; --------------------------------------------------------------------------- + +loc_436C: ; CODE XREF: sub_432A+3Bj + xor cx, cx + +loc_436E: ; CODE XREF: sub_432A+2Bj sub_432A+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_437B + inc word ptr [bp+var_4] + jmp short loc_4340 +; --------------------------------------------------------------------------- + +loc_437B: ; CODE XREF: sub_432A+21j sub_432A+4Aj + or cx, cx + jnz short loc_4384 + mov ax, 1 + jmp short loc_4386 +; --------------------------------------------------------------------------- + +loc_4384: ; CODE XREF: sub_432A+53j + xor ax, ax + +loc_4386: ; CODE XREF: sub_432A+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_432A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int _chmod(const char *pathname, int func, ...) +__chmod proc far ; CODE XREF: __access+10p + +pathname = dword ptr 6 +func = byte ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push ds + mov cx, [bp+arg_6] + mov ah, 43h ; 'C' + mov al, [bp+func] + lds dx, [bp+pathname] + int 21h ; DOS - + pop ds + jb short loc_43A5 + xchg ax, cx + jmp short loc_43A9 +; --------------------------------------------------------------------------- + +loc_43A5: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_43A9: ; CODE XREF: __chmod+17j + pop di + pop si + pop bp + retf +__chmod endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl fflush(FILE *stream) +_fflush proc far ; CODE XREF: _flushall+2Dp _fseek+Dp ... + +var_2 = word ptr -2 +stream = dword ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, word ptr [bp+stream] + or ax, word ptr [bp+stream+2] + jnz short loc_43C5 + nop + push cs + call near ptr _flushall + jmp loc_4476 +; --------------------------------------------------------------------------- + +loc_43C5: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_43D4 + jmp loc_4471 +; --------------------------------------------------------------------------- + +loc_43D4: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_442B + test byte ptr es:[bx+2], 8 + jnz short loc_43FC + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_43F6 + jmp loc_4476 +; --------------------------------------------------------------------------- + +loc_43F6: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_4476 + +loc_43FC: ; CODE XREF: _fflush+35j + les bx, [bp+stream] + mov word ptr es:[bx], 0 + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jnz short loc_4476 + cmp es:[bx+0Ch], ax + jnz short loc_4476 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_4476 +; --------------------------------------------------------------------------- + +loc_442B: ; CODE XREF: _fflush+2Ej + les bx, [bp+stream] + mov ax, es:[bx+6] + add ax, es:[bx] + inc ax + mov [bp+var_2], ax + sub es:[bx], ax + push ax ; len + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + push dx + push ax ; buf + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr ___write + add sp, 8 + cmp ax, [bp+var_2] + jz short loc_4476 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_4476 + or word ptr es:[bx+2], 10h + +loc_4471: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_4478 +; --------------------------------------------------------------------------- + +loc_4476: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_4478: ; CODE XREF: _fflush+C7j + pop di + pop si + mov sp, bp + pop bp + retf +_fflush endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int flushall(void) +_flushall proc far ; CODE XREF: ___call_terminate+18p + ; _fflush+12p + +var_8 = word ptr -8 +var_6 = word ptr -6 +stream = dword ptr -4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov [bp+var_8], 0 + mov ax, word_D95A + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 84Ah + jmp short loc_44B7 +; --------------------------------------------------------------------------- + +loc_449B: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_44B3 + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + inc [bp+var_8] + +loc_44B3: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_44B7: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_449B + mov ax, [bp+var_8] + pop di + pop si + mov sp, bp + pop bp + retf +_flushall endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_44CA proc near ; CODE XREF: _fseek+2Ep _ftell+B9p ... + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, [bp+arg_0] + cmp word ptr es:[bx], 0 + jge short loc_44E7 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_44F4 +; --------------------------------------------------------------------------- + +loc_44E7: ; CODE XREF: sub_44CA+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_44F4: ; CODE XREF: sub_44CA+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short sub_4548 + les bx, [bp+arg_0] + mov dx, es:[bx+0Eh] + mov ax, es:[bx+0Ch] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + cmp word ptr es:[bx], 0 + jge short loc_4541 + jmp short loc_4529 +; --------------------------------------------------------------------------- + +loc_451A: ; CODE XREF: sub_44CA+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4529 + inc [bp+var_2] + +loc_4529: ; CODE XREF: sub_44CA+4Ej sub_44CA+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_451A + jmp short sub_4548 +; --------------------------------------------------------------------------- + +loc_4532: ; CODE XREF: sub_44CA+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4541 + inc [bp+var_2] + +loc_4541: ; CODE XREF: sub_44CA+4Cj sub_44CA+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_4532 +sub_44CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4548 proc near ; CODE XREF: sub_44CA+35j sub_44CA+66j ... + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_4548 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl fseek(FILE *stream, __int32 offset, int whence) +_fseek proc far ; CODE XREF: _setvbuf+68p + +stream = dword ptr 6 +_offset = dword ptr 0Ah +whence = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push word ptr [bp+stream+2] + push word ptr [bp+stream] ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + or ax, ax + jz short loc_456E + mov ax, 0FFFFh + jmp short loc_45D1 +; --------------------------------------------------------------------------- + +loc_456E: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_458B + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_458B + push word ptr [bp+stream+2] + push bx + call sub_44CA + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_458B: ; CODE XREF: _fseek+1Fj _fseek+28j + les bx, [bp+stream] + and word ptr es:[bx+2], 0FE5Fh + mov word ptr es:[bx], 0 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + push [bp+whence] ; fromwhere + push word ptr [bp+_offset+2] + push word ptr [bp+_offset] ; offset + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + cmp dx, 0FFFFh + jnz short loc_45CF + cmp ax, 0FFFFh + jnz short loc_45CF + mov ax, 0FFFFh + jmp short loc_45D1 +; --------------------------------------------------------------------------- + +loc_45CF: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_45D1: ; CODE XREF: _fseek+19j _fseek+7Aj + pop di + pop si + pop bp + retf +_fseek endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __int32 __cdecl ftell(FILE *stream) +_ftell proc far + +var_8 = word ptr -8 +var_6 = word ptr -6 +_offset = dword ptr -4 +stream = dword ptr 6 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, 1 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + les bx, [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov word ptr [bp+_offset+2], dx + mov word ptr [bp+_offset], ax + cmp dx, 0FFFFh + jnz short loc_4609 + cmp ax, 0FFFFh + jnz short loc_4609 + jmp loc_46AA +; --------------------------------------------------------------------------- + +loc_4609: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_4615 + jmp loc_469A +; --------------------------------------------------------------------------- + +loc_4615: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+9DDh], 8 + jz short loc_4688 + mov ax, 2 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + mov bx, word ptr [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov [bp+var_6], dx + mov [bp+var_8], ax + cmp dx, 0FFFFh + jnz short loc_4650 + cmp ax, 0FFFFh + jnz short loc_4650 + jmp short loc_46B0 +; --------------------------------------------------------------------------- + +loc_4650: ; CODE XREF: _ftell+72j _ftell+77j + xor ax, ax + push ax ; fromwhere + push word ptr [bp+_offset+2] + push word ptr [bp+_offset] ; offset + les bx, [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + cmp dx, 0FFFFh + jnz short loc_467C + cmp ax, 0FFFFh + jnz short loc_467C + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_46B0 +; --------------------------------------------------------------------------- + +loc_467C: ; CODE XREF: _ftell+98j _ftell+9Dj + mov dx, [bp+var_6] + mov ax, [bp+var_8] + mov word ptr [bp+_offset+2], dx + mov word ptr [bp+_offset], ax + +loc_4688: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_44CA + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_46AA +; --------------------------------------------------------------------------- + +loc_469A: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_44CA + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_46AA: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_46B0: ; CODE XREF: _ftell+79j _ftell+A5j + pop di + pop si + mov sp, bp + pop bp + retf +_ftell endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_46B6 proc near ; CODE XREF: sub_46D5+Ep sub_470F+7Dp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + cmp ax, 5Ch ; '\' + jz short loc_46C8 + cmp ax, 2Fh ; '/' + jnz short loc_46CD + +loc_46C8: ; CODE XREF: sub_46B6+Bj + mov ax, 1 + jmp short loc_46CF +; --------------------------------------------------------------------------- + +loc_46CD: ; CODE XREF: sub_46B6+10j + xor ax, ax + +loc_46CF: ; CODE XREF: sub_46B6+15j + pop di + pop si + pop bp + retn 2 +sub_46B6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_46D5 proc near ; CODE XREF: sub_470F+CDp + ; sub_470F+15Bp ... + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + les bx, [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + push ax + call sub_46B6 + or ax, ax + jz short loc_4707 + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + nop + push cs + call near ptr sub_432A + add sp, 8 + or ax, ax + jz short loc_4707 + mov ax, 1 + jmp short loc_4709 +; --------------------------------------------------------------------------- + +loc_4707: ; CODE XREF: sub_46D5+13j sub_46D5+2Bj + xor ax, ax + +loc_4709: ; CODE XREF: sub_46D5+30j + pop di + pop si + pop bp + retn 8 +sub_46D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_470F proc far ; CODE XREF: sub_4C57+10Dp + +drive = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +src = dword ptr -0Ch +dest = dword ptr -8 +s = 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 + + push bp + mov bp, sp + sub sp, 12h + push si + push di + mov ax, 0A1h ; '¡' + push ax + nop + push cs + call near ptr sub_3C38 + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_472E + jmp loc_4971 +; --------------------------------------------------------------------------- + +loc_472E: ; CODE XREF: sub_470F+1Aj + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + les bx, [bp+src] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0A7Bh], 0Ch + jz short loc_476E + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_476E + mov al, es:[bx] + cbw + mov [bp+var_10], ax + push ax ; ch + nop + push cs + call near ptr _toupper + pop cx + add ax, 0FFC0h + mov [bp+drive], ax + add word ptr [bp+src], 2 + jmp short loc_4784 +; --------------------------------------------------------------------------- + +loc_476E: ; CODE XREF: sub_470F+39j sub_470F+43j + push ss + lea ax, [bp+drive] + push ax ; drive + nop + push cs + call near ptr __dos_getdrive + pop cx + pop cx + mov ax, [bp+drive] + add ax, 41h ; 'A' + dec ax + mov [bp+var_10], ax + +loc_4784: ; CODE XREF: sub_470F+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_46B6 + or ax, ax + jnz short loc_47EC + mov ax, 0A1h ; '¡' + push ax ; len + push word ptr [bp+s+2] + push word ptr [bp+s] ; buf + push [bp+drive] ; drive + nop + push cs + call near ptr __getdcwd + add sp, 8 + or ax, dx + jnz short loc_47BC + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + jmp loc_4971 +; --------------------------------------------------------------------------- + +loc_47BC: ; CODE XREF: sub_470F+9Bj + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov dx, word ptr [bp+s+2] + add ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + push dx + push word ptr [bp+s] + dec ax + push dx + push ax + call sub_46D5 + or ax, ax + jnz short loc_480E + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_480B +; --------------------------------------------------------------------------- + +loc_47EC: ; CODE XREF: sub_470F+82j + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov al, byte ptr [bp+var_10] + mov es:[bx], al + inc word ptr [bp+dest] + les bx, [bp+dest] + mov byte ptr es:[bx], 3Ah ; ':' + +loc_480B: ; CODE XREF: sub_470F+DBj + inc word ptr [bp+dest] + +loc_480E: ; CODE XREF: sub_470F+D2j + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + +loc_4834: ; CODE XREF: sub_470F+28Cj + ; sub_470F+298j ... + les bx, [bp+src] + inc word ptr [bp+src] + mov al, es:[bx] + cbw + mov [bp+var_E], ax + or ax, ax + jz short loc_4850 + push ax + call sub_46B6 + or ax, ax + jnz short loc_4850 + jmp loc_4982 +; --------------------------------------------------------------------------- + +loc_4850: ; CODE XREF: sub_470F+134j + ; sub_470F+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4877 + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFEh + push word ptr [bp+dest+2] + push ax + call sub_46D5 + or ax, ax + jz short loc_4877 + sub word ptr [bp+dest], 2 + jmp short loc_48EE +; --------------------------------------------------------------------------- + +loc_4877: ; CODE XREF: sub_470F+149j + ; sub_470F+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_48EE + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_48EE + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFDh + push word ptr [bp+dest+2] + push ax + call sub_46D5 + or ax, ax + jz short loc_48EE + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_48D7 + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_432A + add sp, 8 + or ax, ax + jz short loc_48D7 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + jmp loc_4971 +; --------------------------------------------------------------------------- + +loc_48D7: ; CODE XREF: sub_470F+19Cj + ; sub_470F+1B6j ... + push word ptr [bp+s+2] + push word ptr [bp+s] + dec word ptr [bp+dest] + mov ax, word ptr [bp+dest] + push word ptr [bp+dest+2] + push ax + call sub_46D5 + or ax, ax + jz short loc_48D7 + +loc_48EE: ; CODE XREF: sub_470F+166j + ; sub_470F+170j ... + cmp [bp+var_E], 0 + jz short loc_48F7 + jmp loc_4977 +; --------------------------------------------------------------------------- + +loc_48F7: ; CODE XREF: sub_470F+1E3j + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + call sub_46D5 + or ax, ax + jz short loc_490F + dec word ptr [bp+dest] + +loc_490F: ; CODE XREF: sub_470F+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_493D + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_432A + add sp, 8 + or ax, ax + jz short loc_493D + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_493D: ; CODE XREF: sub_470F+208j + ; sub_470F+222j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov dx, ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_495F + jmp loc_49E3 +; --------------------------------------------------------------------------- + +loc_495F: ; CODE XREF: sub_470F+24Bj + cmp dx, [bp+arg_8] + jbe short loc_49BC + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + +loc_4971: ; CODE XREF: sub_470F+1Cj sub_470F+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_49F2 +; --------------------------------------------------------------------------- + +loc_4977: ; CODE XREF: sub_470F+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_49B6 +; --------------------------------------------------------------------------- + +loc_4982: ; CODE XREF: sub_470F+13Ej + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + inc word ptr [bp+dest] + push [bp+var_E] + nop + push cs + call sub_4305 + pop cx + or ax, ax + jnz short loc_499E + jmp loc_4834 +; --------------------------------------------------------------------------- + +loc_499E: ; CODE XREF: sub_470F+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_49AA + jmp loc_4834 +; --------------------------------------------------------------------------- + +loc_49AA: ; CODE XREF: sub_470F+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_49B6: ; CODE XREF: sub_470F+271j + inc word ptr [bp+dest] + jmp loc_4834 +; --------------------------------------------------------------------------- + +loc_49BC: ; CODE XREF: sub_470F+253j + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push [bp+arg_2] + push [bp+arg_0] ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B05 + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_49F2 +; --------------------------------------------------------------------------- + +loc_49E3: ; CODE XREF: sub_470F+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3D9F + add sp, 6 + +loc_49F2: ; CODE XREF: sub_470F+266j + ; sub_470F+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_470F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl _getdcwd(int drive, char *buf, int len) +__getdcwd proc far ; CODE XREF: sub_470F+93p sub_4C57+17p + +s = byte ptr -48h +var_47 = byte ptr -47h +var_46 = byte ptr -46h +var_45 = byte ptr -45h +var_2 = word ptr -2 +drive = word ptr 6 +dest = dword ptr 8 +len = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 48h + push si + push di + mov ax, [bp+drive] + mov [bp+var_2], ax + or ax, ax + jnz short loc_4A14 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_4A14: ; CODE XREF: __getdcwd+10j + mov al, byte ptr [bp+var_2] + add al, 40h ; '@' + mov [bp+s], al + mov [bp+var_47], 3Ah ; ':' + mov [bp+var_46], 5Ch ; '\' + push ds + mov ax, ss + mov ds, ax + lea si, [bp+var_45] + mov ah, 47h ; 'G' + mov dl, byte ptr [bp+var_2] + int 21h ; DOS - 2+ - GET CURRENT DIRECTORY + ; DL = drive (0=default, 1=A, etc.) + ; DS:SI points to 64-byte buffer area + pop ds + jb short loc_4A70 + push ss + lea ax, [bp+s] + push ax ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + cmp ax, [bp+len] + jb short loc_4A4F + mov word_CFFE, 22h ; '"' + jmp short loc_4A70 +; --------------------------------------------------------------------------- + +loc_4A4F: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_4A76 + push [bp+len] + nop + push cs + call near ptr sub_3C38 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4A76 + mov word_CFFE, 8 + +loc_4A70: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_4A8F +; --------------------------------------------------------------------------- + +loc_4A76: ; CODE XREF: __getdcwd+5Dj + ; __getdcwd+70j + push ss + lea ax, [bp+s] + push ax ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + +loc_4A8F: ; CODE XREF: __getdcwd+7Cj + pop di + pop si + mov sp, bp + pop bp + retf +__getdcwd endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl getenv(const char *name) +_getenv proc far ; CODE XREF: __searchenv+10p + ; sub_9349+126p + +var_4 = dword ptr -4 +_name = dword ptr 6 + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les di, [bp+_name] + mov ax, es + or ax, di + jz short loc_4AC6 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_4AC6 + les di, dword_DC7A + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_4AD3 + +loc_4AC6: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_4AFF +; --------------------------------------------------------------------------- + +loc_4ACC: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_4AD3: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_4AC6 + mov al, es:[di] + or al, al + jz short loc_4AC6 + cmp ah, al + jnz short loc_4ACC + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_4ACC + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_4ACC + inc di + mov ax, di + mov dx, es + +loc_4AFF: ; CODE XREF: _getenv+35j + pop di + pop si + mov sp, bp + pop bp + retf +_getenv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl memcmp(const void *s1, const void *s2, size_t n) +_memcmp proc far ; CODE XREF: __CurrExcContext+39p + +s1 = dword ptr 6 +s2 = dword ptr 0Ah +n = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push ds + mov ax, [bp+n] + mov cx, ax + jcxz short loc_4B26 + lds si, [bp+s1] + les di, [bp+s2] + cld + repe cmpsb + mov al, [si-1] + xor ah, ah + mov cl, es:[di-1] + xor ch, ch + +loc_4B26: ; CODE XREF: _memcmp+Bj + pop ds + sub ax, cx + pop di + pop si + pop bp + retf +_memcmp endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void *__cdecl memcpy(void *dest, const void *src, size_t n) +_memcpy proc far ; CODE XREF: _stpcpy+28p sub_6311+223p ... + +dest = dword ptr 6 +src = dword ptr 0Ah +n = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + mov dx, ds + les di, [bp+dest] + lds si, [bp+src] + mov cx, [bp+n] + shr cx, 1 + cld + rep movsw + jnb short loc_4B45 + movsb + +loc_4B45: ; CODE XREF: _memcpy+15j + mov ds, dx + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_memcpy endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl setmem(void *dest, unsigned int length, char value) +_setmem proc far ; CODE XREF: _memset+12p + +dest = dword ptr 6 +_length = word ptr 0Ah +value = byte ptr 0Ch + + push bp + mov bp, sp + push si + push di + les di, [bp+dest] + mov cx, [bp+_length] + mov al, [bp+value] + mov ah, al + cld + test di, 1 + jz short loc_4B6C + jcxz short loc_4B73 + stosb + dec cx + +loc_4B6C: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_4B73 + stosb + +loc_4B73: ; CODE XREF: _setmem+17j _setmem+1Fj + pop di + pop si + pop bp + retf +_setmem endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void *__cdecl memset(void *s, int c, size_t n) +_memset proc far ; CODE XREF: sub_6FBD+CFp seg006:09D5P + +dest = dword ptr 6 +value = byte ptr 0Ah +_length = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push word ptr [bp+value] ; value + push [bp+_length] ; length + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + push cs + call near ptr _setmem + add sp, 8 + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_memset endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl movmem(const void *src, void *dest, unsigned int length) +_movmem proc far ; CODE XREF: _memmove+15p + +src = dword ptr 6 +dest = dword ptr 0Ah +_length = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push ds + mov cx, word ptr [bp+dest+2] + mov bx, word ptr [bp+dest] + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + call N_PCMP@ + jnb short loc_4BB6 + std + mov ax, 1 + jmp short loc_4BB9 +; --------------------------------------------------------------------------- + +loc_4BB6: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_4BB9: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_4BCC + add si, cx + dec si + add di, cx + dec di + +loc_4BCC: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_4BD6 + jcxz short loc_4BE5 + movsb + dec cx + +loc_4BD6: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_4BE5 + add si, ax + add di, ax + movsb + +loc_4BE5: ; CODE XREF: _movmem+39j _movmem+45j + cld + pop ds + pop di + pop si + pop bp + retf +_movmem endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void *__cdecl memmove(void *dest, const void *src, size_t n) +_memmove proc far ; CODE XREF: seg006:0991P seg006:09BAP + +dest = dword ptr 6 +src = dword ptr 0Ah +_length = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push [bp+_length] ; length + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push cs + call near ptr _movmem + add sp, 0Ah + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_memmove endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl _searchenv(const char *file, const char *varname, char *pathname) +__searchenv proc far ; CODE XREF: sub_92C0+43p + +var_4 = dword ptr -4 +src = dword ptr 6 +varname = dword ptr 0Ah +pathname = dword ptr 0Eh + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push word ptr [bp+varname+2] + push word ptr [bp+varname] ; name + nop + push cs + call near ptr _getenv + pop cx + pop cx + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + or ax, dx + jnz short loc_4C37 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0CDEh + +loc_4C37: ; CODE XREF: __searchenv+1Dj + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] ; __int32 + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + nop + push cs + call near ptr sub_4C57 + add sp, 0Ch + pop di + pop si + mov sp, bp + pop bp + retf +__searchenv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_4C57(char *src, __int32, char *pathname) +sub_4C57 proc far ; CODE XREF: __searchenv+3Bp + +var_4 = word ptr -4 +var_2 = word ptr -2 +src = dword ptr 6 +arg_4 = dword ptr 0Ah +pathname = dword ptr 0Eh + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, 50h ; 'P' + push ax ; len + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; buf + xor ax, ax + push ax ; drive + nop + push cs + call near ptr __getdcwd + add sp, 8 + or ax, dx + jnz short loc_4C7C + xor dx, dx + jmp short loc_4C8B +; --------------------------------------------------------------------------- + +loc_4C7C: ; CODE XREF: sub_4C57+1Fj + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov dx, ax + +loc_4C8B: ; CODE XREF: sub_4C57+23j sub_4C57+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_4CE0 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_4CB1 + cmp bl, 2Fh ; '/' + jz short loc_4CB1 + cmp bl, 3Ah ; ':' + jnz short loc_4CCD + +loc_4CB1: ; CODE XREF: sub_4C57+4Ej sub_4C57+53j + mov ax, word ptr [bp+pathname] + add ax, dx + dec ax + push word ptr [bp+pathname+2] + push ax + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] + nop + push cs + call near ptr sub_432A + add sp, 8 + or ax, ax + jnz short loc_4CE0 + +loc_4CCD: ; CODE XREF: sub_4C57+58j + push ds + mov ax, 0CE0h + push ax ; src + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; dest + nop + push cs + call near ptr _strcat + add sp, 8 + +loc_4CE0: ; CODE XREF: sub_4C57+3Fj sub_4C57+74j + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; dest + nop + push cs + call near ptr _strcat + add sp, 8 + xor ax, ax + push ax ; char + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + nop + push cs + call near ptr __access + add sp, 6 + or ax, ax + jz short loc_4D54 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4D1B + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_4D93 +; --------------------------------------------------------------------------- + +loc_4D1B: ; CODE XREF: sub_4C57+B9j + xor dx, dx + jmp short loc_4D33 +; --------------------------------------------------------------------------- + +loc_4D1F: ; CODE XREF: sub_4C57+E9j + les bx, [bp+pathname] + add bx, dx + push es + les si, [bp+arg_4] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+arg_4] + inc dx + +loc_4D33: ; CODE XREF: sub_4C57+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_4D42 + cmp byte ptr es:[bx], 0 + jnz short loc_4D1F + +loc_4D42: ; CODE XREF: sub_4C57+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4D4E + jmp loc_4C8B +; --------------------------------------------------------------------------- + +loc_4D4E: ; CODE XREF: sub_4C57+F2j + inc word ptr [bp+arg_4] + jmp loc_4C8B +; --------------------------------------------------------------------------- + +loc_4D54: ; CODE XREF: sub_4C57+B0j + mov ax, 50h ; 'P' + push ax + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] + xor ax, ax + push ax + push ax + nop + push cs + call near ptr sub_470F + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_4D93 + push [bp+var_2] + push [bp+var_4] ; src + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; dest + nop + push cs + call near ptr _strcpy + push [bp+var_2] + push [bp+var_4] + nop + push cs + call near ptr sub_3B05 + add sp, 0Ch + +loc_4D93: ; CODE XREF: sub_4C57+C2j + ; sub_4C57+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4C57 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl setvbuf(FILE *stream, char *buf, int type, size_t size) +_setvbuf proc far ; CODE XREF: seg000:35DFp seg000:3618p + +stream = dword ptr 6 +buf = dword ptr 0Ah +_type = word ptr 0Eh +_size = word ptr 10h + + push bp + mov bp, sp + push si + push di + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_4DAD + jmp loc_4E84 +; --------------------------------------------------------------------------- + +loc_4DAD: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_4DB6 + jmp loc_4E84 +; --------------------------------------------------------------------------- + +loc_4DB6: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_4DC0 + jmp loc_4E84 +; --------------------------------------------------------------------------- + +loc_4DC0: ; CODE XREF: _setvbuf+22j + cmp word_DC64, 0 + jnz short loc_4DD6 + cmp word ptr [bp+stream], 85Eh + jnz short loc_4DD6 + mov word_DC64, 1 + jmp short loc_4DEA +; --------------------------------------------------------------------------- + +loc_4DD6: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_DC62, 0 + jnz short loc_4DEA + cmp word ptr [bp+stream], 84Ah + jnz short loc_4DEA + mov word_DC62, 1 + +loc_4DEA: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_4E07 + mov ax, 1 + push ax ; whence + xor ax, ax + push ax + push ax ; offset + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fseek + add sp, 0Ah + +loc_4E07: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_4E20 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + +loc_4E20: ; CODE XREF: _setvbuf+76j + les bx, [bp+stream] + and word ptr es:[bx+2], 0FFF3h + mov word ptr es:[bx+6], 0 + mov dx, word ptr [bp+stream+2] + mov ax, word ptr [bp+stream] + add ax, 5 + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + cmp [bp+_type], 2 + jz short loc_4EB4 + cmp [bp+_size], 0 + jbe short loc_4EB4 + mov word ptr off_D7BE+2, seg seg000 + mov word ptr off_D7BE, 51C2h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_4E89 + push [bp+_size] + nop + push cs + call near ptr sub_3C38 + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_4E84 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_4E89 +; --------------------------------------------------------------------------- + +loc_4E84: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_4EB6 +; --------------------------------------------------------------------------- + +loc_4E89: ; CODE XREF: _setvbuf+CCj _setvbuf+E9j + les bx, [bp+stream] + mov dx, word ptr [bp+buf+2] + mov ax, word ptr [bp+buf] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + mov ax, [bp+_size] + mov es:[bx+6], ax + cmp [bp+_type], 1 + jnz short loc_4EB4 + or word ptr es:[bx+2], 8 + +loc_4EB4: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_4EB6: ; CODE XREF: _setvbuf+EEj + pop di + pop si + pop bp + retf +_setvbuf endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl strcat(char *dest, const char *src) +_strcat proc far ; CODE XREF: sub_4C57+83p sub_4C57+97p ... + +dest = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + cld + push ds + les di, [bp+dest] + mov dx, di + xor al, al + mov cx, 0FFFFh + repne scasb + push es + lea si, [di-1] + les di, [bp+src] + mov cx, 0FFFFh + repne scasb + not cx + sub di, cx + push es + pop ds + pop es + xchg si, di + test si, 1 + jz short loc_4EEA + movsb + dec cx + +loc_4EEA: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_4EF1 + movsb + +loc_4EF1: ; CODE XREF: _strcat+34j + xchg ax, dx + mov dx, es + pop ds + pop di + pop si + pop bp + retf +_strcat endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl strcmp(const char *s1, const char *s2) +_strcmp proc far ; CODE XREF: typeinfo::before(typeinfo &)+61p + +s1 = dword ptr 6 +s2 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, ds + cld + xor ax, ax + mov bx, ax + les di, [bp+s2] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + mov di, si + lds si, [bp+s1] + repe cmpsb + mov al, [si-1] + mov bl, es:[di-1] + sub ax, bx + mov ds, dx + pop di + pop si + pop bp + retf +_strcmp endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl strcpy(char *dest, const char *src) +_strcpy proc far ; CODE XREF: sub_470F+10Dp + ; sub_470F+2BBp ... + +dest = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + cld + les di, [bp+src] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + push ds + mov ax, es + mov ds, ax + les di, [bp+dest] + rep movsb + pop ds + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_strcpy endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl stricmp(const char *s1, const char *s2) +_stricmp proc far ; CODE XREF: sub_9349+9Cp + +s1 = dword ptr 6 +s2 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, ds + cld + lds si, [bp+s1] + les di, [bp+s2] + xor ax, ax + mov bx, ax + mov cx, 617Ah + +loc_4F67: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_4F8B + scasb + jz short loc_4F67 + cmp al, ch + jb short loc_4F7C + cmp al, cl + ja short loc_4F7C + sub al, 20h ; ' ' + +loc_4F7C: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_4F87 + cmp bl, cl + ja short loc_4F87 + sub bl, 20h ; ' ' + +loc_4F87: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_4F67 + +loc_4F8B: ; CODE XREF: _stricmp+1Bj + sub ax, bx + mov ds, dx + pop di + pop si + pop bp + retf +_stricmp endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; size_t __cdecl strlen(const char *s) +_strlen proc far ; CODE XREF: _stpcpy+10p __DOSENV+34p ... + +s = dword ptr 6 + + push bp + mov bp, sp + push si + push di + les di, [bp+s] + xor ax, ax + cmp ax, word ptr [bp+s+2] + jnz short loc_4FA6 + cmp ax, di + jz short loc_4FB0 + +loc_4FA6: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_4FB0: ; CODE XREF: _strlen+11j + pop di + pop si + pop bp + retf +_strlen endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_4FB4(char *s, char) +sub_4FB4 proc far ; CODE XREF: sub_9349+5Ap + +var_4 = dword ptr -4 +s = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 4 + push si + push di + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov cx, ax + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + add ax, cx + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + jmp short loc_4FF3 +; --------------------------------------------------------------------------- + +loc_4FDC: ; CODE XREF: sub_4FB4+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_4FF2 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_4FFB +; --------------------------------------------------------------------------- + +loc_4FF2: ; CODE XREF: sub_4FB4+34j + dec cx + +loc_4FF3: ; CODE XREF: sub_4FB4+26j + or cx, cx + jnz short loc_4FDC + xor dx, dx + xor ax, ax + +loc_4FFB: ; CODE XREF: sub_4FB4+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4FB4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far __write(int handle, void *buf, unsigned int len) +___write proc far ; CODE XREF: _fflush+AAp + +var_90 = byte ptr -90h +var_E = dword ptr -0Eh +var_9 = byte ptr -9 +var_8 = word ptr -8 +var_6 = dword ptr -6 +var_2 = word ptr -2 +handle = word ptr 6 +buf = dword ptr 8 +len = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 90h + push si + push di + mov ax, [bp+handle] + cmp ax, word_D95A + jb short loc_501D + mov ax, 6 + push ax + call __IOERROR + jmp loc_5161 +; --------------------------------------------------------------------------- + +loc_501D: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_502B + xor ax, ax + jmp loc_5161 +; --------------------------------------------------------------------------- + +loc_502B: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+9DDh], 8 + jz short loc_504A + mov ax, 2 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + push [bp+handle] ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + +loc_504A: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+9DDh], 40h + jnz short loc_506D + push [bp+len] ; len + push word ptr [bp+buf+2] + push word ptr [bp+buf] ; buf + push [bp+handle] ; handle + nop + push cs + call near ptr __rtl_write + add sp, 8 + jmp loc_5161 +; --------------------------------------------------------------------------- + +loc_506D: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+9DCh], 0FDFFh + mov dx, word ptr [bp+buf+2] + mov ax, word ptr [bp+buf] + mov word ptr [bp+var_E+2], dx + mov word ptr [bp+var_E], ax + mov ax, [bp+len] + mov [bp+var_8], ax + jmp short loc_5107 +; --------------------------------------------------------------------------- + +loc_508C: ; CODE XREF: ___write+116j + dec [bp+var_8] + les bx, [bp+var_E] + inc word ptr [bp+var_E] + mov al, es:[bx] + mov [bp+var_9], al + cmp al, 0Ah + jnz short loc_50A9 + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_50A9: ; CODE XREF: ___write+9Cj + les bx, [bp+var_6] + mov al, [bp+var_9] + mov es:[bx], al + inc word ptr [bp+var_6] + lea ax, [bp+var_90] + mov dx, word ptr [bp+var_6] + xor bx, bx + sub dx, ax + sbb bx, 0 + or bx, bx + jl short loc_5111 + jnz short loc_50CF + cmp dx, 80h ; '€' + jb short loc_5111 + +loc_50CF: ; CODE XREF: ___write+C6j + lea ax, [bp+var_90] + mov dx, word ptr [bp+var_6] + xor bx, bx + sub dx, ax + sbb bx, 0 + mov [bp+var_2], dx + push dx ; len + push ss + push ax ; buf + push [bp+handle] ; handle + nop + push cs + call near ptr __rtl_write + add sp, 8 + mov dx, ax + cmp ax, [bp+var_2] + jz short loc_5107 + cmp dx, 0FFFFh + jnz short loc_50FF + mov ax, 0FFFFh + jmp short loc_515C +; --------------------------------------------------------------------------- + +loc_50FF: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_5157 +; --------------------------------------------------------------------------- + +loc_5107: ; CODE XREF: ___write+89j ___write+F2j + lea ax, [bp+var_90] + mov word ptr [bp+var_6+2], ss + mov word ptr [bp+var_6], ax + +loc_5111: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_511A + jmp loc_508C +; --------------------------------------------------------------------------- + +loc_511A: ; CODE XREF: ___write+114j + lea ax, [bp+var_90] + mov dx, word ptr [bp+var_6] + xor bx, bx + sub dx, ax + sbb bx, 0 + mov [bp+var_2], dx + mov ax, dx + or ax, ax + jbe short loc_515E + push dx ; len + push ss + lea ax, [bp+var_90] + push ax ; buf + push [bp+handle] ; handle + nop + push cs + call near ptr __rtl_write + add sp, 8 + mov dx, ax + cmp ax, [bp+var_2] + jz short loc_515E + cmp dx, 0FFFFh + jnz short loc_5154 + mov ax, 0FFFFh + jmp short loc_515C +; --------------------------------------------------------------------------- + +loc_5154: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_5157: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_515C: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_5161 +; --------------------------------------------------------------------------- + +loc_515E: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_5161: ; CODE XREF: ___write+19j ___write+27j ... + pop di + pop si + mov sp, bp + pop bp + retf +___write endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl _rtl_write(int handle, const void *buf, unsigned int len) +__rtl_write proc far ; CODE XREF: ___ErrorMessage+20p + ; ___write+63p ... + +handle = word ptr 6 +buf = dword ptr 8 +len = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+9DCh], 1 + jz short loc_517E + mov ax, 5 + push ax + jmp short loc_519F +; --------------------------------------------------------------------------- + +loc_517E: ; CODE XREF: __rtl_write+Fj + push ds + mov ah, 40h ; '@' + mov bx, [bp+handle] + mov cx, [bp+len] + lds dx, [bp+buf] + int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer + pop ds + jb short loc_519E + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+9DCh], 1000h + pop ax + jmp short loc_51A2 +; --------------------------------------------------------------------------- + +loc_519E: ; CODE XREF: __rtl_write+26j + push ax + +loc_519F: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_51A2: ; CODE XREF: __rtl_write+35j + pop di + pop si + pop bp + retf +__rtl_write endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl _write(int handle, const void *buf, unsigned int len) +__write proc far + +handle = word ptr 6 +buf = dword ptr 8 +len = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+len] ; len + push word ptr [bp+buf+2] + push word ptr [bp+buf] ; buf + push [bp+handle] ; handle + push cs + call near ptr __rtl_write + add sp, 8 + pop di + pop si + pop bp + retf +__write endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__xfflush proc far + +var_6 = word ptr -6 +stream = dword ptr -4 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], 4 + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 84Ah + jmp short loc_51F5 +; --------------------------------------------------------------------------- + +loc_51D9: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_51EE + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_51EE: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_51F5: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_51D9 + pop di + pop si + mov sp, bp + pop bp + retf +__xfflush endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xalloc::xalloc(string const &, unsigned int) +@xalloc@$bctr$qmx6stringui proc far ; CODE XREF: string::contains(char *)+39p + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + + 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_5222 + mov ax, 6 + 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_5240 + +loc_5222: ; CODE XREF: xalloc::xalloc(string &,uint)+Bj + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + nop + push cs + call near ptr @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + les bx, [bp+arg_0] + mov ax, [bp+arg_8] + mov es:[bx+4], ax + +loc_5240: ; CODE XREF: xalloc::xalloc(string &,uint)+1Fj + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + pop di + pop si + pop bp + retf +@xalloc@$bctr$qmx6stringui endp + +; --------------------------------------------------------------------------- + dd byte_533B + db 4 dup(0), 3Bh, 53h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 5Ch, 52h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 64h, 52h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xalloc::raise(void) +@xalloc@raise$qv proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+77P + ; sub_CB11+4DP ... + +var_28 = dword ptr -28h +src = byte ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 5272h + nop + push cs + call near ptr ___InitExceptBlocks + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 52F8h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_28+2], dx + mov word ptr [bp+var_28], ax + push dx + push ax + push ss + lea ax, [bp+src] + push ax + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+var_28] + mov ax, es:[bx+4] + mov [bp+var_2], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 533Bh + push ax ; int + nop + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + pop di + pop si + mov sp, bp + pop bp + retf +@xalloc@raise$qv endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+0Ah] + mov ax, es:[bx+4] + les bx, [bp+6] + mov es:[bx+4], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- +byte_533B db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:525Co + db 0Dh dup(0), 2, 0, 2, 0, 7Dh, 53h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0CAh, 53h + dw seg seg000 + db 2 dup(0), 3, 0Dh dup(0) +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_53C4 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_53C2 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_53C6 +; --------------------------------------------------------------------------- + +loc_53C2: ; CODE XREF: seg000:53B1j + jmp short loc_53C6 +; --------------------------------------------------------------------------- + +loc_53C4: ; CODE XREF: seg000:5388j + xor ax, ax + +loc_53C6: ; CODE XREF: seg000:53C0j + ; seg000:loc_53C2j + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 70h, 57h + dw seg seg000 + db 87h, 20h, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 2 dup(0FFh), 6, 0, 5, 3 dup(0), 2, 54h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::xmsg(string const &) +@xmsg@$bctr$qmx6string proc far ; CODE XREF: xalloc::xalloc(string &,uint)+2Fp + ; string::assert_element(uint)+6AP ... + +var_22 = word ptr -22h +var_16 = word ptr -16h +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 5410h + nop + push cs + call near ptr ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_5455 + mov ax, 4 + 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_54A7 + +loc_5455: ; CODE XREF: xmsg::xmsg(string &)+19j + mov ax, 4 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_5497 + mov [bp+var_16], 0Eh + push [bp+arg_6] + push [bp+arg_4] + push dx + push [bp+var_4] + call @string@$bctr$qmx6string ; string::string(string &) + add sp, 8 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov [bp+var_16], 6 + +loc_5497: ; CODE XREF: xmsg::xmsg(string &)+41j + mov dx, [bp+var_2] + mov ax, [bp+var_4] + les bx, [bp+arg_0] + mov es:[bx+2], dx + mov es:[bx], ax + +loc_54A7: ; CODE XREF: xmsg::xmsg(string &)+2Dj + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_22] + nop + push cs + call near ptr ___ExitExceptBlocks + 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 +@xmsg@$bctr$qmx6string endp + +; --------------------------------------------------------------------------- + dd byte_5770 + db 87h, 20h, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 2 dup(0FFh), 6, 0, 5, 3 dup(0), 0CDh, 54h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::xmsg(xmsg const &) +@xmsg@$bctr$qmx4xmsg proc far ; CODE XREF: seg000:32A4p seg000:336Cp ... + +var_22 = word ptr -22h +var_16 = word ptr -16h +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 54DBh + nop + push cs + call near ptr ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_5520 + mov ax, 4 + 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_5576 + +loc_5520: ; CODE XREF: xmsg::xmsg(xmsg &)+19j + mov ax, 4 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_5566 + mov [bp+var_16], 0Eh + les bx, [bp+arg_4] + push word ptr es:[bx+2] + push word ptr es:[bx] + push dx + push [bp+var_4] + call @string@$bctr$qmx6string ; string::string(string &) + add sp, 8 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov [bp+var_16], 6 + +loc_5566: ; CODE XREF: xmsg::xmsg(xmsg &)+41j + mov dx, [bp+var_2] + mov ax, [bp+var_4] + les bx, [bp+arg_0] + mov es:[bx+2], dx + mov es:[bx], ax + +loc_5576: ; CODE XREF: xmsg::xmsg(xmsg &)+2Dj + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_22] + nop + push cs + call near ptr ___ExitExceptBlocks + 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 +@xmsg@$bctr$qmx4xmsg endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far xmsg___xmsg(void (*driver)(void), char) +@xmsg@$bdtr$qv proc far ; CODE XREF: seg000:343Bp seg000:34EAp ... + +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + push si + push di + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov ax, word ptr [bp+driver] + or ax, word ptr [bp+driver+2] + jz short loc_55F6 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov ax, 3 + push ax ; char + les bx, [bp+driver] + push word ptr es:[bx+2] + push word ptr es:[bx] ; driver + call @string@$bdtr$qv ; string::~string(void) + add sp, 6 + test [bp+arg_4], 1 + jz short loc_55F6 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_55F6: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_5738 + db 4 dup(0), 0FAh, 55h + dw seg seg000 + db 0E2h, 0FFh + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::raise(void) +@xmsg@raise$qv proc far + +src = byte ptr -22h +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 5602h + nop + push cs + call near ptr ___InitExceptBlocks + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 54F1h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push [bp+arg_2] + push [bp+arg_0] + push ss + lea ax, [bp+src] + push ax + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 5738h + push ax ; int + nop + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + pop di + pop si + mov sp, bp + pop bp + retf +@xmsg@raise$qv endp + +; --------------------------------------------------------------------------- + dd byte_5770 + db 87h, 20h, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 2 dup(0FFh), 6, 0, 5, 3 dup(0), 5Bh, 56h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::operator=(xmsg const &) +@xmsg@$basg$qmx4xmsg proc far + +var_22 = word ptr -22h +var_16 = word ptr -16h +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 5669h + nop + push cs + call near ptr ___InitExceptBlocks + 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_56A2 + cmp ax, word ptr [bp+arg_4] + jz short loc_5720 + +loc_56A2: ; CODE XREF: xmsg::operator=(xmsg &)+1Cj + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov ax, 3 + push ax ; char + les bx, [bp+arg_0] + push word ptr es:[bx+2] + push word ptr es:[bx] ; driver + call @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov ax, 4 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_5710 + mov [bp+var_16], 0Eh + les bx, [bp+arg_4] + push word ptr es:[bx+2] + push word ptr es:[bx] + push dx + push [bp+var_4] + call @string@$bctr$qmx6string ; string::string(string &) + add sp, 8 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov [bp+var_16], 6 + +loc_5710: ; CODE XREF: xmsg::operator=(xmsg &)+5Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + les bx, [bp+arg_0] + mov es:[bx+2], dx + mov es:[bx], ax + +loc_5720: ; CODE XREF: xmsg::operator=(xmsg &)+21j + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + push dx + push ax + push [bp+var_22] + nop + push cs + call near ptr ___ExitExceptBlocks + pop ax + pop dx + pop di + pop si + mov sp, bp + pop bp + retf +@xmsg@$basg$qmx4xmsg endp + +; --------------------------------------------------------------------------- +byte_5738 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:55FAo + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_5770 db 4, 0, 10h, 20h, 0Ah, 0, 83h, 57h ; DATA XREF: seg000:54CDo + ; seg000:565Bo + dw seg seg000 +aString db 'string *',0 + db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + db 0Dh dup(0), 1, 0, 1, 0, 8, 3 + dw seg seg006 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +___JumpToCatch__ proc far ; CODE XREF: __ExceptionHandler+261p + 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 ; CODE XREF: typeinfo::name(void)+11p + +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: ; CODE XREF: sub_57C9+Bj + 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: ; CODE XREF: sub_57C9+12j + 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 ; CODE XREF: sub_588B+69p + ; 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: ; CODE XREF: sub_57EE+11j + 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: ; CODE XREF: sub_57EE+92j + 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: ; CODE XREF: sub_57EE+26j sub_57EE+34j ... + xor ax, ax + jmp short loc_5885 +; --------------------------------------------------------------------------- + +loc_587E: ; CODE XREF: sub_57EE+8Aj + or dx, dx + jnz short loc_585C + +loc_5882: ; CODE XREF: sub_57EE+16j + mov ax, 1 + +loc_5885: ; CODE XREF: sub_57EE+8Ej + 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 ; CODE XREF: sub_588B+9Bp + ; 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: ; CODE XREF: sub_588B+ACj + 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: ; CODE XREF: sub_588B+41j sub_588B+50j + xor ax, ax + +loc_58E4: ; CODE XREF: sub_588B+55j + 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: ; CODE XREF: sub_588B+71j sub_588B+77j + 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: ; CODE XREF: sub_588B+3Bj sub_588B+84j ... + add word ptr [bp+var_4], 8 + jmp loc_58A6 +; --------------------------------------------------------------------------- + +loc_593A: ; CODE XREF: sub_588B+31j + 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: ; CODE XREF: sub_588B+148j + 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: ; CODE XREF: sub_588B+DEj sub_588B+EDj + xor ax, ax + +loc_5981: ; CODE XREF: sub_588B+F2j + 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: ; CODE XREF: sub_588B+10Ej + 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: ; CODE XREF: sub_588B+79j sub_588B+A5j ... + mov ax, 1 + jmp short loc_59D8 +; --------------------------------------------------------------------------- + +loc_59CF: ; CODE XREF: sub_588B+11Ej + ; sub_588B+13Dj + add word ptr [bp+var_4], 8 + jmp loc_594D +; --------------------------------------------------------------------------- + +loc_59D6: ; CODE XREF: sub_588B+D8j + xor ax, ax + +loc_59D8: ; CODE XREF: sub_588B+142j + 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 ; CODE XREF: sub_5BE7+1Dp sub_5BE7+5Fp ... + +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: ; CODE XREF: sub_59DE+119j + 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: ; CODE XREF: sub_59DE+14j sub_59DE+19j + 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: ; CODE XREF: sub_59DE+4Cj + or cx, cx + jz short loc_5A36 + jmp loc_5B4A +; --------------------------------------------------------------------------- + +loc_5A36: ; CODE XREF: sub_59DE+53j + 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: ; CODE XREF: sub_59DE+77j + 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: ; CODE XREF: sub_59DE+67j + 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: ; CODE XREF: sub_59DE+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_5A89 + jmp loc_5B4A +; --------------------------------------------------------------------------- + +loc_5A89: ; CODE XREF: sub_59DE+A6j + jmp loc_5B11 +; --------------------------------------------------------------------------- + +loc_5A8C: ; CODE XREF: sub_59DE+3Aj + 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: ; CODE XREF: sub_59DE+CBj + or cx, cx + jz short loc_5AB8 + jmp loc_5B4A +; --------------------------------------------------------------------------- + +loc_5AB8: ; CODE XREF: sub_59DE+D5j + 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: ; CODE XREF: sub_59DE+4Ej sub_59DE+8Cj ... + 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: ; CODE XREF: sub_59DE+B7j + 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: ; CODE XREF: sub_59DE+1Bj + ; sub_59DE:loc_5A89j + mov ax, 1 + jmp short loc_5B4C +; --------------------------------------------------------------------------- + +loc_5B16: ; CODE XREF: sub_59DE+131j + 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: ; CODE XREF: sub_59DE+55j sub_59DE+79j ... + xor ax, ax + +loc_5B4C: ; CODE XREF: sub_59DE+136j + ; 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 ; CODE XREF: sub_6311+10Dp + +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 sub_3C38 + 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: ; CODE XREF: sub_5B52+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_5B89: ; CODE XREF: sub_5B52+30j + 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: ; CODE XREF: sub_5B52+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_5BA8: ; CODE XREF: sub_5B52+4Ej + 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: ; CODE XREF: seg000:5BC3j seg000:5BC8j + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + +loc_5BE3: ; CODE XREF: seg000:5BD4j + 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 ; CODE XREF: sub_7478+58p + ; __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: ; CODE XREF: sub_5BE7+25j + 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: ; CODE XREF: sub_5BE7+42j + test byte ptr [bp+var_4], 10h + jz short loc_5CE4 + test [bp+arg_C], 1 + jz short loc_5CB2 + +loc_5CAD: ; CODE XREF: sub_5BE7+27j sub_5BE7+67j ... + mov ax, 1 + jmp short loc_5CE6 +; --------------------------------------------------------------------------- + +loc_5CB2: ; CODE XREF: sub_5BE7+C4j + 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: ; CODE XREF: sub_5BE7+D5j + 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: ; CODE XREF: sub_5BE7+F2j + xor ax, ax + +loc_5CE2: ; CODE XREF: sub_5BE7+F7j + jmp short loc_5CE6 +; --------------------------------------------------------------------------- + +loc_5CE4: ; CODE XREF: sub_5BE7+88j sub_5BE7+B8j ... + xor ax, ax + +loc_5CE6: ; CODE XREF: sub_5BE7+C9j + ; 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 ; CODE XREF: sub_6311+263p + ; 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: ; CODE XREF: sub_5CEC+25j + 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: ; CODE XREF: sub_5CEC+2Fj sub_5CEC+39j + test byte ptr [bp+arg_C], 20h + jz short loc_5D35 + or [bp+var_4], 8 + +loc_5D35: ; CODE XREF: sub_5CEC+43j + test byte ptr [bp+arg_C], 80h + jz short loc_5D3F + or [bp+var_4], 10h + +loc_5D3F: ; CODE XREF: sub_5CEC+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_5D48 + jmp loc_5ECD +; --------------------------------------------------------------------------- + +loc_5D48: ; CODE XREF: sub_5CEC+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_5D53 + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5D53: ; CODE XREF: sub_5CEC+62j + add bx, bx + jmp cs:off_600A[bx] + +loc_5D5A: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:off_600Ao + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+A4j + add sp, 0Ah + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5DAA: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5DC8: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+EEj + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5DF1: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_5E09: ; CODE XREF: sub_5CEC+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5E11: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+263j + call word ptr [bp+arg_8] + jmp short loc_5E35 +; --------------------------------------------------------------------------- + +loc_5E24: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+272j + call [bp+arg_8] + +loc_5E35: ; CODE XREF: sub_5CEC+136j + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5E38: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_5E4F: ; CODE XREF: sub_5CEC+205j + call [bp+arg_8] + +loc_5E52: ; CODE XREF: sub_5CEC+158j + ; sub_5CEC+1FCj + pop cx + pop cx + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5E57: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_5E8E: ; CODE XREF: sub_5CEC+234j + call word ptr [bp+arg_8] + jmp short loc_5E9F +; --------------------------------------------------------------------------- + +loc_5E93: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_5E9C: ; CODE XREF: sub_5CEC+23Dj + call [bp+arg_8] + +loc_5E9F: ; CODE XREF: sub_5CEC+1A5j + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5EA2: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + 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: ; CODE XREF: sub_5CEC+69j + ; sub_5CEC+1EEj + ; DATA XREF: ... + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5ECD: ; CODE XREF: sub_5CEC+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_5ED8 + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5ED8: ; CODE XREF: sub_5CEC+1E7j + add bx, bx + jmp cs:off_5FDA[bx] + +loc_5EDF: ; DATA XREF: seg000:off_5FDAo + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_5E52 +; --------------------------------------------------------------------------- + +loc_5EEB: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FDCo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5E4F +; --------------------------------------------------------------------------- + +loc_5EF4: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FDEo + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FE0o + 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: ; CODE XREF: sub_5CEC+217j + add sp, 8 + jmp loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5F1A: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FE2o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5E8E +; --------------------------------------------------------------------------- + +loc_5F23: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FE4o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5E9C +; --------------------------------------------------------------------------- + +loc_5F2C: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FEAo + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FECo + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_5E09 +; --------------------------------------------------------------------------- + +loc_5F43: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FE6o ... + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FE8o ... + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FFAo + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FFCo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5F79: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:5FFEo + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:6000o + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:6002o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + jmp short loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5FA8: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:6004o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_5FD3 +; --------------------------------------------------------------------------- + +loc_5FB3: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:6006o + 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: ; CODE XREF: sub_5CEC+1EEj + ; DATA XREF: seg000:6008o + 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: ; CODE XREF: sub_5CEC+64j sub_5CEC+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_5CEC endp + +; --------------------------------------------------------------------------- +off_5FDA dw offset loc_5EDF ; DATA XREF: sub_5CEC+1EEr + 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 ; DATA XREF: sub_5CEC+69r + 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 ; CODE XREF: sub_6311+2BCp + ; 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: ; CODE XREF: sub_603A+Cj + xor ax, ax + +loc_604F: ; CODE XREF: sub_603A+11j + 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: ; CODE XREF: sub_603A+35j + 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: ; CODE XREF: sub_603A+3Fj sub_603A+49j + test byte ptr [bp+arg_8], 20h + jz short loc_6093 + or [bp+var_6], 8 + +loc_6093: ; CODE XREF: sub_603A+53j + test byte ptr [bp+arg_8], 80h + jz short loc_609D + or [bp+var_6], 10h + +loc_609D: ; CODE XREF: sub_603A+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_60A8 + jmp loc_61BB +; --------------------------------------------------------------------------- + +loc_60A8: ; CODE XREF: sub_603A+69j + add bx, bx + jmp cs:off_61C2[bx] + +loc_60AF: ; DATA XREF: seg000:off_61C2o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61C4o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_61BB +; --------------------------------------------------------------------------- + +loc_60CB: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61C6o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61C8o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61CAo + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6155 +; --------------------------------------------------------------------------- + +loc_60FA: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61CCo + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_6152 +; --------------------------------------------------------------------------- + +loc_6102: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61CEo + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61D0o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_611C: ; CODE XREF: sub_603A+D4j + jmp loc_61BB +; --------------------------------------------------------------------------- + +loc_611F: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61D2o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61D4o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61D6o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61D8o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_6152: ; CODE XREF: sub_603A+C6j + call [bp+arg_4] + +loc_6155: ; CODE XREF: sub_603A+BEj + ; sub_603A+10Dj + jmp short loc_61BB +; --------------------------------------------------------------------------- + +loc_6157: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61E2o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61E4o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_61BB +; --------------------------------------------------------------------------- + +loc_616F: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61E6o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61E8o + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61EAo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_61BB +; --------------------------------------------------------------------------- + +loc_6196: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61ECo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_61BB +; --------------------------------------------------------------------------- + +loc_61A1: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61EEo + 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: ; CODE XREF: sub_603A+70j + ; DATA XREF: seg000:61F0o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_61BB: ; CODE XREF: sub_603A+6Bj sub_603A+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_603A endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_61C2 dw offset loc_60AF ; DATA XREF: sub_603A+70r + 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 ; CODE XREF: sub_7E39+3CFp + +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: ; CODE XREF: sub_61F2+25j + test byte ptr [bp+arg_8], 2 + jz short loc_6227 + or [bp+var_4], 4 + +loc_6227: ; CODE XREF: sub_61F2+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_6231 + or [bp+var_4], 8 + +loc_6231: ; CODE XREF: sub_61F2+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_62A4 + add bx, bx + jmp cs:off_62AB[bx] + +loc_6240: ; DATA XREF: seg000:off_62ABo + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_6249: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62ADo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_6252: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62AFo + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6266 +; --------------------------------------------------------------------------- + +loc_625D: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62B1o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_6266: ; CODE XREF: sub_61F2+69j + pop cx + pop cx + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_626A: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62B3o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6278 +; --------------------------------------------------------------------------- + +loc_6272: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62B5o + push [bp+arg_0] + call [bp+arg_4] + +loc_6278: ; CODE XREF: sub_61F2+7Ej + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_627A: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62BBo + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_6284: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62BDo + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_62A4 +; --------------------------------------------------------------------------- + +loc_628E: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62B7o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62A2 +; --------------------------------------------------------------------------- + +loc_6299: ; CODE XREF: sub_61F2+49j + ; DATA XREF: seg000:62B9o ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_62A2: ; CODE XREF: sub_61F2+A5j + jmp short $+2 + +loc_62A4: ; CODE XREF: sub_61F2+45j sub_61F2+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_61F2 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_62AB dw offset loc_6240 ; DATA XREF: sub_61F2+49r + 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 ; CODE XREF: _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *)+4Dp + ; _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 + nop + push cs + call near ptr ___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: ; CODE XREF: sub_6311+93j + 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: ; CODE XREF: sub_6311+78j + inc word ptr [bp+var_34] + +loc_639D: ; CODE XREF: sub_6311+67j + 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: ; CODE XREF: sub_6311+DEj + xor ax, ax + +loc_63FC: ; CODE XREF: sub_6311+E7j + 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: ; CODE XREF: sub_6311+F2j + 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 + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_65A0 + nop + push cs + call near ptr @__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: ; CODE XREF: sub_6311+26Ej + nop + push cs + call near ptr @__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: ; CODE XREF: sub_6311+22Dj + 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: ; CODE XREF: sub_6311+293j + ; 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] + nop + push cs + call near ptr ___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 ; CODE XREF: seg000:32CEp + ; 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: ; CODE XREF: _ReThrowException(uint,uchar *)+34j + 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: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_6729: ; CODE XREF: _ReThrowException(uint,uchar *)+85j + 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 ; CODE XREF: sub_6748+22p + 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 ; CODE XREF: __Global_unwind+3Bp + ; _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: ; CODE XREF: sub_6748+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_6743 + jmp short loc_67B0 +; --------------------------------------------------------------------------- + +loc_676F: ; CODE XREF: sub_6748+74j + 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: ; CODE XREF: sub_6748+4Cj + cmp [bp+var_4], 0 + jz short loc_67A7 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_67A7: ; CODE XREF: sub_6748+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_67B0: ; CODE XREF: sub_6748+25j + 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: ; CODE XREF: sub_6748+6Cj + cmp [bp+var_4], 0 + jz short loc_67CB + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_67CB: ; CODE XREF: sub_6748+7Aj + mov ax, 1 + +loc_67CE: ; CODE XREF: sub_6748+50j + 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 ; CODE XREF: __ExceptionHandler+210p + +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: ; CODE XREF: __Global_unwind+Dj + 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 ; CODE XREF: _RaiseException+16p + 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 ; CODE XREF: sub_6311+31Bp + +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 word_DC24, 3 + jnb short loc_6849 + jmp loc_68FF +; --------------------------------------------------------------------------- + +loc_6849: ; CODE XREF: _RaiseException+24j + 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 + nop + push cs + call near ptr _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: ; CODE XREF: _RaiseException+26j + 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: ; CODE XREF: _RaiseException+DDj + 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: ; CODE XREF: _RaiseException+143j + ; _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: ; CODE XREF: _RaiseException+157j + 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 + nop + push cs + call near ptr _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: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_6A70 + ja short loc_6A66 + cmp [bp+arg_8], 0Fh + jbe short loc_6A70 + +loc_6A66: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_6A70: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_6AA6 +; --------------------------------------------------------------------------- + +loc_6A7D: ; CODE XREF: _RaiseException+28Ej + ; _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: ; CODE XREF: _RaiseException+25Bj + 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: ; CODE XREF: _RaiseException+290j + ; _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: ; CODE XREF: _RaiseException+2AEj + 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: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_DC24, 3 + jnb short loc_6B2C + jmp loc_6C0C +; --------------------------------------------------------------------------- + +loc_6B2C: ; CODE XREF: _RaiseException+307j + 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: ; CODE XREF: _RaiseException+309j + 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: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_6C92: ; CODE XREF: _RaiseException+3E9j + ; _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 ; CODE XREF: sub_6D19+58p sub_6D19+C4p ... + +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 + nop + push cs + call near ptr ___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: ; CODE XREF: sub_6CC9+36j + push [bp+var_1E] + nop + push cs + call near ptr ___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 ; CODE XREF: _CatchCleanup(void)+5Ap + ; 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 + nop + push cs + call near ptr @__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 + nop + push cs + call near ptr @__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: ; CODE XREF: sub_6D19+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_6D94: ; CODE XREF: sub_6D19+10j + 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: ; CODE XREF: sub_6D19+9Ej sub_6D19+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_6DEB: ; CODE XREF: sub_6D19+83j + 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 ; CODE XREF: ___call_terminate+69p + ; 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 ; CODE XREF: sub_6E6E+A0p sub_6F3A+36p ... + +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: ; CODE XREF: sub_6E6E+C3j + 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: ; CODE XREF: sub_6E6E+1Ej + 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: ; CODE XREF: sub_6E6E+40j + 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: ; CODE XREF: sub_6E6E+66j + 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: ; CODE XREF: sub_6E6E+70j sub_6E6E+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_6E76 +; --------------------------------------------------------------------------- + +loc_6F34: ; CODE XREF: sub_6E6E+22j sub_6E6E+BDj + 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 ; CODE XREF: sub_6FBD+159p + ; 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: ; CODE XREF: sub_6F3A+Ej sub_6F3A+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_6FB7 +; --------------------------------------------------------------------------- + +loc_6FB3: ; CODE XREF: sub_6F3A+6Fj + xor dx, dx + xor ax, ax + +loc_6FB7: ; CODE XREF: sub_6F3A+77j + 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 ; CODE XREF: __ExceptionHandler+248p + +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: ; CODE XREF: sub_6FBD+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_6FF9 + jmp loc_725D +; --------------------------------------------------------------------------- + +loc_6FF9: ; CODE XREF: sub_6FBD+37j + 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: ; CODE XREF: sub_6FBD+96j + 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 + nop + push cs + call near ptr _memset + add sp, 8 + jmp loc_71C0 +; --------------------------------------------------------------------------- + +loc_7095: ; CODE XREF: sub_6FBD+B3j sub_6FBD+BDj + test dl, 1 + jnz short loc_709D + jmp loc_7141 +; --------------------------------------------------------------------------- + +loc_709D: ; CODE XREF: sub_6FBD+DBj + test cl, 30h + jnz short loc_70A5 + jmp loc_7141 +; --------------------------------------------------------------------------- + +loc_70A5: ; CODE XREF: sub_6FBD+E3j + test cl, 20h + jz short loc_70AC + jmp short loc_70CF +; --------------------------------------------------------------------------- + +loc_70AC: ; CODE XREF: sub_6FBD+EBj + 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: ; CODE XREF: sub_6FBD+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_70D6: ; CODE XREF: sub_6FBD+107j + 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: ; CODE XREF: sub_6FBD+16Ej + mov [bp+var_14], 1 + +loc_7137: ; CODE XREF: sub_6FBD+133j + ; sub_6FBD+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_720B +; --------------------------------------------------------------------------- + +loc_7141: ; CODE XREF: sub_6FBD+DDj sub_6FBD+E5j + 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: ; CODE XREF: sub_6FBD+1A8j + 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: ; CODE XREF: sub_6FBD+D5j + ; sub_6FBD+227j + mov [bp+var_14], 1 + jmp short loc_7227 +; --------------------------------------------------------------------------- + +loc_71C7: ; CODE XREF: sub_6FBD+18Cj + 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 + nop + push cs + call near ptr _memcpy + add sp, 0Ah + jmp short loc_71C0 +; --------------------------------------------------------------------------- + +loc_71E6: ; CODE XREF: sub_6FBD+20Dj + 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: ; CODE XREF: sub_6FBD+181j + push ax + jmp short loc_7217 +; --------------------------------------------------------------------------- + +loc_720E: ; CODE XREF: sub_6FBD+1DBj + ; sub_6FBD+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_7217: ; CODE XREF: sub_6FBD+24Fj + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + +loc_7227: ; CODE XREF: sub_6FBD+208j + 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: ; CODE XREF: sub_6FBD+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_725D: ; CODE XREF: sub_6FBD+2Cj sub_6FBD+39j ... + 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 ; CODE XREF: __Local_unwind+15p + ; __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: ; CODE XREF: sub_7263+1B6j + 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: ; CODE XREF: sub_7263+8Ej + add bx, bx + jmp cs:off_7422[bx] + +loc_72FD: ; DATA XREF: seg000:off_7422o + 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: ; CODE XREF: sub_7263+95j + ; DATA XREF: seg000:742Ao + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_7367 +; --------------------------------------------------------------------------- + +loc_7347: ; CODE XREF: sub_7263+11Cj + 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: ; CODE XREF: sub_7263+EEj sub_7263+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_7367: ; CODE XREF: sub_7263+E2j + 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: ; CODE XREF: sub_7263+FCj + 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: ; CODE XREF: sub_7263+95j + ; DATA XREF: seg000:742Co + 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: ; CODE XREF: sub_7263+90j sub_7263+95j ... + mov ax, [bp+var_8] + +loc_7408: ; CODE XREF: sub_7263+55j + 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: ; CODE XREF: sub_7263+1ACj + ; sub_7263+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7263 endp + +; --------------------------------------------------------------------------- +off_7422 dw offset loc_72FD ; DATA XREF: sub_7263+95r + 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 ; CODE XREF: __ExceptionHandler+1B1p + +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: ; CODE XREF: sub_7478+78j + 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: ; CODE XREF: sub_7478+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_74F6 +; --------------------------------------------------------------------------- + +loc_74E2: ; CODE XREF: sub_7478+60j + add word ptr [bp+var_4], 10h + +loc_74E6: ; CODE XREF: sub_7478+17j + 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: ; CODE XREF: sub_7478+68j + 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 ; DATA XREF: ___InitExceptBlocks+28o + +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: ; CODE XREF: __ExceptionHandler+87j + 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: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_75B3 + jmp loc_786B +; --------------------------------------------------------------------------- + +loc_75B3: ; CODE XREF: __ExceptionHandler+AAj + 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: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_760C +; --------------------------------------------------------------------------- + +loc_75D0: ; CODE XREF: __ExceptionHandler+112j + 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: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_760C: ; CODE XREF: __ExceptionHandler:loc_75CEj + 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: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_785F +; --------------------------------------------------------------------------- + +loc_7642: ; CODE XREF: __ExceptionHandler+364j + 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: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_7874[bx] + +loc_767A: ; DATA XREF: seg000:787Ao + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_7688 + jmp loc_785C +; --------------------------------------------------------------------------- + +loc_7688: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_7692 + jmp loc_785C +; --------------------------------------------------------------------------- + +loc_7692: ; CODE XREF: __ExceptionHandler+189j + 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: ; CODE XREF: __ExceptionHandler+1C3j + 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: ; CODE XREF: __ExceptionHandler+355j + 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: ; CODE XREF: __ExceptionHandler+22Ej + 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: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7876o + 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: ; CODE XREF: __ExceptionHandler+270j + ; __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: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7878o + 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: ; CODE XREF: __ExceptionHandler+2E7j + ; __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: ; CODE XREF: __ExceptionHandler+2DCj + 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: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_786E +; --------------------------------------------------------------------------- + +loc_7835: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_783D + jmp short loc_785C +; --------------------------------------------------------------------------- + +loc_783D: ; CODE XREF: __ExceptionHandler+335j + 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: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_785F: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_786B + jmp loc_7642 +; --------------------------------------------------------------------------- + +loc_786B: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_786E: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_7874 dw offset loc_785C ; DATA XREF: __ExceptionHandler+171r + 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 ; CODE XREF: sub_79BB+50p + +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 + nop + push cs + call near ptr ___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: ; CODE XREF: sub_78CE+43j + 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: ; CODE XREF: sub_78CE+53j + push [bp+var_1E] + nop + push cs + call near ptr ___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 ; CODE XREF: sub_79BB+DCp + ; 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: ; CODE XREF: sub_793A+79j + 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: ; CODE XREF: sub_793A+24j + 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: ; CODE XREF: sub_793A+Bj sub_793A+4Dj + 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 ; CODE XREF: sub_793A+67p + ; 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: ; CODE XREF: sub_79BB+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_79D9: ; CODE XREF: sub_79BB+15j + 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: ; CODE XREF: sub_79BB+2Cj sub_79BB+39j + 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: ; CODE XREF: sub_79BB+37j sub_79BB+3Ej + 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: ; CODE XREF: sub_79BB+F0j + 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: ; CODE XREF: sub_79BB+B4j + 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: ; CODE XREF: sub_79BB+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_793A + add sp, 12h + jmp loc_7C80 +; --------------------------------------------------------------------------- + +loc_7AA0: ; CODE XREF: sub_79BB+B2j sub_79BB+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7AA7: ; CODE XREF: sub_79BB+A4j + add word ptr [bp+var_10], 8 + jmp short loc_7A3F +; --------------------------------------------------------------------------- + +loc_7AAD: ; CODE XREF: sub_79BB+82j sub_79BB+9Aj + 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: ; CODE XREF: sub_79BB+17Fj + 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: ; CODE XREF: sub_79BB+13Bj + 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: ; CODE XREF: sub_79BB+16Cj + jmp loc_7C60 +; --------------------------------------------------------------------------- + +loc_7B2F: ; CODE XREF: sub_79BB+139j + ; sub_79BB+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7B36: ; CODE XREF: sub_79BB+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_7AC6 +; --------------------------------------------------------------------------- + +loc_7B3C: ; CODE XREF: sub_79BB+121j + 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: ; CODE XREF: sub_79BB+2C2j + 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: ; CODE XREF: sub_79BB+1B7j + 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: ; CODE XREF: sub_79BB+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_7C79 +; --------------------------------------------------------------------------- + +loc_7BB3: ; CODE XREF: sub_79BB+1E5j + ; 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: ; CODE XREF: sub_79BB+21Fj + 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: ; CODE XREF: sub_79BB+242j + 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: ; CODE XREF: sub_79BB+278j + 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: ; CODE XREF: sub_79BB:loc_7B2Cj + 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: ; CODE XREF: sub_79BB+1F5j + add word ptr [bp+var_18], 6 + jmp loc_7B55 +; --------------------------------------------------------------------------- + +loc_7C80: ; CODE XREF: sub_79BB+56j sub_79BB+E2j ... + 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 ; CODE XREF: sub_79BB+23Cp + ; 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: ; CODE XREF: sub_7C86+44j + 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: ; CODE XREF: sub_7C86+FAj + 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: ; CODE XREF: sub_7C86+B6j + 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: ; CODE XREF: sub_7C86+A7j + 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 ; CODE XREF: sub_7E39+1B1p + ; 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: ; CODE XREF: sub_7D88+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_7DF0: ; CODE XREF: sub_7D88+5Dj + 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: ; CODE XREF: sub_7D88+27j sub_7D88+31j + 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 ; CODE XREF: sub_7263+197p + +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: ; CODE XREF: sub_7E39+11j + 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 + nop + push cs + call near ptr @__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: ; CODE XREF: sub_7E39+57j + 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: ; CODE XREF: sub_7E39+77j + cmp [bp+var_6], 0 + jg short loc_7EF1 + jnz short loc_7ECD + cmp [bp+var_8], 0 + ja short loc_7EF1 + +loc_7ECD: ; CODE XREF: sub_7E39+8Cj + 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: ; CODE XREF: sub_7E39+A1j + 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: ; CODE XREF: sub_7E39+8Aj sub_7E39+92j + 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: ; CODE XREF: sub_7E39+21Aj + 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: ; CODE XREF: sub_7E39+CEj + 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: ; CODE XREF: sub_7E39+FAj + 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: ; CODE XREF: sub_7E39+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_7F69 + jmp loc_8002 +; --------------------------------------------------------------------------- + +loc_7F69: ; CODE XREF: sub_7E39+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_7F76 + jmp loc_8002 +; --------------------------------------------------------------------------- + +loc_7F76: ; CODE XREF: sub_7E39+138j + 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: ; CODE XREF: sub_7E39+145j + 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: ; CODE XREF: sub_7E39+154j + 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: ; CODE XREF: sub_7E39+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_7FCE: ; CODE XREF: sub_7E39+18Aj + 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: ; CODE XREF: sub_7E39+1A0j + 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: ; CODE XREF: sub_7E39+FCj + ; 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: ; CODE XREF: sub_7E39+1D1j + 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: ; CODE XREF: sub_7E39+203j + 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: ; CODE XREF: sub_7E39+B5j sub_7E39+D4j ... + 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: ; CODE XREF: sub_7E39+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_8093: ; CODE XREF: sub_7E39+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_809F + jmp loc_8129 +; --------------------------------------------------------------------------- + +loc_809F: ; CODE XREF: sub_7E39+261j + 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: ; CODE XREF: sub_7E39+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_80DA: ; CODE XREF: sub_7E39+296j + 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: ; CODE XREF: sub_7E39+2B9j + 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: ; CODE XREF: sub_7E39+263j + ; 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: ; CODE XREF: sub_7E39+2FEj + 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: ; CODE XREF: sub_7E39+2F4j + ; 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: ; CODE XREF: sub_7E39+347j + 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: ; CODE XREF: sub_7E39+355j + 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: ; CODE XREF: sub_7E39+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_8223 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_8221 +; --------------------------------------------------------------------------- + +loc_81E3: ; CODE XREF: sub_7E39+363j + 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: ; CODE XREF: sub_7E39+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_61F2 + add sp, 0Ah + jmp short loc_8223 +; --------------------------------------------------------------------------- + +loc_8210: ; CODE XREF: sub_7E39+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_8223 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_8221: ; CODE XREF: sub_7E39+3A8j + pop cx + pop cx + +loc_8223: ; CODE XREF: sub_7E39+349j + ; 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: ; CODE XREF: sub_7E39+13j sub_7E39+A3j ... + xor ax, ax + +loc_823E: ; CODE XREF: sub_7E39+83j + 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 + nop + push cs + call near ptr _memcmp + add sp, 0Ah + or ax, ax + jz short loc_828C + +loc_8287: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_8293 +; --------------------------------------------------------------------------- + +loc_828C: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_8293: ; CODE XREF: __CurrExcContext+46j + 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: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + 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: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+22j + 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 + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_8378: ; CODE XREF: typeinfo::~typeinfo(void)+Ej + ; 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 ; CODE XREF: typeinfo::operator!=(typeinfo &)+12p + +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: ; CODE XREF: typeinfo::before(typeinfo &)+13j + 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: ; CODE XREF: typeinfo::before(typeinfo &)+24j + 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: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_8435: ; CODE XREF: typeinfo::before(typeinfo &)+17j + ; 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: ; CODE XREF: __GetTypeInfo(void *,void *,void *,void *)+1Aj + 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 ; CODE XREF: sub_84D8+143p + ; 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: ; CODE XREF: sub_84D8+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_8524 + +loc_851D: ; CODE XREF: sub_84D8+39j + xor dx, dx + xor ax, ax + jmp loc_8718 +; --------------------------------------------------------------------------- + +loc_8524: ; CODE XREF: sub_84D8+43j + 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: ; CODE XREF: sub_84D8+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_853C: ; CODE XREF: sub_84D8+205j + 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: ; CODE XREF: sub_84D8+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_8564 + jmp loc_86D9 +; --------------------------------------------------------------------------- + +loc_8564: ; CODE XREF: sub_84D8+87j + 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: ; CODE XREF: sub_84D8+90j sub_84D8+9Fj + xor ax, ax + +loc_8580: ; CODE XREF: sub_84D8+A4j + 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: ; CODE XREF: sub_84D8+D2j + 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: ; CODE XREF: sub_84D8+10Ej + 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: ; CODE XREF: sub_84D8+155j + 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: ; CODE XREF: sub_84D8+104j + 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: ; CODE XREF: sub_84D8+177j + 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: ; CODE XREF: sub_84D8+16Fj + ; 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: ; CODE XREF: sub_84D8+1D2j + ; 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: ; CODE XREF: sub_84D8+89j + ; sub_84D8+110j ... + add word ptr [bp+var_4], 8 + jmp loc_853C +; --------------------------------------------------------------------------- + +loc_86E0: ; CODE XREF: sub_84D8+7Cj + 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: ; CODE XREF: sub_84D8+20Cj + 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: ; CODE XREF: sub_84D8+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_8718: ; CODE XREF: sub_84D8+49j + ; 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: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+26j + 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: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_887D +; --------------------------------------------------------------------------- + +loc_87A8: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+7Fj + 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: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+9Fj + 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: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_887D +; --------------------------------------------------------------------------- + +loc_884D: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __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: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_887D: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+87j + ; __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) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __stdcall _DOSCMD(int, int, char *s, int, int) +__DOSCMD proc near ; CODE XREF: sub_9349:loc_94B4p + +dest = dword ptr -0Eh +var_A = dword ptr -0Ah +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +s = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov [bp+var_2], 3 + mov ax, word ptr [bp+s] + or ax, word ptr [bp+s+2] + jz short loc_8934 + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + add ax, [bp+var_2] + inc ax + mov [bp+var_2], ax + +loc_8934: ; CODE XREF: __DOSCMD+13j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + jmp short loc_895E +; --------------------------------------------------------------------------- + +loc_8942: ; CODE XREF: __DOSCMD+5Dj + les bx, [bp+var_6] + push word ptr es:[bx+2] + push word ptr es:[bx] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + add ax, [bp+var_2] + inc ax + mov [bp+var_2], ax + add word ptr [bp+var_6], 4 + +loc_895E: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8942 + push [bp+var_2] + nop + push cs + call near ptr sub_3C38 + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_8984 + xor dx, dx + xor ax, ax + jmp loc_8A3A +; --------------------------------------------------------------------------- + +loc_8984: ; CODE XREF: __DOSCMD+70j + mov dx, word ptr [bp+var_A+2] + mov ax, word ptr [bp+var_A] + inc ax + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov byte ptr es:[bx], 20h ; ' ' + inc word ptr [bp+dest] + mov ax, word ptr [bp+s] + or ax, word ptr [bp+s+2] + jz short loc_89C7 + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _stpcpy + add sp, 8 + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov byte ptr es:[bx], 20h ; ' ' + inc word ptr [bp+dest] + +loc_89C7: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8A15 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + jmp short loc_8A09 +; --------------------------------------------------------------------------- + +loc_89DD: ; CODE XREF: __DOSCMD+108j + les bx, [bp+var_6] + push word ptr es:[bx+2] + push word ptr es:[bx] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _stpcpy + add sp, 8 + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov byte ptr es:[bx], 20h ; ' ' + inc word ptr [bp+dest] + add word ptr [bp+var_6], 4 + +loc_8A09: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_89DD + +loc_8A15: ; CODE XREF: __DOSCMD+C2j + les bx, [bp+dest] + mov byte ptr es:[bx-1], 0Dh + mov byte ptr es:[bx], 0 + mov ax, word ptr [bp+dest] + xor dx, dx + sub ax, word ptr [bp+var_A] + sbb dx, 0 + add al, 0FEh ; 'þ' + les bx, [bp+var_A] + mov es:[bx], al + mov dx, word ptr [bp+var_A+2] + mov ax, word ptr [bp+var_A] + +loc_8A3A: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_8AD1 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_8B23 db 0 ; DATA XREF: __exec+50w +byte_8B24 db 0 ; DATA XREF: __exec+6Dw + db 1Ch dup(0), 33h, 0FFh, 8Ch, 0C8h, 8Eh, 0D8h, 8Eh, 0C0h + db 0FAh, 8Eh, 0D0h, 8Dh, 0A5h, 8Fh, 0, 0FBh, 51h, 52h + db 0B8h, 3, 4Bh, 8Dh, 9Dh, 0FBh, 0, 8Dh, 95h, 91h, 0, 0CDh + db 21h, 5Ah, 59h, 72h, 2Dh, 33h, 0FFh, 0FAh, 8Eh, 95h + db 0F1h, 0, 8Bh, 0A5h, 0F3h, 0, 0FBh, 8Bh, 0ECh, 33h, 0C0h + db 50h, 8Bh, 85h, 8Fh, 0, 8Eh, 0D8h, 8Eh, 0C0h, 26h, 89h + db 16h, 2, 0, 26h, 89h, 0Eh, 2Ch, 0, 2Eh, 8Bh, 85h, 0E1h + db 0, 2Eh, 0FFh, 2Eh, 0F7h, 0, 0B4h, 40h, 0BBh, 2, 0, 0B9h + db 0Fh, 0, 33h, 0D2h, 0CDh, 21h, 0B8h, 2, 4Ch, 0CDh, 21h +word_8BA2 dw 0FFh ; DATA XREF: __exec+22Dr +word_8BA4 dw 0 ; DATA XREF: __exec+1D0w +word_8BA6 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_8DA2r ... +byte_8BA8 db 1 ; DATA XREF: __exec+D5w __exec+1E7r ... + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__exec proc near + +var_C = word ptr -0Ch +var_A = dword ptr -0Ah +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, 0Ch + cld + push si + push ds + push di + push es + mov ax, word_CFF6 + mov cs:word_8BA6, ax + mov ax, 3D00h + push ds + lds dx, [bp+arg_0] + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + pop ds + mov [bp+var_2], ax + jnb short loc_8BCD + jmp loc_8DDB +; --------------------------------------------------------------------------- + +loc_8BCD: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_8AD1, es + mov ax, es:2Ch + mov [bp+var_C], ax + mov di, 80h ; '€' + push ds + lds si, [bp+arg_4] + lodsb + mov dx, si + stosb + xor cx, cx + mov cl, al + inc cx + rep movsb + mov ax, 2901h + mov si, dx + mov di, 5Ch ; '\' + int 21h ; DOS - PARSE FILENAME + ; DS:SI -> string to parse + ; ES:DI -> buffer to fill with unopened FCB + ; AL = bit mask to control parsing + mov cs:byte_8B23, al + +loc_8BFD: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_8C0E + cmp al, 9 + jz short loc_8C0E + cmp al, 0Dh + jz short loc_8C0E + inc si + jmp short loc_8BFD +; --------------------------------------------------------------------------- + +loc_8C0E: ; CODE XREF: __exec+58j __exec+5Cj ... + mov ax, 2901h + mov di, 6Ch ; 'l' + int 21h ; DOS - PARSE FILENAME + ; DS:SI -> string to parse + ; ES:DI -> buffer to fill with unopened FCB + ; AL = bit mask to control parsing + mov cs:byte_8B24, al + pop ds + mov ah, 4Ah ; 'J' + mov bx, 0FFFFh + int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) + ; ES = segment address of block to change + ; BX = new size in paragraphs + cmp byte ptr word_CFFC, 3 + jnb short loc_8C2D + sub bx, 280h + +loc_8C2D: ; CODE XREF: __exec+7Ej + mov [bp+var_4], bx + mov ax, [bp+arg_8] + mov dx, [bp+arg_A] + mov bx, ax + or bx, dx + jnz short loc_8C42 + xor ax, ax + mov di, ax + jmp short loc_8C5F +; --------------------------------------------------------------------------- + +loc_8C42: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_8C4C: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_8C4C + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_8C5F: ; CODE XREF: __exec+97j + mov word ptr [bp+var_A], di + mov word ptr [bp+var_A+2], es + add ax, 0Fh + mov cx, 4 + shr ax, cl + mov [bp+var_6], ax + mov si, word_CFF6 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_8C87 + dec cs:byte_8BA8 + inc ax + sub [bp+var_4], ax + +loc_8C87: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 8AD3h + +loc_8C8F: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_8C8F + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 8A42h + mov ah, 3Fh ; '?' + mov cx, 18h + lea dx, [di+0E3h] + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_8CD1 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_8CDD + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_8CCE + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_8CCE + jmp short loc_8D19 +; --------------------------------------------------------------------------- + +loc_8CCE: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_8CD1: ; CODE XREF: __exec+101j __exec+1ADj ... + push ax + mov ah, 3Eh ; '>' + mov bx, [bp+var_2] + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + jmp loc_8DDB +; --------------------------------------------------------------------------- + +loc_8CDD: ; CODE XREF: __exec+109j + mov ax, [di+0E7h] + xor dx, dx + mov dl, ah + mov ah, al + xor al, al + shl ax, 1 + rcl dx, 1 + add ax, [di+0E5h] + adc dx, 0 + mov cx, 4 + +loc_8CF7: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_8CF7 + inc ax + sub ax, [di+0EBh] + add ax, [di+0EDh] + xchg ax, bx + mov ax, [di+8Fh] + add ax, 10h + add [di+0F9h], ax + add [di+0F1h], ax + xchg ax, bx + jmp short loc_8D43 +; --------------------------------------------------------------------------- + +loc_8D19: ; CODE XREF: __exec+123j + mov ax, 4202h + xor cx, cx + xor dx, dx + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from end of file + mov cx, 4 + +loc_8D25: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_8D25 + inc ax + xchg ax, bx + mov ax, [di+8Fh] + mov [di+0F9h], ax + mov word ptr [di+0F7h], 100h + mov [di+0F1h], ax + add ax, 10h + xchg ax, bx + +loc_8D43: ; CODE XREF: __exec+16Ej + mov [di+0FBh], bx + mov [di+0FDh], bx + add ax, 16h + cmp ax, [bp+var_4] + mov ax, 8 + jbe short loc_8D59 + jmp loc_8CD1 +; --------------------------------------------------------------------------- + +loc_8D59: ; CODE XREF: __exec+1ABj + mov ah, 3Eh ; '>' + mov bx, [bp+var_2] + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov es, word ptr [di+8Fh] + assume es:nothing + mov ah, 4Ah ; 'J' + mov bx, [bp+var_4] + int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) + ; ES = segment address of block to change + ; BX = new size in paragraphs + jnb short loc_8D70 + jmp loc_8CD1 +; --------------------------------------------------------------------------- + +loc_8D70: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_8BA4, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 8A42h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_8BA8, 0 + jnz short loc_8DA2 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_8DDB + jmp short loc_8DA6 +; --------------------------------------------------------------------------- + +loc_8DA2: ; CODE XREF: __exec+1EDj + mov ax, cs:word_8BA6 + +loc_8DA6: ; CODE XREF: __exec+1F7j + mov es, ax + xor di, di + lds si, [bp+var_A] + assume ds:dseg + add cx, cx + add cx, cx + add cx, cx + rep movsw + push es + push dx + push ds + mov ds, cs:DGROUP@ + nop + push cs + call near ptr __cexit + pop ds + pop dx + cmp cs:byte_8BA8, 0 + jnz short loc_8DD5 + mov es, cs:word_8BA6 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_8DD5: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:word_8BA2 +; --------------------------------------------------------------------------- + +loc_8DDB: ; CODE XREF: __exec+21j __exec+131j ... + pop es + pop di + pop ds + pop si + push ax + call __IOERROR + mov sp, bp + pop bp + retn +__exec endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int execl(char *path, char *arg0, ...) +_execl proc far ; CODE XREF: _main+DFP + +s = dword ptr 6 +arg0 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ss ; int + lea ax, [bp+arg0] + push ax ; int + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + mov ax, 8BA9h + push ax ; int + call sub_9349 + add sp, 10h + pop di + pop si + pop bp + retf +_execl endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl setblock(unsigned int _segx, unsigned int newsize) +_setblock proc far ; CODE XREF: sub_3E20+4Ep + +_segx = word ptr 6 +newsize = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ah, 4Ah ; 'J' + mov bx, [bp+newsize] + mov es, [bp+_segx] + int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK) + ; ES = segment address of block to change + ; BX = new size in paragraphs + jb short loc_8E20 + mov ax, 0FFFFh + jmp short loc_8E26 +; --------------------------------------------------------------------------- + +loc_8E20: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_8E26: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_8E2A proc far + push si + push di + mov es, word_CFF6 + xor di, di + push es + push word_CFF8 + nop + push cs + call near ptr sub_3C38 + pop bx + mov bx, ax + pop es + mov word ptr dword_DC7A, ax + mov word ptr dword_DC7A+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_8E53 + nop + nop + jmp near ptr sub_2CE4 +; --------------------------------------------------------------------------- + +loc_8E53: ; CODE XREF: sub_8E2A+22j + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_8E6D + +loc_8E5E: ; CODE XREF: sub_8E2A+41j + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_8E5E + +loc_8E6D: ; CODE XREF: sub_8E2A+32j + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_DC7A+2 + mov word_CFF2, ax + mov ax, word ptr dword_DC7A + mov envp, ax + retn +sub_8E2A endp + +; --------------------------------------------------------------------------- + +unknown_libname_2: ; BCC v4.x/5.x DOS runtime + push si + push di + pop di + pop si + retf +; --------------------------------------------------------------------------- + dd byte_C3A2 + db 4 dup(0), 87h, 8Eh + dw seg seg000 + db 0E2h, 0FFh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_8EDC + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_8EDA + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8EDE +; --------------------------------------------------------------------------- + +loc_8EDA: ; CODE XREF: seg000:8EC9j + jmp short loc_8EDE +; --------------------------------------------------------------------------- + +loc_8EDC: ; CODE XREF: seg000:8EA0j + xor ax, ax + +loc_8EDE: ; CODE XREF: seg000:8ED8j + ; seg000:loc_8EDAj + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + +unknown_libname_3: ; BCC v4.x/5.x DOS runtime + push si + push di + pop di + pop si + retf +; --------------------------------------------------------------------------- + dd byte_C54A + dd byte_C4FC + db 4 dup(0), 0B5h, 1 + dw seg seg006 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 0E7h, 8Eh + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 0F3h, 8Eh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_8F5E + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_8F5C + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8F60 +; --------------------------------------------------------------------------- + +loc_8F5C: ; CODE XREF: seg000:8F4Bj + jmp short loc_8F60 +; --------------------------------------------------------------------------- + +loc_8F5E: ; CODE XREF: seg000:8F22j + xor ax, ax + +loc_8F60: ; CODE XREF: seg000:8F5Aj + ; seg000:loc_8F5Cj + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_8FAB + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_8FA9 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8FAD +; --------------------------------------------------------------------------- + +loc_8FA9: ; CODE XREF: seg000:8F98j + jmp short loc_8FAD +; --------------------------------------------------------------------------- + +loc_8FAB: ; CODE XREF: seg000:8F6Fj + xor ax, ax + +loc_8FAD: ; CODE XREF: seg000:8FA7j + ; seg000:loc_8FA9j + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + +unknown_libname_4: ; BCC v4.x/5.x DOS runtime + push si + push di + pop di + pop si + retf +; --------------------------------------------------------------------------- + db 4 dup(0), 0B6h, 8Fh + dw seg seg000 + db 0E2h, 0FFh, 0FDh, 0Bh + dw seg seg006 + dd 0 + dd byte_CEF3 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg006 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg006 + db 0, 2 dup(1), 7 dup(0), 0C0h, 8Fh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0C8h, 8Fh, 6, 0 + db 5, 0, 1, 0, 0E0h, 8Fh, 0FDh, 0Bh + dw seg seg006 + db 4 dup(0), 0C3h, 0Bh + dw seg seg006 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg006 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg006 + db 0, 2 dup(1), 7 dup(0), 4, 90h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0Ch, 90h, 6, 0, 5 + db 0, 1, 0, 24h, 90h, 0FDh, 0Bh + dw seg seg006 + dd 0 + dd byte_CEF3 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg006 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg006 + db 0, 2 dup(1), 7 dup(0), 48h, 90h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 50h, 90h, 6, 0, 5 + db 0, 1, 0, 68h, 90h, 4 dup(0), 8Ch, 90h + dw seg seg000 + db 0E2h, 0FFh, 49h, 0Bh + dw seg seg006 + dd byte_CF2D + db 4 dup(0), 96h, 90h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0A8h, 90h + dw seg seg000 + db 0E2h, 0FFh, 49h, 0Bh + dw seg seg006 + dd byte_CE2B + db 4 dup(0), 0B2h, 90h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0C4h, 90h + dw seg seg000 + db 0E2h, 0FFh, 49h, 0Bh + dw seg seg006 + dd byte_CE2B + db 4 dup(0), 0CEh, 90h + dw seg seg000 + db 0E2h, 0FFh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_915C + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_915A + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_915E +; --------------------------------------------------------------------------- + +loc_915A: ; CODE XREF: seg000:9149j + jmp short loc_915E +; --------------------------------------------------------------------------- + +loc_915C: ; CODE XREF: seg000:9120j + xor ax, ax + +loc_915E: ; CODE XREF: seg000:9158j + ; seg000:loc_915Aj + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_91A9 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_91A7 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_91AB +; --------------------------------------------------------------------------- + +loc_91A7: ; CODE XREF: seg000:9196j + jmp short loc_91AB +; --------------------------------------------------------------------------- + +loc_91A9: ; CODE XREF: seg000:916Dj + xor ax, ax + +loc_91AB: ; CODE XREF: seg000:91A5j + ; seg000:loc_91A7j + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_91F6 + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + xor ax, ax + push ax + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + test byte ptr [bp+0Ah], 1 + jz short loc_91F4 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_91F8 +; --------------------------------------------------------------------------- + +loc_91F4: ; CODE XREF: seg000:91E3j + jmp short loc_91F8 +; --------------------------------------------------------------------------- + +loc_91F6: ; CODE XREF: seg000:91BAj + xor ax, ax + +loc_91F8: ; CODE XREF: seg000:91F2j + ; seg000:loc_91F4j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_91FC proc far ; CODE XREF: sub_B200+7BP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + cmp ah, 81h ; '' + jb short loc_9236 + cmp ah, 0A0h ; ' ' + jb short loc_9218 + cmp ah, 0E0h ; 'à' + jb short loc_9236 + cmp ah, 0F0h ; 'ð' + jnb short loc_9236 + +loc_9218: ; CODE XREF: sub_91FC+10j + cmp al, 40h ; '@' + jb short loc_9236 + cmp al, 0FDh ; 'ý' + jnb short loc_9236 + cmp al, 7Fh ; '' + jz short loc_9236 + cmp al, 80h ; '€' + adc al, 61h ; 'a' + jb short loc_922C + sub al, 0A2h ; '¢' + +loc_922C: ; CODE XREF: sub_91FC+2Cj + rcl ah, 1 + and ah, 7Fh + add ax, 1F21h + jmp short loc_9238 +; --------------------------------------------------------------------------- + +loc_9236: ; CODE XREF: sub_91FC+Bj sub_91FC+15j ... + xor ax, ax + +loc_9238: ; CODE XREF: sub_91FC+38j + pop di + pop si + pop bp + retf +sub_91FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_923C proc far ; CODE XREF: sub_9349+3Ap + +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 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + jmp short loc_92AD +; --------------------------------------------------------------------------- + +loc_9252: ; CODE XREF: sub_923C+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call sub_4305 + pop cx + or ax, ax + jz short loc_9271 + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_92AA + jmp short loc_92B6 +; --------------------------------------------------------------------------- + +loc_9271: ; CODE XREF: sub_923C+25j + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + jmp short loc_9290 +; --------------------------------------------------------------------------- + +loc_927F: ; CODE XREF: sub_923C+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_9299 + inc word ptr [bp+var_8] + +loc_9290: ; CODE XREF: sub_923C+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_927F + +loc_9299: ; CODE XREF: sub_923C+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_92AA + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_92BA +; --------------------------------------------------------------------------- + +loc_92AA: ; CODE XREF: sub_923C+31j sub_923C+64j + inc word ptr [bp+var_4] + +loc_92AD: ; CODE XREF: sub_923C+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_9252 + +loc_92B6: ; CODE XREF: sub_923C+33j + xor dx, dx + xor ax, ax + +loc_92BA: ; CODE XREF: sub_923C+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_923C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_92C0(int, int, char *pathname, char *src, int) +sub_92C0 proc far ; CODE XREF: sub_9349+7Fp sub_9349+BDp ... + +dest = byte ptr -50h +arg_0 = word ptr 6 +arg_2 = word ptr 8 +pathname = dword ptr 0Ah +src = dword ptr 0Eh +arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 50h + push si + push di + push [bp+arg_2] + push [bp+arg_0] ; src + push ss + lea ax, [bp+dest] + push ax ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push ss + lea ax, [bp+dest] + push ax ; dest + nop + push cs + call near ptr _strcat + add sp, 10h + cmp [bp+arg_C], 0 + jz short loc_9314 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 0E66h + push ax ; varname + push ss + lea ax, [bp+dest] + push ax ; file + nop + push cs + call near ptr __searchenv + add sp, 0Ch + les bx, [bp+pathname] + cmp byte ptr es:[bx], 0 + jz short loc_9341 + jmp short loc_933C +; --------------------------------------------------------------------------- + +loc_9314: ; CODE XREF: sub_92C0+2Fj + push ss + lea ax, [bp+dest] + push ax ; src + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov ax, 4 + push ax ; char + push ss + lea ax, [bp+dest] + push ax ; pathname + nop + push cs + call near ptr __access + add sp, 6 + or ax, ax + jnz short loc_9341 + +loc_933C: ; CODE XREF: sub_92C0+52j + mov ax, 1 + jmp short loc_9343 +; --------------------------------------------------------------------------- + +loc_9341: ; CODE XREF: sub_92C0+50j sub_92C0+7Aj + xor ax, ax + +loc_9343: ; CODE XREF: sub_92C0+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_92C0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_9349(int, char *s, int, int, int, int, int) +sub_9349 proc near ; CODE XREF: _execl+19p + +pathname = word ptr -9Ch +var_1A = word ptr -1Ah +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +s1 = dword ptr -10h +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 4 +s = dword ptr 6 +arg_6 = word ptr 0Ah +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, 9Ch + push si + push di + les bx, [bp+s] + mov al, es:[bx] + cbw + mov dx, ax + cmp ax, 61h ; 'a' + jb short loc_9363 + sub dx, 20h ; ' ' + +loc_9363: ; CODE XREF: sub_9349+15j + cmp dx, 41h ; 'A' + jb short loc_9377 + cmp dx, 5Ah ; 'Z' + ja short loc_9377 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_938D + +loc_9377: ; CODE XREF: sub_9349+1Dj sub_9349+22j + push ds + mov ax, 0E6Bh + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_923C + add sp, 8 + or ax, dx + jz short loc_9392 + +loc_938D: ; CODE XREF: sub_9349+2Cj + mov [bp+arg_E], 0 + +loc_9392: ; CODE XREF: sub_9349+42j + mov [bp+var_1A], 0 + mov ax, 2Eh ; '.' + push ax ; char + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr sub_4FB4 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_93F1 + push [bp+arg_E] ; int + push ds + mov ax, 0E6Eh + push ax ; src + push ss + lea ax, [bp+pathname] + push ax ; pathname + push word ptr [bp+s+2] ; int + push word ptr [bp+s] ; int + push cs + call near ptr sub_92C0 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_93D8 + jmp loc_945C +; --------------------------------------------------------------------------- + +loc_93D8: ; CODE XREF: sub_9349+8Aj + push ds + mov ax, 0E6Fh + push ax ; s2 + push word ptr [bp+s1+2] + push word ptr [bp+s1] ; s1 + nop + push cs + call near ptr _stricmp + add sp, 8 + or ax, ax + jnz short loc_945C + jmp short loc_9457 +; --------------------------------------------------------------------------- + +loc_93F1: ; CODE XREF: sub_9349+68j + push [bp+arg_E] ; int + push ds + mov ax, 0E74h + push ax ; src + push ss + lea ax, [bp+pathname] + push ax ; pathname + push word ptr [bp+s+2] ; int + push word ptr [bp+s] ; int + push cs + call near ptr sub_92C0 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_945C + push [bp+arg_E] ; int + push ds + mov ax, 0E79h + push ax ; src + push ss + lea ax, [bp+pathname] + push ax ; pathname + push word ptr [bp+s+2] ; int + push word ptr [bp+s] ; int + push cs + call near ptr sub_92C0 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_945C + push [bp+arg_E] ; int + push ds + mov ax, 0E7Eh + push ax ; src + push ss + lea ax, [bp+pathname] + push ax ; pathname + push word ptr [bp+s+2] ; int + push word ptr [bp+s] ; int + push cs + call near ptr sub_92C0 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_945C + +loc_9457: ; CODE XREF: sub_9349+A6j + mov [bp+var_1A], 1 + +loc_945C: ; CODE XREF: sub_9349+8Cj sub_9349+A4j ... + cmp [bp+var_18], 0 + jz short loc_947E + cmp [bp+var_1A], 0 + jz short loc_9487 + push ds + mov ax, 0E83h + push ax ; name + nop + push cs + call near ptr _getenv + pop cx + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_9487 + +loc_947E: ; CODE XREF: sub_9349+117j + mov word_CFFE, 2 + jmp loc_954D +; --------------------------------------------------------------------------- + +loc_9487: ; CODE XREF: sub_9349+11Dj + ; sub_9349+133j + cmp [bp+var_1A], 0 + jz short loc_94A0 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 0E8Bh + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_94B4 +; --------------------------------------------------------------------------- + +loc_94A0: ; CODE XREF: sub_9349+142j + push ss ; int + lea ax, [bp+pathname] + push ax ; int + xor ax, ax + push ax + push ax ; s + mov ax, [bp+arg_6] + add ax, 4 + push [bp+arg_8] ; int + push ax ; int + +loc_94B4: ; CODE XREF: sub_9349+155j + call __DOSCMD + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+var_8] + or ax, [bp+var_6] + jnz short loc_94CE + mov word_CFFE, 8 + jmp loc_954D +; --------------------------------------------------------------------------- + +loc_94CE: ; CODE XREF: sub_9349+17Aj + mov ax, [bp+var_8] + inc ax + push [bp+var_6] + push ax ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + cmp ax, 80h ; '€' + jb short loc_94F7 + mov word_CFFE, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + jmp short loc_954D +; --------------------------------------------------------------------------- + +loc_94F7: ; CODE XREF: sub_9349+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_950C + mov dx, word ptr dword_DC7A+2 + mov ax, word ptr dword_DC7A + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_950C: ; CODE XREF: sub_9349+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_9520 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_9526 +; --------------------------------------------------------------------------- + +loc_9520: ; CODE XREF: sub_9349+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_9526: ; CODE XREF: sub_9349+1D5j + push dx + push ax ; s + push ss + lea ax, [bp+var_14] + push ax ; __int32 + call __DOSENV + mov [bp+var_A], dx + mov [bp+var_C], ax + or ax, dx + jnz short loc_9552 + mov word_CFFE, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B05 + pop cx + pop cx + +loc_954D: ; CODE XREF: sub_9349+13Bj + ; sub_9349+182j ... + mov ax, 0FFFFh + jmp short loc_959D +; --------------------------------------------------------------------------- + +loc_9552: ; CODE XREF: sub_9349+1EFj + call off_D7BE + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_9570 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_9576 +; --------------------------------------------------------------------------- + +loc_9570: ; CODE XREF: sub_9349+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_9576: ; CODE XREF: sub_9349+225j + push dx + push ax + call [bp+arg_0] + add sp, 0Ch + mov [bp+var_16], ax + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + nop + push cs + call near ptr sub_3B05 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B05 + add sp, 8 + mov ax, [bp+var_16] + +loc_959D: ; CODE XREF: sub_9349+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_9349 endp + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + ;org 3 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_95A3 proc near ; CODE XREF: sub_9AD4+8p sub_9B64+8p ... + +var_2 = word ptr -2 +arg_0 = dword ptr 4 + + enter 2, 0 + push large [bp+arg_0] + call sub_B9C + call sub_C1A + mov [bp+var_2], ax + push ds + push offset unk_DE32 + push ax + call sub_AE8 + call sub_ABC + leave + retn 4 +sub_95A3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_95CB proc near ; CODE XREF: sub_A8FA+44Ap + +var_9 = byte ptr -9 +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 + + enter 0Ah, 0 + push si + push di + mov di, 0A0h ; ' ' + mov [bp+var_4], 989680h + mov [bp+var_9], 0 + xor si, si + jmp short loc_9638 +; --------------------------------------------------------------------------- + +loc_95E4: ; CODE XREF: sub_95CB+70j + mov eax, [bp+arg_0] + cdq + idiv [bp+var_4] + mov ebx, 0Ah + cdq + idiv ebx + mov [bp+var_8], edx + mov eax, [bp+var_4] + cdq + idiv ebx + mov [bp+var_4], eax + mov ax, word ptr [bp+var_8] + add ax, 0A0h ; ' ' + mov di, ax + cmp [bp+var_8], 0 + jz short loc_961D + mov [bp+var_9], 1 + +loc_961D: ; CODE XREF: sub_95CB+4Cj + cmp [bp+var_9], 0 + jz short loc_9637 + mov ax, si + shl ax, 4 + add ax, [bp+arg_6] + push ax + push [bp+arg_4] + push di + push 0Fh + call sub_1322 + +loc_9637: ; CODE XREF: sub_95CB+56j + inc si + +loc_9638: ; CODE XREF: sub_95CB+17j + cmp si, 8 + jl short loc_95E4 + pop di + pop si + leave + retn 8 +sub_95CB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9643 proc near ; CODE XREF: sub_9B64+8Fp sub_9B64+C5p ... + +var_50 = byte ptr -50h +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + enter 50h, 0 + push si + push di + lea ax, [bp+var_50] + push ss + push ax + push ds + push offset unk_D030 + mov cx, 50h ; 'P' + call SCOPY@ + xor si, si + xor di, di + jmp short loc_96C4 +; --------------------------------------------------------------------------- + +loc_9660: ; CODE XREF: sub_9643+84j + call sub_B536 + les bx, [bp+arg_2] + add bx, si + mov al, es:[bx] + mov [bp+si+var_50], al + inc si + mov bx, word ptr [bp+arg_2] + add bx, si + mov al, es:[bx] + mov [bp+si+var_50], al + inc si + mov [bp+si+var_50], 0 + push ss + lea ax, [bp+var_50] + push ax + mov al, byte_F02A + cbw + push ax + push [bp+arg_8] + push [bp+arg_A] + call sub_B200 + add sp, 0Ah + cmp byte_F02B, 0 + jz short loc_96B9 + cmp word_FAEE, 0 + jz short loc_96B9 + test di, 3 + jz short loc_96C1 + mov ax, [bp+arg_0] + mov bx, 3 + cwd + idiv bx + push ax + jmp short loc_96BC +; --------------------------------------------------------------------------- + +loc_96B9: ; CODE XREF: sub_9643+5Bj sub_9643+62j + push [bp+arg_0] + +loc_96BC: ; CODE XREF: sub_9643+74j + call sub_B520 + +loc_96C1: ; CODE XREF: sub_9643+68j + add di, 2 + +loc_96C4: ; CODE XREF: sub_9643+1Bj + cmp di, [bp+arg_6] + jl short loc_9660 + xor si, si + jmp short loc_96EC +; --------------------------------------------------------------------------- + +loc_96CD: ; CODE XREF: sub_9643+ACj + call sub_B536 + cmp byte_F02B, 0 + jz short loc_96E4 + cmp word_FAEE, 0 + jz short loc_96E4 + push 0 + jmp short loc_96E6 +; --------------------------------------------------------------------------- + +loc_96E4: ; CODE XREF: sub_9643+94j sub_9643+9Bj + push 2 + +loc_96E6: ; CODE XREF: sub_9643+9Fj + call sub_B520 + inc si + +loc_96EC: ; CODE XREF: sub_9643+88j + cmp si, 14h + jl short loc_96CD + cmp byte_F02B, 0 + jz short loc_96FB + call sub_9A7E + +loc_96FB: ; CODE XREF: sub_9643+B3j + pop di + pop si + leave + retn 0Ch +sub_9643 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9701 proc far ; CODE XREF: sub_97F1+38p + +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 + + enter 8, 0 + push si + push di + mov ax, [bp+arg_0] + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_2] + shl dx, 4 + add ax, dx + mov si, ax + xor di, di + jmp loc_97E6 +; --------------------------------------------------------------------------- + +loc_9724: ; CODE XREF: sub_9701+E8j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F892 + add bx, si + mov ax, es:[bx] + mov [bp+var_8], ax + les bx, dword_F896 + add bx, si + mov ax, es:[bx] + mov [bp+var_6], ax + les bx, dword_F89A + add bx, si + mov ax, es:[bx] + mov [bp+var_4], ax + les bx, dword_F89E + add bx, si + mov ax, es:[bx] + mov [bp+var_2], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_F72 + mov ax, di + add ax, ax + les bx, [bp+arg_4] + add bx, ax + mov ax, es:[bx] + les bx, dword_F892 + add bx, si + mov es:[bx], ax + call sub_F9C + mov ax, di + add ax, ax + les bx, [bp+arg_4] + add bx, ax + mov ax, es:[bx] + and ax, [bp+var_8] + les bx, dword_F892 + add bx, si + or es:[bx], ax + mov ax, di + add ax, ax + les bx, [bp+arg_4] + add bx, ax + mov ax, es:[bx] + and ax, [bp+var_6] + les bx, dword_F896 + add bx, si + or es:[bx], ax + mov ax, di + add ax, ax + les bx, [bp+arg_4] + add bx, ax + mov ax, es:[bx] + and ax, [bp+var_4] + les bx, dword_F89A + add bx, si + or es:[bx], ax + mov ax, di + add ax, ax + les bx, [bp+arg_4] + add bx, ax + mov ax, es:[bx] + and ax, [bp+var_2] + les bx, dword_F89E + add bx, si + or es:[bx], ax + add si, 50h ; 'P' + inc di + +loc_97E6: ; CODE XREF: sub_9701+20j + cmp di, 10h + jl loc_9724 + pop di + pop si + leave + retf +sub_9701 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_97F1 proc far ; CODE XREF: sub_A8FA+414p + ; sub_A8FA+456p ... + +var_60 = byte ptr -60h +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 60h, 0 + push si + push di + lea ax, [bp+var_60] + push ss + push ax + push ds + push offset aKkuukkuukkuukk ; "ªªUUªªUUªªUUªªUUªªUUªªUUªªUUªªUU3333ÌÌÌ"... + mov cx, 60h ; '`' + call SCOPY@ + xor di, di + jmp short loc_983D +; --------------------------------------------------------------------------- + +loc_980C: ; CODE XREF: sub_97F1+4Fj + xor si, si + jmp short loc_9830 +; --------------------------------------------------------------------------- + +loc_9810: ; CODE XREF: sub_97F1+42j + mov ax, di + shl ax, 5 + lea dx, [bp+var_60] + add ax, dx + push ss + push ax + push [bp+arg_2] + mov ax, si + shl ax, 4 + add ax, [bp+arg_0] + push ax + push cs + call near ptr sub_9701 + add sp, 8 + inc si + +loc_9830: ; CODE XREF: sub_97F1+1Dj + cmp si, [bp+arg_4] + jl short loc_9810 + push 0Ah + call sub_B520 + inc di + +loc_983D: ; CODE XREF: sub_97F1+19j + cmp di, 3 + jl short loc_980C + pop di + pop si + leave + retf +sub_97F1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9846 proc near ; CODE XREF: sub_A8FA+5D5p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 + + enter 2, 0 + push si + push di + mov di, [bp+arg_4] + mov si, 64h ; 'd' + mov [bp+var_2], 0 + xor cx, cx + jmp short loc_98A1 +; --------------------------------------------------------------------------- + +loc_985A: ; CODE XREF: sub_9846+5Ej + mov ax, di + cwd + idiv si + mov [bp+var_1], al + cmp [bp+var_2], 0 + jnz short loc_986B + mov [bp+var_2], al + +loc_986B: ; CODE XREF: sub_9846+20j + cmp [bp+var_2], 0 + jnz short loc_9876 + cmp cx, 2 + jnz short loc_9885 + +loc_9876: ; CODE XREF: sub_9846+29j + les bx, [bp+arg_0] + add bx, cx + mov al, [bp+var_1] + add al, 0A0h ; ' ' + mov es:[bx], al + jmp short loc_988E +; --------------------------------------------------------------------------- + +loc_9885: ; CODE XREF: sub_9846+2Ej + les bx, [bp+arg_0] + add bx, cx + mov byte ptr es:[bx], 0CFh ; 'Ï' + +loc_988E: ; CODE XREF: sub_9846+3Dj + mov al, [bp+var_1] + cbw + imul si + sub di, ax + inc cx + mov bx, 0Ah + mov ax, si + cwd + idiv bx + mov si, ax + +loc_98A1: ; CODE XREF: sub_9846+12j + cmp cx, 3 + jl short loc_985A + les bx, [bp+arg_0] + add bx, cx + mov byte ptr es:[bx], 0 + pop di + pop si + leave + retn 6 +sub_9846 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_98B5 proc near ; CODE XREF: sub_9B64+74p sub_9B64+A2p ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 6, 0 + push si + push di + cmp [bp+arg_0], 0 + jnz short loc_98C5 + xor ax, ax + jmp short loc_98DE +; --------------------------------------------------------------------------- + +loc_98C5: ; CODE XREF: sub_98B5+Aj + cmp [bp+arg_0], 1 + jnz short loc_98D0 + mov ax, 28h ; '(' + jmp short loc_98DE +; --------------------------------------------------------------------------- + +loc_98D0: ; CODE XREF: sub_98B5+14j + cmp [bp+arg_0], 2 + jnz short loc_98DB + mov ax, 3E80h + jmp short loc_98DE +; --------------------------------------------------------------------------- + +loc_98DB: ; CODE XREF: sub_98B5+1Fj + mov ax, 3EA8h + +loc_98DE: ; CODE XREF: sub_98B5+Ej sub_98B5+19j ... + mov si, ax + mov di, 1F54h + call sub_C10B + mov [bp+var_2], 0 + jmp short loc_9930 +; --------------------------------------------------------------------------- + +loc_98EF: ; CODE XREF: sub_98B5+80j + mov [bp+var_4], 0 + jmp short loc_9921 +; --------------------------------------------------------------------------- + +loc_98F6: ; CODE XREF: sub_98B5+70j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F892 + add bx, si + mov ax, es:[bx] + mov [bp+var_6], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, word ptr dword_F892 + add bx, di + mov ax, [bp+var_6] + mov es:[bx], ax + add [bp+var_4], 2 + add si, 2 + add di, 2 + +loc_9921: ; CODE XREF: sub_98B5+3Fj + cmp [bp+var_4], 28h ; '(' + jl short loc_98F6 + inc [bp+var_2] + add di, 28h ; '(' + add si, 28h ; '(' + +loc_9930: ; CODE XREF: sub_98B5+38j + cmp [bp+var_2], 0C8h ; 'È' + jl short loc_98EF + call sub_7A8 + pop di + pop si + leave + retn 2 +sub_98B5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9942 proc near ; CODE XREF: sub_A8CA+17p + ; sub_A8FA+152p ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 6, 0 + push si + push di + cmp [bp+arg_0], 0 + jnz short loc_9952 + xor ax, ax + jmp short loc_996B +; --------------------------------------------------------------------------- + +loc_9952: ; CODE XREF: sub_9942+Aj + cmp [bp+arg_0], 1 + jnz short loc_995D + mov ax, 28h ; '(' + jmp short loc_996B +; --------------------------------------------------------------------------- + +loc_995D: ; CODE XREF: sub_9942+14j + cmp [bp+arg_0], 2 + jnz short loc_9968 + mov ax, 3E80h + jmp short loc_996B +; --------------------------------------------------------------------------- + +loc_9968: ; CODE XREF: sub_9942+1Fj + mov ax, 3EA8h + +loc_996B: ; CODE XREF: sub_9942+Ej sub_9942+19j ... + mov si, ax + mov ax, [bp+arg_4] + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_2] + shl dx, 4 + add ax, dx + mov di, ax + call sub_C10B + mov [bp+var_2], 0 + jmp short loc_99D2 +; --------------------------------------------------------------------------- + +loc_9991: ; CODE XREF: sub_9942+95j + mov [bp+var_4], 0 + jmp short loc_99C3 +; --------------------------------------------------------------------------- + +loc_9998: ; CODE XREF: sub_9942+85j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F892 + add bx, si + mov ax, es:[bx] + mov [bp+var_6], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, word ptr dword_F892 + add bx, di + mov ax, [bp+var_6] + mov es:[bx], ax + add [bp+var_4], 2 + add si, 2 + add di, 2 + +loc_99C3: ; CODE XREF: sub_9942+54j + cmp [bp+var_4], 28h ; '(' + jl short loc_9998 + inc [bp+var_2] + add di, 28h ; '(' + add si, 28h ; '(' + +loc_99D2: ; CODE XREF: sub_9942+4Dj + cmp [bp+var_2], 0C8h ; 'È' + jl short loc_9991 + call sub_7A8 + pop di + pop si + leave + retn 6 +sub_9942 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_99E4 proc near ; CODE XREF: sub_9B64+1A1p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 6, 0 + push si + push di + cmp [bp+arg_4], 0 + jnz short loc_99F4 + xor ax, ax + jmp short loc_9A0D +; --------------------------------------------------------------------------- + +loc_99F4: ; CODE XREF: sub_99E4+Aj + cmp [bp+arg_4], 1 + jnz short loc_99FF + mov ax, 28h ; '(' + jmp short loc_9A0D +; --------------------------------------------------------------------------- + +loc_99FF: ; CODE XREF: sub_99E4+14j + cmp [bp+arg_4], 2 + jnz short loc_9A0A + mov ax, 3E80h + jmp short loc_9A0D +; --------------------------------------------------------------------------- + +loc_9A0A: ; CODE XREF: sub_99E4+1Fj + mov ax, 3EA8h + +loc_9A0D: ; CODE XREF: sub_99E4+Ej sub_99E4+19j ... + mov si, ax + mov di, 1F54h + mov ax, [bp+arg_2] + imul ax, 50h + add si, ax + call sub_C10B + mov ax, [bp+arg_2] + mov [bp+var_2], ax + jmp short loc_9A68 +; --------------------------------------------------------------------------- + +loc_9A27: ; CODE XREF: sub_99E4+8Dj + mov [bp+var_4], 0 + jmp short loc_9A59 +; --------------------------------------------------------------------------- + +loc_9A2E: ; CODE XREF: sub_99E4+79j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F892 + add bx, si + mov ax, es:[bx] + mov [bp+var_6], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, word ptr dword_F892 + add bx, di + mov ax, [bp+var_6] + mov es:[bx], ax + add [bp+var_4], 2 + add si, 2 + add di, 2 + +loc_9A59: ; CODE XREF: sub_99E4+48j + cmp [bp+var_4], 28h ; '(' + jl short loc_9A2E + inc [bp+var_2] + add di, 28h ; '(' + add si, 28h ; '(' + +loc_9A68: ; CODE XREF: sub_99E4+41j + mov ax, [bp+arg_0] + add ax, [bp+arg_2] + cmp ax, [bp+var_2] + jg short loc_9A27 + call sub_7A8 + pop di + pop si + leave + retn 6 +sub_99E4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9A7E proc near ; CODE XREF: sub_9643+B5p sub_9AD4+30p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + push large 0C00000h + call sub_F72 + mov si, 14Ch + jmp short loc_9AC5 +; --------------------------------------------------------------------------- + +loc_9A94: ; CODE XREF: sub_9A7E+4Bj + mov di, 90h ; '' + jmp short loc_9ABE +; --------------------------------------------------------------------------- + +loc_9A99: ; CODE XREF: sub_9A7E+44j + mov ax, di + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + mov dx, si + shl dx, 4 + add ax, dx + mov [bp+var_2], ax + les bx, dword_F892 + add bx, [bp+var_2] + mov word ptr es:[bx], 0FFFFh + add di, 10h + +loc_9ABE: ; CODE XREF: sub_9A7E+19j + cmp di, 1F0h + jl short loc_9A99 + inc si + +loc_9AC5: ; CODE XREF: sub_9A7E+14j + cmp si, 15Ch + jl short loc_9A94 + call sub_F9C + pop di + pop si + leave + retn +sub_9A7E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9AD4 proc near ; CODE XREF: sub_9B64:loc_A097p + ; sub_A09D+7D1p + push bp + mov bp, sp + push si + push ds + push (offset aKkuukkuukkuukk+60h) + call sub_95A3 + push 1Eh + call sub_B520 + push 1 + call sub_249A + push 600h + push ds + push offset aEnding_m ; "ending.m" + call sub_B6E6 + add sp, 6 + push 0 + call sub_B839 + pop cx + call sub_9A7E + push 4 + call sub_245A + push 5 + call sub_B855 + pop cx + mov si, 0A0h ; ' ' + jmp short loc_9B5C +; --------------------------------------------------------------------------- + +loc_9B1B: ; CODE XREF: sub_9AD4+8Bj + push si + push 64h ; 'd' + lea ax, [si+13Fh] + push ax + push large 12B0004h + call sub_8FA + push large 0C00000h + call sub_F72 + lea ax, [si+138h] + push ax + push 64h ; 'd' + lea ax, [si+13Fh] + push ax + push 12Bh + call sub_D04 + call sub_F9C + push 1 + call sub_B520 + sub si, 4 + +loc_9B5C: ; CODE XREF: sub_9AD4+45j + cmp si, 24h ; '$' + jg short loc_9B1B + pop si + pop bp + retn +sub_9AD4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9B64 proc near ; CODE XREF: _main+9Ep + push bp + mov bp, sp + push si + push ds + push offset aEnd1_txt ; "end1.txt" + call sub_95A3 + push 600h + push ds + push offset aEnd1_m ; "end1.m" + call sub_B6E6 + add sp, 6 + push 0 + call sub_B839 + pop cx + mov word_D3B0, 0 + call far ptr loc_1C2C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd01_pi ; "ed01.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_536 + push 28h ; '(' + call sub_B520 + push 0 + call sub_98B5 + mov byte_F02A, 2Fh ; '/' + mov byte_F02B, 1 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_DE32 + push 6 + call sub_9643 + push 14h + call sub_B520 + push 1 + call sub_57A + push 1 + call sub_98B5 + push 1 + call sub_536 + mov si, 1 + jmp short loc_9C2D +; --------------------------------------------------------------------------- + +loc_9C15: ; CODE XREF: sub_9B64+CCj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9C2D: ; CODE XREF: sub_9B64+AFj + cmp si, 3 + jle short loc_9C15 + push 2 + call sub_98B5 + mov si, 4 + jmp short loc_9C54 +; --------------------------------------------------------------------------- + +loc_9C3C: ; CODE XREF: sub_9B64+F3j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9C54: ; CODE XREF: sub_9B64+D6j + cmp si, 5 + jle short loc_9C3C + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_DF46 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + mov si, 7 + jmp short loc_9C91 +; --------------------------------------------------------------------------- + +loc_9C79: ; CODE XREF: sub_9B64+130j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9C91: ; CODE XREF: sub_9B64+113j + cmp si, 9 + jle short loc_9C79 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_DFFE + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E02C + push 6 + call sub_9643 + push 14h + call sub_B520 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E05A + push 6 + call sub_9643 + xor si, si + jmp short loc_9D10 +; --------------------------------------------------------------------------- + +loc_9CDE: ; CODE XREF: sub_9B64+1AFj + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 0A00064h + push large 1DF0129h + push 2 + call sub_7F4 + push 3 + mov ax, si + add ax, ax + mov dx, 0C6h ; 'Æ' + sub dx, ax + push dx + push 2 + call sub_99E4 + push 1 + call sub_B520 + inc si + +loc_9D10: ; CODE XREF: sub_9B64+178j + cmp si, 64h ; 'd' + jl short loc_9CDE + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E088 + push 6 + call sub_9643 + mov byte_F02A, 26h ; '&' + mov si, 0Eh + jmp short loc_9D48 +; --------------------------------------------------------------------------- + +loc_9D30: ; CODE XREF: sub_9B64+1E7j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9D48: ; CODE XREF: sub_9B64+1CAj + cmp si, 0Fh + jle short loc_9D30 + mov byte_F02A, 2Fh ; '/' + mov si, 10h + jmp short loc_9D6F +; --------------------------------------------------------------------------- + +loc_9D57: ; CODE XREF: sub_9B64+20Ej + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9D6F: ; CODE XREF: sub_9B64+1F1j + cmp si, 11h + jle short loc_9D57 + mov byte_F02A, 26h ; '&' + mov si, 12h + jmp short loc_9D96 +; --------------------------------------------------------------------------- + +loc_9D7E: ; CODE XREF: sub_9B64+235j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9D96: ; CODE XREF: sub_9B64+218j + cmp si, 14h + jle short loc_9D7E + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E1F8 + push 6 + call sub_9643 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E226 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E254 + push 6 + call sub_9643 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd02_pi ; "ed02.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_57A + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 0 + jnz short loc_9E2A + push 0 + jmp short loc_9E3B +; --------------------------------------------------------------------------- + +loc_9E2A: ; CODE XREF: sub_9B64+2C0j + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 1 + jnz short loc_9E39 + push 2 + jmp short loc_9E3B +; --------------------------------------------------------------------------- + +loc_9E39: ; CODE XREF: sub_9B64+2CFj + push 3 + +loc_9E3B: ; CODE XREF: sub_9B64+2C4j + ; sub_9B64+2D3j + call sub_98B5 + push 2 + call sub_536 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E282 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + mov si, 19h + jmp short loc_9E7D +; --------------------------------------------------------------------------- + +loc_9E65: ; CODE XREF: sub_9B64+31Cj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9E7D: ; CODE XREF: sub_9B64+2FFj + cmp si, 1Ah + jle short loc_9E65 + mov byte_F02A, 26h ; '&' + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 0 + jnz loc_9F22 + mov si, 1Bh + jmp short loc_9EB1 +; --------------------------------------------------------------------------- + +loc_9E99: ; CODE XREF: sub_9B64+350j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9EB1: ; CODE XREF: sub_9B64+333j + cmp si, 1Ch + jle short loc_9E99 + mov byte_F02A, 2Fh ; '/' + mov si, 1Dh + jmp short loc_9ED8 +; --------------------------------------------------------------------------- + +loc_9EC0: ; CODE XREF: sub_9B64+377j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9ED8: ; CODE XREF: sub_9B64+35Aj + cmp si, 1Eh + jle short loc_9EC0 + push 1 + call sub_98B5 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E3C4 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E3F2 + push 0Ch + call sub_9643 + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E420 + jmp loc_A092 +; --------------------------------------------------------------------------- + +loc_9F22: ; CODE XREF: sub_9B64+32Cj + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 1 + jnz loc_9FD3 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E44E + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E47C + push 6 + call sub_9643 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E4AA + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + mov si, 25h ; '%' + jmp short loc_9F8E +; --------------------------------------------------------------------------- + +loc_9F76: ; CODE XREF: sub_9B64+42Dj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_9F8E: ; CODE XREF: sub_9B64+410j + cmp si, 26h ; '&' + jle short loc_9F76 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E534 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E562 + push 0Ch + call sub_9643 + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E590 + jmp loc_A092 +; --------------------------------------------------------------------------- + +loc_9FD3: ; CODE XREF: sub_9B64+3C7j + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 2 + jnz loc_A097 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E5BE + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E5EC + push 6 + call sub_9643 + mov byte_F02A, 26h ; '&' + mov si, 2Ch ; ',' + jmp short loc_A029 +; --------------------------------------------------------------------------- + +loc_A011: ; CODE XREF: sub_9B64+4C8j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A029: ; CODE XREF: sub_9B64+4ABj + cmp si, 2Dh ; '-' + jle short loc_A011 + mov byte_F02A, 2Fh ; '/' + mov si, 2Eh ; '.' + jmp short loc_A050 +; --------------------------------------------------------------------------- + +loc_A038: ; CODE XREF: sub_9B64+4EFj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A050: ; CODE XREF: sub_9B64+4D2j + cmp si, 2Fh ; '/' + jle short loc_A038 + mov byte_F02A, 26h ; '&' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E6D2 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E700 + push 0Ch + call sub_9643 + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E72E + +loc_A092: ; CODE XREF: sub_9B64+3BBj + ; sub_9B64+46Cj + push 9 + call sub_9643 + +loc_A097: ; CODE XREF: sub_9B64+478j + call sub_9AD4 + pop si + pop bp + retn +sub_9B64 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A09D proc near ; CODE XREF: _main:loc_B1BAp + push bp + mov bp, sp + push si + push ds + push offset aEnd2_txt ; "end2.txt" + call sub_95A3 + push 600h + push ds + push offset aEnd1_m ; "end1.m" + call sub_B6E6 + add sp, 6 + push 0 + call sub_B839 + pop cx + mov word_D3B0, 0 + call far ptr loc_1C2C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd01_pi ; "ed01.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_536 + push 28h ; '(' + call sub_B520 + push 0 + call sub_98B5 + mov byte_F02A, 2Fh ; '/' + mov byte_F02B, 1 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_DE32 + push 6 + call sub_9643 + push 14h + call sub_B520 + push 1 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd03_pi ; "ed03.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 0 + call sub_98B5 + push 1 + call sub_536 + mov si, 1 + jmp short loc_A19D +; --------------------------------------------------------------------------- + +loc_A185: ; CODE XREF: sub_A09D+103j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A19D: ; CODE XREF: sub_A09D+E6j + cmp si, 3 + jle short loc_A185 + push 1 + call sub_98B5 + mov si, 4 + jmp short loc_A1C4 +; --------------------------------------------------------------------------- + +loc_A1AC: ; CODE XREF: sub_A09D+12Aj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A1C4: ; CODE XREF: sub_A09D+10Dj + cmp si, 9 + jle short loc_A1AC + push 2 + call sub_98B5 + mov si, 0Ah + jmp short loc_A1EB +; --------------------------------------------------------------------------- + +loc_A1D3: ; CODE XREF: sub_A09D+151j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A1EB: ; CODE XREF: sub_A09D+134j + cmp si, 0Bh + jle short loc_A1D3 + push 3 + call sub_98B5 + mov si, 0Ch + jmp short loc_A212 +; --------------------------------------------------------------------------- + +loc_A1FA: ; CODE XREF: sub_A09D+178j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A212: ; CODE XREF: sub_A09D+15Bj + cmp si, 0Dh + jle short loc_A1FA + push ds + push offset aEd03a_rgb ; "ed03a.rgb" + call sub_1E9A + call far ptr loc_1C2C + mov byte_F02A, 29h ; ')' + mov si, 0Eh + jmp short loc_A247 +; --------------------------------------------------------------------------- + +loc_A22F: ; CODE XREF: sub_A09D+1ADj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A247: ; CODE XREF: sub_A09D+190j + cmp si, 0Fh + jle short loc_A22F + push 2 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd04_pi ; "ed04.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_98B5 + push 2 + call sub_536 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E112 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E140 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + mov si, 12h + jmp short loc_A2EA +; --------------------------------------------------------------------------- + +loc_A2D2: ; CODE XREF: sub_A09D+250j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A2EA: ; CODE XREF: sub_A09D+233j + cmp si, 13h + jle short loc_A2D2 + push 1 + call sub_98B5 + mov byte_F02A, 29h ; ')' + mov si, 14h + jmp short loc_A316 +; --------------------------------------------------------------------------- + +loc_A2FE: ; CODE XREF: sub_A09D+27Cj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A316: ; CODE XREF: sub_A09D+25Fj + cmp si, 15h + jle short loc_A2FE + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E226 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + mov si, 17h + jmp short loc_A353 +; --------------------------------------------------------------------------- + +loc_A33B: ; CODE XREF: sub_A09D+2B9j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A353: ; CODE XREF: sub_A09D+29Cj + cmp si, 18h + jle short loc_A33B + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E2B0 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E2DE + push 6 + call sub_9643 + push 0Ah + call sub_B520 + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 0 + jnz loc_A4EC + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E30C + push 6 + call sub_9643 + push 1Eh + call sub_B520 + push 2 + call sub_98B5 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E33A + push 6 + call sub_9643 + push 3 + call sub_98B5 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E368 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + mov si, 1Eh + jmp short loc_A403 +; --------------------------------------------------------------------------- + +loc_A3EB: ; CODE XREF: sub_A09D+369j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A403: ; CODE XREF: sub_A09D+34Cj + cmp si, 1Fh + jle short loc_A3EB + mov byte_F02A, 2Fh ; '/' + mov si, 20h ; ' ' + jmp short loc_A42A +; --------------------------------------------------------------------------- + +loc_A412: ; CODE XREF: sub_A09D+390j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A42A: ; CODE XREF: sub_A09D+373j + cmp si, 24h ; '$' + jle short loc_A412 + mov byte_F02A, 29h ; ')' + mov si, 25h ; '%' + jmp short loc_A451 +; --------------------------------------------------------------------------- + +loc_A439: ; CODE XREF: sub_A09D+3B7j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A451: ; CODE XREF: sub_A09D+39Aj + cmp si, 26h ; '&' + jle short loc_A439 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E534 + push 6 + call sub_9643 + push 2 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd05_pi ; "ed05.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 0 + call sub_98B5 + push 2 + call sub_536 + mov si, 28h ; '(' + jmp short loc_A4D3 +; --------------------------------------------------------------------------- + +loc_A4BB: ; CODE XREF: sub_A09D+439j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A4D3: ; CODE XREF: sub_A09D+41Cj + cmp si, 2Eh ; '.' + jle short loc_A4BB + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E6A4 + jmp loc_A869 +; --------------------------------------------------------------------------- + +loc_A4EC: ; CODE XREF: sub_A09D+2F7j + les bx, dword_FB02 + cmp byte ptr es:[bx+26h], 1 + jnz loc_A6B6 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E6D2 + push 6 + call sub_9643 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E700 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E72E + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E75C + push 6 + call sub_9643 + push 1Eh + call sub_B520 + push 2 + call sub_98B5 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E78A + push 6 + call sub_9643 + push 3 + call sub_98B5 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E7B8 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E7E6 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E814 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E842 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_E870 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + mov si, 3Ah ; ':' + jmp short loc_A5F9 +; --------------------------------------------------------------------------- + +loc_A5E1: ; CODE XREF: sub_A09D+55Fj + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A5F9: ; CODE XREF: sub_A09D+542j + cmp si, 3Dh ; '=' + jle short loc_A5E1 + mov byte_F02A, 2Fh ; '/' + mov si, 3Eh ; '>' + jmp short loc_A620 +; --------------------------------------------------------------------------- + +loc_A608: ; CODE XREF: sub_A09D+586j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A620: ; CODE XREF: sub_A09D+569j + cmp si, 42h ; 'B' + jle short loc_A608 + push 2 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd05_pi ; "ed05.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 1 + call sub_98B5 + push 2 + call sub_536 + mov si, 43h ; 'C' + jmp short loc_A68C +; --------------------------------------------------------------------------- + +loc_A674: ; CODE XREF: sub_A09D+5F2j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A68C: ; CODE XREF: sub_A09D+5D5j + cmp si, 44h ; 'D' + jle short loc_A674 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EA98 + push 0Ch + call sub_9643 + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EAC6 + jmp loc_A869 +; --------------------------------------------------------------------------- + +loc_A6B6: ; CODE XREF: sub_A09D+458j + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EAF4 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EB22 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EB50 + push 6 + call sub_9643 + push 1Eh + call sub_B520 + push 2 + call sub_98B5 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EB7E + push 6 + call sub_9643 + push 3 + call sub_98B5 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EBAC + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EBDA + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EC08 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EC36 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EC64 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EC92 + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_ECC0 + push 6 + call sub_9643 + mov byte_F02A, 29h ; ')' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_ECEE + push 6 + call sub_9643 + mov byte_F02A, 2Fh ; '/' + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_ED1C + push 6 + call sub_9643 + push 2 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd05_pi ; "ed05.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_98B5 + push 2 + call sub_536 + mov si, 54h ; 'T' + jmp short loc_A842 +; --------------------------------------------------------------------------- + +loc_A82A: ; CODE XREF: sub_A09D+7A8j + push large 90014Ch + push 2Ch ; ',' + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + push 6 + call sub_9643 + inc si + +loc_A842: ; CODE XREF: sub_A09D+78Bj + cmp si, 5Bh ; '[' + jle short loc_A82A + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EEBA + push 6 + call sub_9643 + mov byte_F02B, 0 + push large 90014Ch + push 2Ch ; ',' + push ds + push offset unk_EEE8 + +loc_A869: ; CODE XREF: sub_A09D+44Cj + ; sub_A09D+616j + push 0Ch + call sub_9643 + call sub_9AD4 + pop si + pop bp + retn +sub_A09D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A874 proc near ; CODE XREF: sub_A8FA+19p sub_A8FA+76p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 2, 0 + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_0] + mov [bp+var_2], 0 + jmp short loc_A898 +; --------------------------------------------------------------------------- + +loc_A887: ; CODE XREF: sub_A874+28j + push si + push [bp+arg_2] + push di + call sub_1B86 + inc [bp+var_2] + inc di + add si, 10h + +loc_A898: ; CODE XREF: sub_A874+11j + cmp [bp+var_2], 5 + jl short loc_A887 + pop di + pop si + leave + retn 6 +sub_A874 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A8A4 proc near ; CODE XREF: sub_A8FA+10Ap + ; sub_A8FA+1A9p ... + push bp + mov bp, sp + push large 0C00000h + call sub_F72 + push large 1A000C0h + push large 27F010Fh + call sub_D04 + call sub_F9C + pop bp + retn +sub_A8A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A8CA proc near ; CODE XREF: sub_A8FA+107p + ; sub_A8FA+13Fp ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push [bp+arg_4] + push [bp+arg_0] + call sub_C1C6 + push large 200064h + push [bp+arg_2] + call sub_9942 + push 4 + call sub_B520 + mov word_D3B0, 64h ; 'd' + call far ptr loc_1C2C + pop bp + retn 6 +sub_A8CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A8FA proc near ; CODE XREF: _main:loc_B1BDp + +var_4 = byte ptr -4 + + enter 4, 0 + push si + push di + push 6 + call sub_B855 + pop cx + xor si, si + jmp short loc_A920 +; --------------------------------------------------------------------------- + +loc_A90C: ; CODE XREF: sub_A8FA+29j + push large 1B000B8h + push si + call sub_A874 + push 4 + call sub_B520 + add si, 5 + +loc_A920: ; CODE XREF: sub_A8FA+10j + cmp si, 37h ; '7' + jl short loc_A90C + push ds + push offset aVer1_00 ; "ver 1.00" + push large 2F00C0h + push 210h + call sub_B200 + add sp, 0Ah + push 8 + call sub_B855 + pop cx + mov si, 0B8h ; '¸' + jmp short loc_A992 +; --------------------------------------------------------------------------- + +loc_A947: ; CODE XREF: sub_A8FA+9Cj + push large 0C00000h + call sub_F72 + push 210h + lea ax, [si+4] + push ax + push 24Fh + lea ax, [si+13h] + push ax + call sub_D04 + call sub_F9C + push 1B0h + push si + push 32h ; '2' + call sub_A874 + push ds + push offset aVer1_00 ; "ver 1.00" + push 2Fh ; '/' + lea ax, [si+8] + push ax + push 210h + call sub_B200 + add sp, 0Ah + push 1 + call sub_B520 + add si, 4 + +loc_A992: ; CODE XREF: sub_A8FA+4Bj + cmp si, 170h + jl short loc_A947 + push 9 + call sub_B855 + pop cx + mov byte_F02A, 2Fh ; '/' + push large 1B000C0h + push 14h + push ds + push offset aXxcvsB@b@vrvsv ; "••–‚˜^@@‚r‚s‚`‚e‚e" + push 0Ch + call sub_9643 + push 0Dh + call sub_B855 + pop cx + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd06_pi ; "ed06.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 4 + push 0 + push 29h ; ')' + call sub_A8CA + call sub_A8A4 + push ds + push offset aGvgngogigab@b@ ; "ƒvƒƒOƒ‰ƒ€@@@‚y‚t‚m" + push large 2F00C0h + push 1A0h + call sub_B200 + add sp, 0Ah + push 11h + call sub_B855 + pop cx + push ds + push offset aEd06b_rgb ; "ed06b.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 0FCh ; 'ü' + push 2 + push 29h ; ')' + call sub_A8CA + push 15h + call sub_B855 + pop cx + push large 200064h + push 3 + call sub_9942 + push ds + push offset aEd06c_rgb ; "ed06c.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 4 + push 3 + push 29h ; ')' + call sub_A8CA + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd07_pi ; "ed07.pi" + push 0 + call sub_B4F5 + add sp, 6 + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 19h + call sub_B855 + pop cx + call sub_A8A4 + push ds + push offset aGogigtgbgbgnb@ ; "ƒOƒ‰ƒtƒBƒbƒN@‚y‚t‚m" + push large 2F00C0h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aB@b@b@b@b@b@b@ ; "@@@@@@@‚•“úŒü" + push large 2F00E0h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aB@b@b@b@bigibG ; "@@@@iƒI[ƒ‹ƒNƒŠƒA‰æj" + push large 2F00F0h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aEd07a_rgb ; "ed07a.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 0FCh ; 'ü' + push 0 + push 29h ; ')' + call sub_A8CA + push 1Dh + call sub_B855 + pop cx + push ds + push offset aEd07b_rgb ; "ed07b.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 8 + push 1 + push 0E9h ; 'é' + call sub_A8CA + push 21h ; '!' + call sub_B855 + pop cx + push large 200064h + push 2 + call sub_9942 + push 0F8h ; 'ø' + push 2 + push 0E9h ; 'é' + call sub_A8CA + push 25h ; '%' + call sub_B855 + pop cx + call sub_A8A4 + push ds + push offset aVlvtvrvhvbb@b@ ; "‚l‚t‚r‚h‚b@@‚y‚t‚m" + push large 2F00C0h + push 1B0h + call sub_B200 + add sp, 0Ah + push ds + push offset aEd07b_rgb ; "ed07b.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 8 + push 3 + push 0E9h ; 'é' + call sub_A8CA + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd08_pi ; "ed08.pi" + push 0 + call sub_B4F5 + add sp, 6 + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 29h ; ')' + call sub_B855 + pop cx + push 0 + call sub_B790 + pop cx + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 0F8h ; 'ø' + push 0 + push 0E9h ; 'é' + call sub_A8CA + push 2Dh ; '-' + call sub_B855 + pop cx + push ds + push offset aEd08a_rgb ; "ed08a.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 0Ch + push 1 + push 29h ; ')' + call sub_A8CA + push 31h ; '1' + call sub_B855 + pop cx + call sub_A8A4 + push ds + push offset aVsvdvrvsb@vovk ; "‚s‚d‚r‚s@‚o‚k‚`‚x‚d‚q" + push large 2F00C0h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aB@b@b@b@vivivs ; "@@@@‚©‚¨‚é" + push large 2F00E0h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aB@b@b@b@vbbVv ; "@@@@‚b|‚v" + push large 2F00F8h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aB@b@Orucb@mbiS ; "@@ ŽR“c@Œbˆê˜Y" + push large 2F0110h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aVVSSxrivVVVV ; " ‚»‚Ì‘¼‘娂݂̂Ȃ³‚ñ" + push large 2F0128h + push 1A0h + call sub_B200 + add sp, 0Ah + push ds + push offset aEd08b_rgb ; "ed08b.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 0F4h ; 'ô' + push 2 + push 29h ; ')' + call sub_A8CA + push 35h ; '5' + call sub_B855 + pop cx + push ds + push offset aEd08c_rgb ; "ed08c.rgb" + call sub_1E9A + call far ptr loc_1C2C + push 0Ch + push 3 + push 29h ; ')' + call sub_A8CA + push 39h ; '9' + call sub_B855 + pop cx + push 4 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEd09_pi ; "ED09.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 0 + call sub_1276 + push 4 + call sub_536 + push 64h ; 'd' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aVsvivbvovlb@vs ; "‚s‚ˆ‚‚Ž‚‹@‚™‚‚•@‚†‚‚’@‚‚Œ‚‚™‚‰‚"... + mov al, byte_F02A + cbw + push ax + push large 600018h + call sub_B200 + add sp, 0Ah + push large 150060h + push 18h + push cs + call near ptr sub_97F1 + add sp, 6 + push 0C8h ; 'È' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aB@nPiuU_ ; "@ÅI“¾“_" + mov al, byte_F02A + cbw + push ax + push large 800040h + call sub_B200 + add sp, 0Ah + push large 0C00080h + push large [dword_FB0C] + call sub_95CB + push large 100080h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 64h ; 'd' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aGrgugegbgjgeb ; "ƒRƒ“ƒeƒBƒjƒ…[" + mov al, byte_F02A + cbw + push ax + push large 0A00040h + call sub_B200 + add sp, 0Ah + push large 10000A0h + les bx, dword_FB02 + mov ax, es:[bx+12h] + add ax, 0A0h ; ' ' + push ax + push 0Fh + call sub_1322 + push large 1000A0h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 64h ; 'd' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aB@Gigugn ; "@ ƒ‰ƒ“ƒN" + mov al, byte_F02A + cbw + push ax + push large 0C00040h + call sub_B200 + add sp, 0Ah + push large 0D000C0h + push 10h + push ds + mov al, byte_D722 + cbw + shl ax, 3 + add ax, 90h ; '' + push ax + push 0Fh + call sub_13B6 + push large 1000C0h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 64h ; 'd' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aGvgmgcgdbPik ; "ƒvƒŒƒCƒ„[‰Šú" + mov al, byte_F02A + cbw + push ax + push large 0E00040h + call sub_B200 + add sp, 0Ah + push large 10000E0h + les bx, dword_FB02 + mov al, es:[bx+1Ah] + mov ah, 0 + add ax, 0A1h ; '¡' + push ax + push 0Fh + call sub_1322 + push large 1000E0h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 64h ; 'd' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aCMvpik ; " —쌂‰Šú”" + mov al, byte_F02A + cbw + push ax + push large 1000040h + call sub_B200 + add sp, 0Ah + push large 1000100h + les bx, dword_FB02 + mov al, es:[bx+19h] + mov ah, 0 + add ax, 0A0h ; ' ' + push ax + push 0Fh + call sub_1322 + push large 100100h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 96h ; '–' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_FB02 + mov di, es:[bx+28h] + cmp di, 64h ; 'd' + jle short loc_AEAC + mov di, 64h ; 'd' + jmp short loc_AEB2 +; --------------------------------------------------------------------------- + +loc_AEAC: ; CODE XREF: sub_A8FA+5ABj + or di, di + jge short loc_AEB2 + xor di, di + +loc_AEB2: ; CODE XREF: sub_A8FA+5B0j + ; sub_A8FA+5B4j + push ds + push offset aVavVVSrso ; "‚ ‚È‚½‚̘r‘O" + mov al, byte_F02A + cbw + push ax + push large 1200040h + call sub_B200 + add sp, 0Ah + push di + push ss + lea ax, [bp+var_4] + push ax + call sub_9846 + push large 0C00120h + push 10h + push ss + lea ax, [bp+var_4] + push ax + push 0Fh + call sub_13B6 + cmp di, 64h ; 'd' + jnz short loc_AEEF + xor si, si + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AEEF: ; CODE XREF: sub_A8FA+5EFj + cmp di, 5Ah ; 'Z' + jl short loc_AEF9 + mov si, 1 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AEF9: ; CODE XREF: sub_A8FA+5F8j + cmp di, 50h ; 'P' + jl short loc_AF03 + mov si, 2 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF03: ; CODE XREF: sub_A8FA+602j + cmp di, 46h ; 'F' + jl short loc_AF17 + cmp di, 4Dh ; 'M' + jnz short loc_AF12 + mov si, 3 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF12: ; CODE XREF: sub_A8FA+611j + mov si, 4 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF17: ; CODE XREF: sub_A8FA+60Cj + cmp di, 3Ch ; '<' + jl short loc_AF21 + mov si, 5 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF21: ; CODE XREF: sub_A8FA+620j + cmp di, 32h ; '2' + jl short loc_AF2B + mov si, 6 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF2B: ; CODE XREF: sub_A8FA+62Aj + cmp di, 28h ; '(' + jl short loc_AF35 + mov si, 7 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF35: ; CODE XREF: sub_A8FA+634j + cmp di, 1Eh + jl short loc_AF3F + mov si, 8 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF3F: ; CODE XREF: sub_A8FA+63Ej + cmp di, 14h + jl short loc_AF49 + mov si, 9 + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF49: ; CODE XREF: sub_A8FA+648j + cmp di, 0Ah + jl short loc_AF53 + mov si, 0Ah + jmp short loc_AF56 +; --------------------------------------------------------------------------- + +loc_AF53: ; CODE XREF: sub_A8FA+652j + mov si, 0Bh + +loc_AF56: ; CODE XREF: sub_A8FA+5F3j + ; sub_A8FA+5FDj ... + mov ax, si + imul ax, 2Eh + add ax, 0EB2h + push ds + push ax + mov al, byte_F02A + cbw + push ax + push large 12000F0h + call sub_B200 + add sp, 0Ah + push large 60120h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + push 78h ; 'x' + call sub_B520 + push large 180120h + push 0C0h ; 'À' + push cs + call near ptr sub_97F1 + add sp, 6 + push 0C8h ; 'È' + call sub_B520 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aVpvxvxvvb@vyvt ; "‚P‚X‚X‚V@‚y‚t‚m (Amusement Makers)" + mov al, byte_F02A + cbw + push ax + push large 1600040h + call sub_B200 + add sp, 0Ah + push large 120160h + push 40h ; '@' + push cs + call near ptr sub_97F1 + add sp, 6 + call sub_B4B7 + push 5 + call sub_57A + nop + push cs + call near ptr sub_AFE7 + call sub_123C + pop di + pop si + leave + retn +sub_A8FA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AFE7 proc far ; CODE XREF: sub_A8FA+6E1p + push bp + mov bp, sp + call sub_BFE8 + or ax, ax + jz loc_B07D + les bx, dword_FB02 + cmp word ptr es:[bx+12h], 0 + jnz short loc_B07D + push ds + push offset aAll_pi ; "all.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_536 + push 96h ; '–' + call sub_B520 + push ds + push offset aBut_pi ; "but.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + call sub_B4B7 + push 5 + call sub_57A + +loc_B07D: ; CODE XREF: sub_AFE7+Aj sub_AFE7+17j + pop bp + retf +sub_AFE7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B07F proc far ; CODE XREF: _main+ACp + push bp + mov bp, sp + call sub_BFE8 + or ax, ax + jz loc_B115 + mov word_D3B0, 0 + call far ptr loc_1C2C + push ds + push offset aAll_pi ; "all.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + push 2 + call sub_536 + push 96h ; '–' + call sub_B520 + push ds + push offset aExtra_pi ; "extra.pi" + push 0 + call sub_B4F5 + add sp, 6 + push 0 + call sub_B790 + pop cx + push large 0 + push 0 + call sub_B7B3 + add sp, 6 + push ds + push offset unk_F8BA + push large [dword_F8A2] + call sub_1460 + call sub_B4B7 + push 5 + call sub_57A + +loc_B115: ; CODE XREF: sub_B07F+Aj + pop bp + retf +sub_B07F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl main(int _argc, const char **_argv, const char **_envp) +_main proc far ; CODE XREF: start+13BP + +_argc = word ptr 6 +_argv = dword ptr 8 +_envp = dword ptr 0Ch + + push bp + mov bp, sp + call sub_B888 + or ax, ax + jz loc_B1FE + les bx, dword_FB02 + cmp byte ptr es:[bx+0Bh], 7Fh ; '' + jnz loc_B1FE + call sub_B756 + call sub_FA2 + push ds + push offset aMikoft_bft ; "MIKOFT.bft" + call sub_FE2 + call sub_B6AC + call sub_B654 + les bx, dword_FB02 + cmp byte ptr es:[bx+18h], 0 + jnz short loc_B161 + mov byte_FAF1, 0 + jmp short loc_B189 +; --------------------------------------------------------------------------- + +loc_B161: ; CODE XREF: _main+41j + les bx, dword_FB02 + cmp byte ptr es:[bx+18h], 1 + jnz short loc_B173 + mov byte_FAF1, 0 + jmp short loc_B184 +; --------------------------------------------------------------------------- + +loc_B173: ; CODE XREF: _main+53j + les bx, dword_FB02 + cmp byte ptr es:[bx+18h], 2 + jnz short loc_B189 + mov al, byte_FAF3 + mov byte_FAF1, al + +loc_B184: ; CODE XREF: _main+5Aj + call sub_B68E + +loc_B189: ; CODE XREF: _main+48j _main+65j + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aEndft_bft ; "endft.bft" + call sub_2882 + push 64h ; 'd' + call sub_B520 + les bx, dword_FB02 + cmp byte ptr es:[bx+16h], 4 + jz short loc_B1C2 + cmp word ptr es:[bx+12h], 0 + jz short loc_B1BA + call sub_9B64 + jmp short loc_B1BD +; --------------------------------------------------------------------------- + +loc_B1BA: ; CODE XREF: _main+9Cj + call sub_A09D + +loc_B1BD: ; CODE XREF: _main+A1j + call sub_A8FA + jmp short loc_B1C6 +; --------------------------------------------------------------------------- + +loc_B1C2: ; CODE XREF: _main+95j + push cs + call near ptr sub_B07F + +loc_B1C6: ; CODE XREF: _main+A9j + mov word_D3B0, 32h ; '2' + call far ptr loc_1C2C + call sub_BC9E + mov word_D3B0, 0 + call far ptr loc_1C2C + call sub_FC6 + call sub_B616 + push large 0 + push ds + push offset path ; "op" + push ds + push offset path ; "op" + call _execl + add sp, 0Ch + +loc_B1FE: ; CODE XREF: _main+Aj _main+17j + pop bp + retf +_main endp + +seg001 ends + +; =========================================================================== + +; Segment type: Pure code +seg002 segment byte public 'CODE' use16 + assume cs:seg002 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B200 proc far ; CODE XREF: sub_9643+4EP sub_A8FA+38P ... + +var_32 = byte ptr -32h +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 = 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_6 = dword ptr 0Ch + + enter 32h, 0 + push si + push di + mov di, [bp+arg_0] + mov ax, [bp+arg_4] + sar ax, 4 + and ax, 3 + mov [bp+var_E], ax + mov ax, [bp+arg_4] + sar ax, 6 + and ax, 7 + mov [bp+var_10], ax + push 0C0h ; 'À' + push [bp+arg_4] + call sub_F72 + mov dx, 68h ; 'h' + mov al, 0Bh + out dx, al + jmp loc_B445 +; --------------------------------------------------------------------------- + +loc_B235: ; CODE XREF: sub_B200+24Cj + mov ax, [bp+arg_2] + imul ax, 50h + push ax + mov ax, di + mov bx, 8 + cwd + idiv bx + pop dx + add dx, ax + mov word ptr [bp+var_8+2], 0A800h + mov word ptr [bp+var_8], dx + mov ax, di + cwd + idiv bx + mov [bp+var_C], dx + les bx, [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+0D65h], 4 + jz short loc_B28A + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + cbw + shl ax, 8 + mov dl, es:[bx+1] + mov dh, 0 + add ax, dx + push ax + call sub_91FC + pop cx + mov [bp+var_2], ax + add word ptr [bp+arg_6], 2 + jmp short loc_B2D0 +; --------------------------------------------------------------------------- + +loc_B28A: ; CODE XREF: sub_B200+66j + les bx, [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+0D65h], 3 + jz short loc_B2A8 + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + add ax, 2980h + jmp short loc_B2C3 +; --------------------------------------------------------------------------- + +loc_B2A8: ; CODE XREF: sub_B200+99j + les bx, [bp+arg_6] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0A7Bh], 5Eh + jz short loc_B2C8 + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + add ax, 2900h + +loc_B2C3: ; CODE XREF: sub_B200+A6j + mov [bp+var_2], ax + jmp short loc_B2CD +; --------------------------------------------------------------------------- + +loc_B2C8: ; CODE XREF: sub_B200+B6j + mov [bp+var_2], 2B21h + +loc_B2CD: ; CODE XREF: sub_B200+C6j + inc word ptr [bp+arg_6] + +loc_B2D0: ; CODE XREF: sub_B200+88j + mov al, byte ptr [bp+var_2] + and al, 0FFh + mov dx, 0A1h ; '¡' + out dx, al ; Interrupt Controller #2, 8259A + mov ax, [bp+var_2] + shr ax, 8 + sub al, 20h ; ' ' + mov dx, 0A3h ; '£' + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+var_2], 2921h + jb short loc_B331 + cmp [bp+var_2], 2B7Eh + ja short loc_B331 + cmp di, 278h + jg loc_B450 + mov [bp+var_12], 0 + jmp short loc_B324 +; --------------------------------------------------------------------------- + +loc_B302: ; CODE XREF: sub_B200+128j + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + inc [bp+var_12] + +loc_B324: ; CODE XREF: sub_B200+100j + cmp [bp+var_12], 10h + jl short loc_B302 + mov [bp+var_A], 0 + jmp short loc_B387 +; --------------------------------------------------------------------------- + +loc_B331: ; CODE XREF: sub_B200+EAj sub_B200+F1j + cmp di, 270h + jg loc_B450 + mov [bp+var_12], 0 + jmp short loc_B37C +; --------------------------------------------------------------------------- + +loc_B340: ; CODE XREF: sub_B200+180j + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + mov dx, 0A5h ; '¥' + mov al, byte ptr [bp+var_12] + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + add ss:[bx], ax + inc [bp+var_12] + +loc_B37C: ; CODE XREF: sub_B200+13Ej + cmp [bp+var_12], 10h + jl short loc_B340 + mov [bp+var_A], 1 + +loc_B387: ; CODE XREF: sub_B200+12Fj + mov [bp+var_12], 0 + jmp loc_B42C +; --------------------------------------------------------------------------- + +loc_B38F: ; CODE XREF: sub_B200+230j + mov bx, [bp+var_12] + add bx, bx + lea ax, [bp+var_32] + add bx, ax + mov ax, ss:[bx] + mov [bp+var_4], ax + mov ax, [bp+var_E] + cmp ax, 1 + jz short loc_B3B3 + cmp ax, 2 + jz short loc_B3C9 + cmp ax, 3 + jz short loc_B3BF + jmp short loc_B3DF +; --------------------------------------------------------------------------- + +loc_B3B3: ; CODE XREF: sub_B200+1A5j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + jmp short loc_B3DF +; --------------------------------------------------------------------------- + +loc_B3BF: ; CODE XREF: sub_B200+1AFj + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + +loc_B3C9: ; CODE XREF: sub_B200+1AAj + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + xor si, [bp+var_4] + mov ax, si + add ax, ax + not ax + and [bp+var_4], ax + +loc_B3DF: ; CODE XREF: sub_B200+1B1j + ; sub_B200+1BDj + cmp [bp+var_C], 0 + jz short loc_B412 + mov cl, byte ptr [bp+var_C] + add cl, 8 + mov ax, [bp+var_4] + shr ax, cl + les bx, [bp+var_8] + mov es:[bx], al + mov ax, [bp+var_4] + mov cl, byte ptr [bp+var_C] + shr ax, cl + mov es:[bx+1], al + mov cl, 8 + sub cl, byte ptr [bp+var_C] + mov al, byte ptr [bp+var_4] + shl al, cl + mov es:[bx+2], al + jmp short loc_B425 +; --------------------------------------------------------------------------- + +loc_B412: ; CODE XREF: sub_B200+1E3j + mov ax, [bp+var_4] + shr ax, 8 + les bx, [bp+var_8] + mov es:[bx], al + mov al, byte ptr [bp+var_4] + mov es:[bx+1], al + +loc_B425: ; CODE XREF: sub_B200+210j + add word ptr [bp+var_8], 50h ; 'P' + inc [bp+var_12] + +loc_B42C: ; CODE XREF: sub_B200+18Cj + cmp [bp+var_12], 10h + jl loc_B38F + cmp [bp+var_A], 0 + jz short loc_B43D + add di, 8 + +loc_B43D: ; CODE XREF: sub_B200+238j + mov ax, [bp+var_10] + add ax, 8 + add di, ax + +loc_B445: ; CODE XREF: sub_B200+32j + les bx, [bp+arg_6] + cmp byte ptr es:[bx], 0 + jnz loc_B235 + +loc_B450: ; CODE XREF: sub_B200+F7j + ; sub_B200+135j + mov dx, 68h ; 'h' + mov al, 0Ah + out dx, al + call sub_F9C + pop di + pop si + leave + retf +sub_B200 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B45F proc far ; CODE XREF: sub_B4B7+4p sub_B4B7+Cp + push bp + mov bp, sp + push si + mov al, byte_D70A + cbw + push ax + call sub_1B74 + mov si, ax + mov al, byte_D70B + cbw + push ax + call sub_1B74 + or si, ax + mov al, byte_D70C + cbw + push ax + call sub_1B74 + or si, ax + push 2 + nop + push cs + call near ptr sub_B520 + mov al, byte_D70A + cbw + push ax + call sub_1B74 + or si, ax + mov al, byte_D70B + cbw + push ax + call sub_1B74 + or si, ax + mov al, byte_D70C + cbw + push ax + call sub_1B74 + or si, ax + mov ax, si + pop si + pop bp + retf +sub_B45F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4B7 proc far ; CODE XREF: sub_A8FA+6D3P + ; sub_AFE7+8AP ... + push bp + mov bp, sp + +loc_B4BA: ; CODE XREF: sub_B4B7+9j + push cs + call near ptr sub_B45F + or ax, ax + jnz short loc_B4BA + +loc_B4C2: ; CODE XREF: sub_B4B7+11j + push cs + call near ptr sub_B45F + or ax, ax + jz short loc_B4C2 + pop bp + retf +sub_B4B7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4CC proc far ; CODE XREF: sub_B756+16p + push bp + mov bp, sp + mov dword_F892, 0A8000000h + mov dword_F896, 0B0000000h + mov dword_F89A, 0B8000000h + mov dword_F89E, 0E0000000h + pop bp + retf +sub_B4CC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4F5 proc far ; CODE XREF: sub_9B64+39P + ; sub_9B64+285P ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + enter 2, 0 + push si + mov si, [bp+arg_0] + push large [bp+arg_2] + mov ax, si + imul ax, 48h + add ax, 293Ah + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 2922h + push ds + push ax + call sub_14B8 + mov [bp+var_2], ax + pop si + leave + retf +sub_B4F5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B520 proc far ; CODE XREF: sub_9643:loc_96BCP + ; sub_9643:loc_96E6P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_F080, 0 + +loc_B529: ; CODE XREF: sub_B520+Fj + mov ax, word_F080 + cmp ax, [bp+arg_0] + jb short loc_B529 + pop bp + retf 2 +sub_B520 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_B536 proc far ; CODE XREF: sub_9643:loc_9660P + ; sub_9643:loc_96CDP ... + mov word_FAEE, 0 + mov al, 7 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov bh, ah + mov al, 8 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 4 + jnz short loc_B554 + test ah, 8 + jz short loc_B559 + +loc_B554: ; CODE XREF: sub_B536+17j + or word_FAEE, 1 + +loc_B559: ; CODE XREF: sub_B536+1Cj + test bh, 8 + jnz short loc_B563 + test ah, 40h + jz short loc_B568 + +loc_B563: ; CODE XREF: sub_B536+26j + or word_FAEE, 4 + +loc_B568: ; CODE XREF: sub_B536+2Bj + test ah, 4 + jz short loc_B573 + or word_FAEE, 1000h + +loc_B573: ; CODE XREF: sub_B536+35j + test ah, 10h + jz short loc_B57E + or word_FAEE, 2000h + +loc_B57E: ; CODE XREF: sub_B536+40j + mov al, 9 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 20h + jnz short loc_B58E + test ah, 8 + jz short loc_B593 + +loc_B58E: ; CODE XREF: sub_B536+51j + or word_FAEE, 2 + +loc_B593: ; CODE XREF: sub_B536+56j + test bh, 10h + jnz short loc_B59D + test ah, 1 + jz short loc_B5A2 + +loc_B59D: ; CODE XREF: sub_B536+60j + or word_FAEE, 8 + +loc_B5A2: ; CODE XREF: sub_B536+65j + test ah, 4 + jz short loc_B5AD + or word_FAEE, 4000h + +loc_B5AD: ; CODE XREF: sub_B536+6Fj + test ah, 10h + jz short loc_B5B8 + or word_FAEE, 8000h + +loc_B5B8: ; CODE XREF: sub_B536+7Aj + mov al, 5 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 2 + jz short loc_B5C8 + or word_FAEE, 10h + +loc_B5C8: ; CODE XREF: sub_B536+8Bj + test ah, 4 + jz short loc_B5D2 + or word_FAEE, 20h + +loc_B5D2: ; CODE XREF: sub_B536+95j + mov al, 0 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_B5E2 + or word_FAEE, 40h + +loc_B5E2: ; CODE XREF: sub_B536+A5j + mov al, 3 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short loc_B5F3 + or word_FAEE, 80h + +loc_B5F3: ; CODE XREF: sub_B536+B5j + mov al, 2 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_B604 + or word_FAEE, 100h + +loc_B604: ; CODE XREF: sub_B536+C6j + mov al, 6 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short locret_B614 + or word_FAEE, 10h + +locret_B614: ; CODE XREF: sub_B536+D7j + retf +sub_B536 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B616 proc far ; CODE XREF: _main+CFP + push bp + mov bp, sp + call sub_2972 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_123C + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_123C + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + call sub_23EC + call sub_272A + call sub_2328 + call sub_7C8 + pop bp + retf +sub_B616 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B654 proc far ; CODE XREF: _main+33P + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_182+2 + assume es:nothing + cmp byte ptr es:[bx+2], 4Dh ; 'M' + jnz short loc_B685 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_B685 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_B685 + mov byte_FAF2, 61h ; 'a' + mov byte_FAF1, 1 + mov byte_FAF3, 1 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_B685: ; CODE XREF: sub_B654+Ej sub_B654+15j ... + mov byte_FAF3, 0 + xor ax, ax + retf +sub_B654 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B68E proc far ; CODE XREF: _main:loc_B184P + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_B6A0 + inc bx + mov byte_FAF0, 1 + jmp short loc_B6A4 +; --------------------------------------------------------------------------- + +loc_B6A0: ; CODE XREF: sub_B68E+8j + mov bl, byte_FAF1 + +loc_B6A4: ; CODE XREF: sub_B68E+10j + mov byte_D714, bl + mov ax, bx + retf +sub_B68E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B6AC proc far ; CODE XREF: _main+2EP + mov byte_FAF2, 60h ; '`' + mov byte_FAF1, 0 + mov byte_FAF0, 0 + mov byte_FAF3, 0 + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_17E+2 + assume es:nothing + cmp byte ptr es:[bx+2], 50h ; 'P' + jnz short loc_B6E2 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_B6E2 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_B6E2 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_B6E2: ; CODE XREF: sub_B6AC+22j sub_B6AC+29j ... + xor ax, ax + retf +sub_B6AC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B6E6 proc far ; CODE XREF: sub_9AD4+20P sub_9B64+12P ... + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push ds + mov cx, 0Dh + xor si, si + +loc_B6F0: ; CODE XREF: sub_B6E6+17j + les bx, [bp+arg_0] + add bx, si + mov al, es:[bx] + mov [si+2B74h], al + inc si + loop loc_B6F0 + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_B727 + cmp byte_FAF1, 0 + jz short loc_B727 + xor bx, bx + +loc_B710: ; CODE XREF: sub_B6E6+30j + inc bx + cmp byte ptr [bx+2B74h], 0 + jnz short loc_B710 + mov byte ptr [bx+2B74h], 6Dh ; 'm' + mov byte ptr [bx+2B75h], 64h ; 'd' + mov byte ptr [bx+2B76h], 0 + +loc_B727: ; CODE XREF: sub_B6E6+1Fj sub_B6E6+26j + mov dx, 2B74h + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + mov bx, ax + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_B744 + cmp byte_FAF1, 0 + jz short loc_B744 + int 61h ; reserved for user interrupt + jmp short loc_B746 +; --------------------------------------------------------------------------- + +loc_B744: ; CODE XREF: sub_B6E6+51j sub_B6E6+58j + int 60h + +loc_B746: ; CODE XREF: sub_B6E6+5Cj + mov ax, 3F00h + mov cx, 5000h + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + pop ds + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop si + pop bp + retf +sub_B6E6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B756 proc far ; CODE XREF: _main+1BP + push bp + mov bp, sp + push 4650h + call sub_250E + or ax, ax + jz short loc_B76A + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_B76A: ; CODE XREF: sub_B756+Dj + nop + push cs + call near ptr sub_B4CC + call sub_233E + call sub_7C8 + call sub_11EE + mov byte_D3EC, 12h + push ds + push offset aUmx ; "“Œ•û••–‚.˜^" + call sub_2912 + xor ax, ax + pop bp + retf +sub_B756 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B790 proc far ; CODE XREF: sub_9B64+43P + ; sub_9B64+28FP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push 30h ; '0' ; n + push ds + mov ax, [bp+arg_0] + imul ax, 48h + add ax, 2952h + push ax ; src + push ds + push offset unk_F050 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1C2C + pop bp + retf +sub_B790 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B7B3 proc far ; CODE XREF: sub_9B64+4EP + ; sub_9B64+29AP ... + +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 + + enter 6, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_4] + mov bx, di + shl bx, 2 + mov ax, [bx+2924h] + mov dx, [bx+2922h] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_B827 +; --------------------------------------------------------------------------- + +loc_B7D9: ; CODE XREF: sub_B7B3+80j + push [bp+arg_0] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+294Eh] + call sub_1AA6 + inc si + cmp si, 190h + jl short loc_B7FA + sub si, 190h + +loc_B7FA: ; CODE XREF: sub_B7B3+41j + mov bx, di + imul bx, 48h + mov ax, [bx+294Eh] + shr ax, 1 + add word ptr [bp+var_4], ax + mov eax, [bp+var_4] + shr eax, 10h + mov dx, word ptr [bp+var_4] + shr dx, 4 + add ax, dx + mov dx, word ptr [bp+var_4] + and dx, 0Fh + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + inc [bp+var_6] + +loc_B827: ; CODE XREF: sub_B7B3+24j + mov bx, di + imul bx, 48h + mov ax, [bx+2950h] + cmp ax, [bp+var_6] + ja short loc_B7D9 + pop di + pop si + leave + retf +sub_B7B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B839 proc far ; CODE XREF: sub_9AD4+2AP sub_9B64+1CP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_D714, 0 + jz short loc_B853 + mov ax, [bp+arg_0] + cmp byte_FAF1, 1 + jz short loc_B851 + int 60h + jmp short loc_B853 +; --------------------------------------------------------------------------- + +loc_B851: ; CODE XREF: sub_B839+12j + int 61h ; reserved for user interrupt + +loc_B853: ; CODE XREF: sub_B839+8j sub_B839+16j + pop bp + retf +sub_B839 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B855 proc far ; CODE XREF: sub_9AD4+3CP sub_A8FA+8P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_D714, 0 + jnz short loc_B868 + push 64h ; 'd' + nop + push cs + call near ptr sub_B520 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_B868: ; CODE XREF: sub_B855+8j sub_B855+2Fj + push 1 + nop + push cs + call near ptr sub_B520 + mov ah, 5 + cmp byte_FAF1, 1 + jz short loc_B87C + int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE + ; BX = handle + ; Return: CF set on error, DH = error code + ; CF clear if successful + jmp short loc_B881 +; --------------------------------------------------------------------------- + +loc_B87C: ; CODE XREF: sub_B855+21j + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_B881: ; CODE XREF: sub_B855+25j + cmp ax, [bp+arg_0] + jb short loc_B868 + pop bp + retf +sub_B855 endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 8 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B888 proc far ; CODE XREF: _main+3P + +var_2 = word ptr -2 + + enter 2, 0 + push ds + push offset aHuuma_cfg ; "huuma.cfg" + call sub_B9C + push large 5 + push 0 + call sub_BD8 + push ss + lea ax, [bp+var_2] + push ax + push 2 + call sub_AE8 + call sub_ABC + cmp [bp+var_2], 0 + jnz short loc_B8BA + xor ax, ax + leave + retf +; --------------------------------------------------------------------------- + +loc_B8BA: ; CODE XREF: sub_B888+2Cj + mov ax, [bp+var_2] + mov word ptr dword_FB02+2, ax + mov word ptr dword_FB02, 0 + les bx, dword_FB02 + mov al, es:[bx+15h] + mov byte_FB07, al + mov al, es:[bx+14h] + mov byte_FB08, al + mov al, es:[bx+16h] + mov byte_D722, al + mov eax, es:[bx+0Eh] + mov dword_FB0C, eax + mov ax, 1 + leave + retf +sub_B888 endp + +seg003 ends + +; =========================================================================== + +; Segment type: Pure code +seg004 segment byte public 'CODE' use16 + assume cs:seg004 + ;org 0Dh + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B8ED proc far ; CODE XREF: sub_BC9E+17p seg004:06E9p + push bp + mov bp, sp + push si + xor si, si + jmp short loc_B95F +; --------------------------------------------------------------------------- + +loc_B8F5: ; CODE XREF: sub_B8ED+75j + mov ax, si + imul ax, 3E8h + mov dx, 2710h + sub dx, ax + movsx eax, dx + mov bx, si + shl bx, 2 + mov [bx+2B98h], eax + mov ax, si + sar ax, 1 + mov dl, 5 + sub dl, al + mov [si+2C0Bh], dl + xor cx, cx + jmp short loc_B92B +; --------------------------------------------------------------------------- + +loc_B91E: ; CODE XREF: sub_B8ED+41j + mov bx, si + imul bx, 7 + add bx, cx + mov byte ptr [bx+2BC4h], 0DAh ; 'Ú' + inc cx + +loc_B92B: ; CODE XREF: sub_B8ED+2Fj + cmp cx, 6 + jl short loc_B91E + mov bx, si + imul bx, 7 + mov byte ptr [bx+2BCAh], 0 + mov bx, si + shl bx, 2 + mov word ptr [bx+2C16h], 76Ch + mov bx, si + shl bx, 2 + mov byte ptr [bx+2C18h], 1 + mov bx, si + shl bx, 2 + mov byte ptr [bx+2C19h], 1 + mov byte ptr [si+2C3Eh], 1 + inc si + +loc_B95F: ; CODE XREF: sub_B8ED+6j + cmp si, 0Ah + jl short loc_B8F5 + pop si + pop bp + retf +sub_B8ED endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B967 proc near ; CODE XREF: sub_BC9E:loc_BCBAp + ; seg004:loc_BFCEp ... + push bp + mov bp, sp + push si + push large [off_D72E] + call sub_B9C + mov al, byte_D722 + cbw + imul ax, 0B6h + movzx eax, ax + push eax + push 0 + call sub_BD8 + push ds + push offset word_FB16 + push 0B6h ; '¶' + call sub_AE8 + xor si, si + jmp short loc_B9A5 +; --------------------------------------------------------------------------- + +loc_B99A: ; CODE XREF: sub_B967+42j + mov al, [si+2B96h] + add al, 0EEh ; 'î' + mov [si+2B96h], al + inc si + +loc_B9A5: ; CODE XREF: sub_B967+31j + cmp si, 0B2h ; '²' + jl short loc_B99A + call sub_ABC + pop si + pop bp + retn +sub_B967 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9B3 proc far ; CODE XREF: sub_BA25+E0p + +var_B = byte ptr -0Bh +var_A = dword ptr -0Ah +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 0Ch, 0 + push si + mov [bp+var_6], 989680h + mov [bp+var_B], 0 + mov si, 1Ah + jmp short loc_BA1B +; --------------------------------------------------------------------------- + +loc_B9C9: ; CODE XREF: sub_B9B3+6Bj + mov eax, [bp+arg_2] + cdq + idiv [bp+var_6] + mov ebx, 0Ah + cdq + idiv ebx + mov [bp+var_A], edx + mov eax, [bp+var_6] + cdq + idiv ebx + mov [bp+var_6], eax + mov ax, word ptr [bp+var_A] + add ax, 0A0h ; ' ' + mov [bp+var_2], ax + cmp [bp+var_A], 0 + jz short loc_BA03 + mov [bp+var_B], 1 + +loc_BA03: ; CODE XREF: sub_B9B3+4Aj + cmp [bp+var_B], 0 + jz short loc_BA18 + push si + push [bp+arg_6] + push [bp+var_2] + push [bp+arg_0] + call sub_1078 + +loc_BA18: ; CODE XREF: sub_B9B3+54j + add si, 2 + +loc_BA1B: ; CODE XREF: sub_B9B3+14j + cmp si, 2Ah ; '*' + jl short loc_B9C9 + pop si + leave + retf 8 +sub_B9B3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA25 proc near ; CODE XREF: sub_BC9E+2Cp + ; sub_BC9E+157p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 2, 0 + push si + push di + mov di, 0E1h ; 'á' + push large 140002h + push ds + push offset aMO ; "±²Ï¼¬¸»®" + push 81h ; '' + call sub_10BC + push large 0C0004h + push ds + push offset aKO ; "¶ª·®" + push 81h ; '' + call sub_10BC + push large 1C0004h + push ds + push offset asc_D773 ; "¹¸²¶½" + push 81h ; '' + call sub_10BC + push large 2A0004h + push ds + push offset asc_D779 ; "¼½" + push 81h ; '' + call sub_10BC + cmp [bp+arg_0], 0FFFFh + jz short loc_BACE + xor si, si + jmp short loc_BAB5 +; --------------------------------------------------------------------------- + +loc_BA80: ; CODE XREF: sub_BA25+93j + mov [bp+var_2], 0 + jmp short loc_BAAE +; --------------------------------------------------------------------------- + +loc_BA87: ; CODE XREF: sub_BA25+8Dj + mov ax, [bp+var_2] + add ax, ax + add ax, 0Ah + push ax + lea ax, [si+12h] + push ax + mov bx, si + imul bx, 11h + add bx, [bp+var_2] + mov al, [bx+7BBh] + mov ah, 0 + push ax + push 0E1h ; 'á' + call sub_1078 + inc [bp+var_2] + +loc_BAAE: ; CODE XREF: sub_BA25+60j + cmp [bp+var_2], 11h + jl short loc_BA87 + inc si + +loc_BAB5: ; CODE XREF: sub_BA25+59j + cmp si, 3 + jl short loc_BA80 + push large 0A0012h + mov al, byte_D73B + mov ah, 0 + push ax + push 85h ; '…' + call sub_1078 + +loc_BACE: ; CODE XREF: sub_BA25+55j + xor si, si + jmp short loc_BB31 +; --------------------------------------------------------------------------- + +loc_BAD2: ; CODE XREF: sub_BA25+10Fj + cmp si, [bp+arg_0] + jnz short loc_BADC + mov di, 81h ; '' + jmp short loc_BADF +; --------------------------------------------------------------------------- + +loc_BADC: ; CODE XREF: sub_BA25+B0j + mov di, 0E1h ; 'á' + +loc_BADF: ; CODE XREF: sub_BA25+B5j + push 0Ah + lea ax, [si+6] + push ax + mov ax, si + imul ax, 7 + add ax, 2BC4h + push ds + push ax + push di + call sub_10BC + lea ax, [si+6] + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+2B98h] + push di + push cs + call near ptr sub_B9B3 + cmp byte ptr [si+2C0Bh], 7Fh ; '' + jz short loc_BB21 + push 2Ch ; ',' + lea ax, [si+6] + push ax + mov al, [si+2C0Bh] + mov ah, 0 + add ax, 0A0h ; ' ' + push ax + jmp short loc_BB2A +; --------------------------------------------------------------------------- + +loc_BB21: ; CODE XREF: sub_BA25+E8j + push 2Ch ; ',' + lea ax, [si+6] + push ax + push 0F0h ; 'ð' + +loc_BB2A: ; CODE XREF: sub_BA25+FAj + push di + call sub_1078 + inc si + +loc_BB31: ; CODE XREF: sub_BA25+ABj + cmp si, 0Ah + jl short loc_BAD2 + xor si, si + jmp short loc_BB78 +; --------------------------------------------------------------------------- + +loc_BB3A: ; CODE XREF: sub_BA25+156j + cmp si, [bp+arg_0] + jnz short loc_BB44 + mov di, 81h ; '' + jmp short loc_BB47 +; --------------------------------------------------------------------------- + +loc_BB44: ; CODE XREF: sub_BA25+118j + mov di, 0E1h ; 'á' + +loc_BB47: ; CODE XREF: sub_BA25+11Dj + cmp si, 9 + jz short loc_BB59 + push 6 + lea ax, [si+6] + push ax + lea ax, [si+0A1h] + push ax + jmp short loc_BB71 +; --------------------------------------------------------------------------- + +loc_BB59: ; CODE XREF: sub_BA25+125j + push large 4000Fh + push 0A1h ; '¡' + push di + call sub_1078 + push large 6000Fh + push 0A0h ; ' ' + +loc_BB71: ; CODE XREF: sub_BA25+132j + push di + call sub_1078 + inc si + +loc_BB78: ; CODE XREF: sub_BA25+113j + cmp si, 0Ah + jl short loc_BB3A + pop di + pop si + leave + retn 2 +sub_BA25 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB83 proc near ; CODE XREF: sub_BC9E+18Bp + ; sub_BC9E+1A3p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_2] + mov ax, si + add ax, ax + add ax, 0Ah + push ax + lea ax, [di+12h] + push ax + mov bx, di + imul bx, 11h + mov al, [bx+si+7BBh] + mov ah, 0 + push ax + push [bp+arg_0] + call sub_1078 + pop di + pop si + pop bp + retn 6 +sub_BB83 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BBB4 proc near ; CODE XREF: sub_BC9E+2B7p + ; sub_BC9E+2D7p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + push 0Ah + lea ax, [si+6] + push ax + mov ax, si + imul ax, 7 + add ax, 2BC4h + push ds + push ax + push 81h ; '' + call sub_10BC + mov ax, di + add ax, ax + add ax, 0Ah + push ax + lea ax, [si+6] + push ax + mov bx, si + imul bx, 7 + mov al, [bx+di+2BC4h] + mov ah, 0 + push ax + push 85h ; '…' + call sub_1078 + pop di + pop si + pop bp + retn 4 +sub_BBB4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BBFD proc far ; CODE XREF: sub_BC9E+312p + push bp + mov bp, sp + push si + mov dword_FB40, 0 + mov byte_FB8A, 0 + mov byte_FB95, 0 + mov dword_FBC8, 0 + xor si, si + jmp short loc_BC46 +; --------------------------------------------------------------------------- + +loc_BC21: ; CODE XREF: sub_BBFD+4Cj + mov bx, si + shl bx, 2 + mov eax, [bx+2B98h] + add dword_FB40, eax + mov bx, si + imul bx, 7 + mov al, [bx+2BC4h] + add byte_FB8A, al + mov al, [si+2C0Bh] + add byte_FB95, al + inc si + +loc_BC46: ; CODE XREF: sub_BBFD+22j + cmp si, 0Ah + jl short loc_BC21 + xor si, si + jmp short loc_BC65 +; --------------------------------------------------------------------------- + +loc_BC4F: ; CODE XREF: sub_BBFD+6Cj + movzx eax, byte ptr [si+2B96h] + add dword_FBC8, eax + mov al, [si+2B96h] + add al, 12h + mov [si+2B96h], al + inc si + +loc_BC65: ; CODE XREF: sub_BBFD+50j + cmp si, 0B2h ; '²' + jl short loc_BC4F + push large [off_D72E] + call sub_9FC + mov al, byte_D722 + cbw + imul ax, 0B6h + movzx eax, ax + push eax + push 0 + call sub_BD8 + push ds + push offset word_FB16 + push 0B6h ; '¶' + call sub_C28 + call sub_ABC + pop si + pop bp + retf +sub_BBFD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC9E proc far ; CODE XREF: _main+BAP + +var_B = byte ptr -0Bh +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 + + enter 0Ch, 0 + push si + push di + xor si, si + push large [off_D72E] + call sub_ACC + or ax, ax + jnz short loc_BCBA + push cs + call near ptr sub_B8ED + jmp short loc_BCBD +; --------------------------------------------------------------------------- + +loc_BCBA: ; CODE XREF: sub_BC9E+14j + call sub_B967 + +loc_BCBD: ; CODE XREF: sub_BC9E+1Aj + mov eax, dword_FB3C + cmp eax, dword_FB0C + jle short loc_BCD5 + push 0FFFFh + call sub_BA25 + call sub_B4B7 + jmp loc_BFB3 +; --------------------------------------------------------------------------- + +loc_BCD5: ; CODE XREF: sub_BC9E+28j + mov [bp+var_2], 9 + jmp short loc_BCF1 +; --------------------------------------------------------------------------- + +loc_BCDC: ; CODE XREF: sub_BC9E+57j + mov bx, [bp+var_2] + shl bx, 2 + mov eax, [bx+2B94h] + cmp eax, dword_FB0C + jg short loc_BCF7 + dec [bp+var_2] + +loc_BCF1: ; CODE XREF: sub_BC9E+3Cj + cmp [bp+var_2], 0 + jg short loc_BCDC + +loc_BCF7: ; CODE XREF: sub_BC9E+4Ej + mov [bp+var_4], 9 + jmp loc_BD91 +; --------------------------------------------------------------------------- + +loc_BCFF: ; CODE XREF: sub_BC9E+F9j + mov bx, [bp+var_4] + shl bx, 2 + mov eax, [bx+2B94h] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+2B98h], eax + mov [bp+var_6], 0 + jmp short loc_BD39 +; --------------------------------------------------------------------------- + +loc_BD1C: ; CODE XREF: sub_BC9E+9Fj + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov al, [bx+2BBDh] + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov [bx+2BC4h], al + inc [bp+var_6] + +loc_BD39: ; CODE XREF: sub_BC9E+7Cj + cmp [bp+var_6], 6 + jl short loc_BD1C + mov bx, [bp+var_4] + mov al, [bx+2C0Ah] + mov [bx+2C0Bh], al + shl bx, 2 + mov ax, [bx+2C12h] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+2C16h], ax + mov bx, [bp+var_4] + shl bx, 2 + mov al, [bx+2C15h] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+2C19h], al + mov bx, [bp+var_4] + shl bx, 2 + mov al, [bx+2C14h] + mov bx, [bp+var_4] + shl bx, 2 + mov [bx+2C18h], al + mov bx, [bp+var_4] + mov al, [bx+2C3Dh] + mov [bx+2C3Eh], al + dec [bp+var_4] + +loc_BD91: ; CODE XREF: sub_BC9E+5Ej + mov ax, [bp+var_4] + cmp ax, [bp+var_2] + jg loc_BCFF + mov bx, [bp+var_2] + shl bx, 2 + mov eax, dword_FB0C + mov [bx+2B98h], eax + mov bx, [bp+var_2] + mov byte ptr [bx+2C0Bh], 7Fh ; '' + mov ax, [bp+var_2] + shl ax, 2 + add ax, 2C16h + push ds + push ax ; datep + call _getdate + add sp, 4 + les bx, dword_FB02 + mov al, es:[bx+26h] + mov bx, [bp+var_2] + mov [bx+2C3Eh], al + mov [bp+var_6], 0 + jmp short loc_BDEC +; --------------------------------------------------------------------------- + +loc_BDDB: ; CODE XREF: sub_BC9E+152j + mov bx, [bp+var_4] + imul bx, 7 + add bx, [bp+var_6] + mov byte ptr [bx+2BC4h], 0DAh ; 'Ú' + inc [bp+var_6] + +loc_BDEC: ; CODE XREF: sub_BC9E+13Bj + cmp [bp+var_6], 6 + jl short loc_BDDB + push [bp+var_2] + call sub_BA25 + xor di, di + mov [bp+var_8], 0 + mov word_FAEE, 0 + mov [bp+var_A], 1 + +loc_BE0A: ; CODE XREF: sub_BC9E+2F2j + mov [bp+var_B], 0 + +loc_BE0E: ; CODE XREF: sub_BC9E+2FDj + ; sub_BC9E+305j ... + call sub_B536 + cmp [bp+var_A], 0 + jnz loc_BF7F + test byte ptr word_FAEE, 1 + jz short loc_BE44 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_BB83 + dec [bp+var_8] + cmp [bp+var_8], 0 + jge short loc_BE3A + mov [bp+var_8], 2 + +loc_BE3A: ; CODE XREF: sub_BC9E+195j + push di + push [bp+var_8] + push 85h ; '…' + call sub_BB83 + +loc_BE44: ; CODE XREF: sub_BC9E+182j + test byte ptr word_FAEE, 2 + jz short loc_BE6D + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_BB83 + inc [bp+var_8] + cmp [bp+var_8], 2 + jle short loc_BE63 + mov [bp+var_8], 0 + +loc_BE63: ; CODE XREF: sub_BC9E+1BEj + push di + push [bp+var_8] + push 85h ; '…' + call sub_BB83 + +loc_BE6D: ; CODE XREF: sub_BC9E+1ABj + test byte ptr word_FAEE, 4 + jz short loc_BE90 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_BB83 + dec di + or di, di + jge short loc_BE86 + mov di, 10h + +loc_BE86: ; CODE XREF: sub_BC9E+1E3j + push di + push [bp+var_8] + push 85h ; '…' + call sub_BB83 + +loc_BE90: ; CODE XREF: sub_BC9E+1D4j + test byte ptr word_FAEE, 8 + jz short loc_BEB3 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_BB83 + inc di + cmp di, 10h + jle short loc_BEA9 + xor di, di + +loc_BEA9: ; CODE XREF: sub_BC9E+207j + push di + push [bp+var_8] + push 85h ; '…' + call sub_BB83 + +loc_BEB3: ; CODE XREF: sub_BC9E+1F7j + test byte ptr word_FAEE, 10h + jnz short loc_BEC3 + test byte ptr word_FAEE, 80h + jz loc_BF58 + +loc_BEC3: ; CODE XREF: sub_BC9E+21Aj + cmp [bp+var_8], 2 + jnz short loc_BECE + cmp di, 0Dh + jge short loc_BF0B + +loc_BECE: ; CODE XREF: sub_BC9E+229j + mov bx, [bp+var_8] + imul bx, 11h + mov al, [bx+di+7BBh] + mov bx, [bp+var_2] + imul bx, 7 + mov [bx+si+2BC4h], al + cmp si, 5 + jnz short loc_BF03 + push di + push [bp+var_8] + push 0E1h ; 'á' + call sub_BB83 + mov di, 10h + mov [bp+var_8], 2 + push di + push [bp+var_8] + push 85h ; '…' + call sub_BB83 + +loc_BF03: ; CODE XREF: sub_BC9E+247j + inc si + cmp si, 5 + jle short loc_BF51 + jmp short loc_BF47 +; --------------------------------------------------------------------------- + +loc_BF0B: ; CODE XREF: sub_BC9E+22Ej + cmp di, 0Dh + jnz short loc_BF23 + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+2BC4h], 0CFh ; 'Ï' + inc si + cmp si, 5 + jle short loc_BF51 + jmp short loc_BF47 +; --------------------------------------------------------------------------- + +loc_BF23: ; CODE XREF: sub_BC9E+270j + cmp di, 0Eh + jnz short loc_BF3C + dec si + or si, si + jge short loc_BF2F + xor si, si + +loc_BF2F: ; CODE XREF: sub_BC9E+28Dj + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+2BC4h], 0CFh ; 'Ï' + jmp short loc_BF51 +; --------------------------------------------------------------------------- + +loc_BF3C: ; CODE XREF: sub_BC9E+288j + cmp di, 0Fh + jnz short loc_BF4C + inc si + cmp si, 5 + jle short loc_BF51 + +loc_BF47: ; CODE XREF: sub_BC9E+26Bj + ; sub_BC9E+283j + mov si, 5 + jmp short loc_BF51 +; --------------------------------------------------------------------------- + +loc_BF4C: ; CODE XREF: sub_BC9E+2A1j + cmp di, 10h + jz short loc_BFAF + +loc_BF51: ; CODE XREF: sub_BC9E+269j + ; sub_BC9E+281j ... + push [bp+var_2] + push si + call sub_BBB4 + +loc_BF58: ; CODE XREF: sub_BC9E+221j + test byte ptr word_FAEE, 20h + jz short loc_BF78 + mov bx, [bp+var_2] + imul bx, 7 + mov byte ptr [bx+si+2BC4h], 0CFh ; 'Ï' + dec si + or si, si + jge short loc_BF71 + xor si, si + +loc_BF71: ; CODE XREF: sub_BC9E+2CFj + push [bp+var_2] + push si + call sub_BBB4 + +loc_BF78: ; CODE XREF: sub_BC9E+2BFj + test byte ptr word_FAEE, 40h + jnz short loc_BFAF + +loc_BF7F: ; CODE XREF: sub_BC9E+179j + push 1 + call sub_B520 + mov ax, word_FAEE + mov [bp+var_A], ax + cmp [bp+var_A], 0 + jz loc_BE0A + inc [bp+var_B] + cmp [bp+var_B], 1Eh + jbe loc_BE0E + test [bp+var_B], 1 + jnz loc_BE0E + mov [bp+var_A], 0 + jmp loc_BE0E +; --------------------------------------------------------------------------- + +loc_BFAF: ; CODE XREF: sub_BC9E+2B1j + ; sub_BC9E+2DFj + push cs + call near ptr sub_BBFD + +loc_BFB3: ; CODE XREF: sub_BC9E+34j + pop di + pop si + leave + retf +sub_BC9E endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push large [off_D72E] + call sub_ACC + or ax, ax + jnz short loc_BFCE + push cs + call near ptr sub_B8ED + jmp short loc_BFD1 +; --------------------------------------------------------------------------- + +loc_BFCE: ; CODE XREF: seg004:06E6j + call sub_B967 + +loc_BFD1: ; CODE XREF: seg004:06ECj + mov eax, dword_FB18 + cmp eax, dword_FB0C + jl short loc_BFDE + jmp short loc_BFE2 +; --------------------------------------------------------------------------- + +loc_BFDE: ; CODE XREF: seg004:06FAj + mov eax, dword_FB0C + +loc_BFE2: ; CODE XREF: seg004:06FCj + mov dword_FB12, eax + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFE8 proc far ; CODE XREF: sub_AFE7+3P sub_B07F+3P + +var_7 = byte ptr -7 +var_6 = byte ptr -6 + + enter 8, 0 + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_D77C + mov cx, 6 + call SCOPY@ + mov al, byte_D722 + mov [bp+var_7], al + mov byte_D722, 0 + jmp short loc_C031 +; --------------------------------------------------------------------------- + +loc_C00A: ; CODE XREF: sub_BFE8+50j + call sub_B967 + mov al, byte_D722 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + cmp ax, word_FB16 + jz short loc_C02D + mov al, [bp+var_7] + mov byte_D722, al + xor ax, ax + leave + retf +; --------------------------------------------------------------------------- + +loc_C02D: ; CODE XREF: sub_BFE8+39j + inc byte_D722 + +loc_C031: ; CODE XREF: sub_BFE8+20j + mov al, byte_D722 + cbw + cmp ax, 3 + jl short loc_C00A + mov al, [bp+var_7] + mov byte_D722, al + mov ax, 1 + leave + retf +sub_BFE8 endp + +seg004 ends + +; =========================================================================== + +; Segment type: Pure code +seg005 segment byte public 'CODE' use16 + assume cs:seg005 + ;org 5 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C045 proc near ; CODE XREF: sub_C1C6+67p sub_C1C6+96p ... + +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 = byte ptr 4 +arg_2 = word ptr 6 + + enter 10h, 0 + push si + push di + mov di, [bp+arg_2] + xor si, si + jmp short loc_C0BC +; --------------------------------------------------------------------------- + +loc_C052: ; CODE XREF: sub_C045+7Aj + movsx eax, di + mov dl, [bp+arg_0] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+4EEh] + imul eax, edx + sar eax, 8 + add ax, 0C0h ; 'À' + mov bx, si + add bx, bx + lea dx, [bp+var_8] + add bx, dx + mov ss:[bx], ax + movsx eax, di + mov dl, [bp+arg_0] + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+46Eh] + imul eax, edx + sar eax, 8 + add ax, 0C8h ; 'È' + mov bx, si + add bx, bx + lea dx, [bp+var_10] + add bx, dx + mov ss:[bx], ax + test si, 1 + jz short loc_C0B3 + mov al, [bp+arg_0] + add al, 51h ; 'Q' + jmp short loc_C0B8 +; --------------------------------------------------------------------------- + +loc_C0B3: ; CODE XREF: sub_C045+65j + mov al, [bp+arg_0] + add al, 2Fh ; '/' + +loc_C0B8: ; CODE XREF: sub_C045+6Cj + mov [bp+arg_0], al + inc si + +loc_C0BC: ; CODE XREF: sub_C045+Bj + cmp si, 4 + jl short loc_C052 + push [bp+var_8] + push [bp+var_10] + push [bp+var_6] + push [bp+var_E] + call sub_DD4 + push [bp+var_6] + push [bp+var_E] + push [bp+var_4] + push [bp+var_C] + call sub_DD4 + push [bp+var_4] + push [bp+var_C] + push [bp+var_2] + push [bp+var_A] + call sub_DD4 + push [bp+var_2] + push [bp+var_A] + push [bp+var_8] + push [bp+var_10] + call sub_DD4 + pop di + pop si + leave + retn 4 +sub_C045 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C10B proc far ; CODE XREF: sub_98B5+2EP sub_9942+43P ... + push bp + mov bp, sp + call sub_792 + mov ax, 0FFF0h + mov dx, 4A0h + out dx, ax + mov ax, 0FFh + mov dx, 4A2h + out dx, ax + mov ax, 3100h + mov dx, 4A4h + out dx, ax + mov ax, 0FFFFh + mov dx, 4A8h + out dx, ax + mov ax, 0 + mov dx, 4ACh + out dx, ax + mov ax, 0Fh + mov dx, 4AEh + out dx, ax + pop bp + retf +sub_C10B endp + +; --------------------------------------------------------------------------- + enter 0Ah, 0 + push si + push di + mov si, [bp+6] + mov di, si + add si, [bp+0Ah] + and di, 0FFF0h + mov ax, di + sar ax, 3 + mov dx, [bp+8] + shl dx, 6 + add ax, dx + mov dx, [bp+8] + shl dx, 4 + add ax, dx + mov [bp-6], ax + push cs + call near ptr sub_C10B + mov word ptr [bp-2], 0 + jmp short loc_C1B5 +; --------------------------------------------------------------------------- + +loc_C173: ; CODE XREF: seg005:017Bj + mov [bp-4], di + mov ax, [bp-6] + mov [bp-0Ah], ax + jmp short loc_C1A9 +; --------------------------------------------------------------------------- + +loc_C17E: ; CODE XREF: seg005:016Cj + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F892 + add bx, [bp-0Ah] + mov ax, es:[bx] + mov [bp-8], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, word ptr dword_F892 + add bx, [bp-0Ah] + mov ax, [bp-8] + mov es:[bx], ax + add word ptr [bp-0Ah], 2 + add word ptr [bp-4], 10h + +loc_C1A9: ; CODE XREF: seg005:013Cj + cmp [bp-4], si + jl short loc_C17E + add word ptr [bp-6], 50h ; 'P' + inc word ptr [bp-2] + +loc_C1B5: ; CODE XREF: seg005:0131j + mov ax, [bp-2] + cmp ax, [bp+0Ch] + jl short loc_C173 + call sub_7A8 + pop di + pop si + leave + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C1C6 proc far ; CODE XREF: sub_A8CA+9P + +var_10 = word ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_2 = word ptr -2 +arg_0 = byte ptr 6 +arg_2 = byte ptr 8 + + enter 10h, 0 + push si + push di + lea ax, [bp+var_A] + push ss + push ax + push ds + push offset unk_D78C + mov cx, 0Ah + call SCOPY@ + lea ax, [bp+var_10] + push ss + push ax + push ds + push offset asc_D796 ; ")))))" + mov cx, 5 + call SCOPY@ + xor si, si + jmp short loc_C1F9 +; --------------------------------------------------------------------------- + +loc_C1F2: ; CODE XREF: sub_C1C6+36j + mov al, [bp+arg_0] + mov byte ptr [bp+si+var_10], al + inc si + +loc_C1F9: ; CODE XREF: sub_C1C6+2Aj + cmp si, 5 + jl short loc_C1F2 + push large 0C00000h + call sub_F72 + push large 0 + push large 180018Fh + call sub_D04 + xor si, si + jmp loc_C2AE +; --------------------------------------------------------------------------- + +loc_C21C: ; CODE XREF: sub_C1C6+EBj + push large 0C00000h + call sub_F72 + push [bp+var_A] + push [bp+var_10] + call sub_C045 + mov al, byte ptr [bp+var_10+1] + mov byte ptr [bp+var_10], al + mov ax, [bp+var_8] + mov [bp+var_A], ax + push large 0C00004h + call sub_F72 + mov di, 1 + jmp short loc_C27E +; --------------------------------------------------------------------------- + +loc_C24C: ; CODE XREF: sub_C1C6+BBj + mov bx, di + add bx, bx + lea ax, [bp+var_A] + add bx, ax + push word ptr ss:[bx] + mov al, byte ptr [bp+di+var_10] + push ax + call sub_C045 + mov al, byte ptr [bp+di+var_10+1] + mov byte ptr [bp+di+var_10], al + mov bx, di + add bx, bx + lea ax, [bp+var_8] + add bx, ax + mov ax, ss:[bx] + mov bx, di + add bx, bx + lea dx, [bp+var_A] + add bx, dx + mov ss:[bx], ax + inc di + +loc_C27E: ; CODE XREF: sub_C1C6+84j + cmp di, 4 + jl short loc_C24C + push large 0C0000Fh + call sub_F72 + cmp si, 10h + jge short loc_C29D + sub [bp+var_2], 4 + mov al, [bp+arg_2] + add byte ptr [bp+var_C], al + +loc_C29D: ; CODE XREF: sub_C1C6+CBj + push [bp+var_2] + push [bp+var_C] + call sub_C045 + push 1 + call sub_B520 + inc si + +loc_C2AE: ; CODE XREF: sub_C1C6+53j + cmp si, 14h + jl loc_C21C + push large 0C00000h + call sub_F72 + push large 0 + push large 180018Fh + call sub_D04 + push large 0C0000Fh + call sub_F72 + push large 1640060h + push large 1640130h + call sub_DD4 + push large 1640130h + push large 1C0130h + call sub_DD4 + push large 1C0130h + push large 1C0060h + call sub_DD4 + push large 1C0060h + push large 1640060h + call sub_DD4 + call sub_F9C + mov word_D3B0, 0C8h ; 'È' + call far ptr loc_1C2C + pop di + pop si + leave + retf 4 +sub_C1C6 endp + +seg005 ends + +; =========================================================================== + +; Segment type: Pure code +seg006 segment byte public 'CODE' use16 + assume cs:seg006 + ;org 3 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::string(string const &) +@string@$bctr$qmx6string proc far ; CODE XREF: xmsg::xmsg(string &)+52P + ; xmsg::xmsg(xmsg &)+56P ... + +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 8E8Fh + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_C362 + mov ax, 4 + push ax + call @$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_C37C + +loc_C362: ; CODE XREF: string::string(string &)+19j + les bx, [bp+arg_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+arg_0] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, es:[bx] + inc word ptr es:[bx] + +loc_C37C: ; CODE XREF: string::string(string &)+2Dj + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_1E] + call ___ExitExceptBlocks + 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 +@string@$bctr$qmx6string endp + +; --------------------------------------------------------------------------- +byte_C3A2 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:8E87o + db 0Dh dup(0), 2, 0, 2, 0, 95h, 8Eh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0B4h, 0 + dw seg seg006 + db 2 dup(0), 3, 0Dh dup(0), 4, 0, 3, 0, 26h, 0, 2 dup(0FFh) + db 3, 0, 2Ch, 0, 30h, 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string__string(__int32, char *s) +@string@$bctr$qnxc proc far ; CODE XREF: string::contains(char *)+25P + ; string::assert_element(uint)+5Ap ... + +var_22 = word ptr -22h +var_16 = word ptr -16h +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 8F01h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_C44B + mov ax, 4 + push ax + call @$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_C4BF + +loc_C44B: ; CODE XREF: string::string(char *)+19j + mov ax, 0Ch + push ax + call @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + or ax, dx + jz short loc_C4AF + mov [bp+var_16], 0Eh + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, word ptr [bp+src] + or ax, word ptr [bp+src+2] + jz short loc_C481 + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_C483 +; --------------------------------------------------------------------------- + +loc_C481: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_C483: ; CODE XREF: string::string(char *)+63j + push ax ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] ; __int32 + nop + push cs + call near ptr @TStringRef@$bctr$qnxcuit1uiui ; TStringRef::TStringRef(char *,uint,char *,uint,uint) + add sp, 12h + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov [bp+var_16], 6 + +loc_C4AF: ; CODE XREF: string::string(char *)+41j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + les bx, [bp+arg_0] + mov es:[bx+2], dx + mov es:[bx], ax + +loc_C4BF: ; CODE XREF: string::string(char *)+2Dj + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_22] + call ___ExitExceptBlocks + 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 +@string@$bctr$qnxc endp + +; --------------------------------------------------------------------------- + db 4, 0, 90h, 20h, 0Ah, 0, 94h, 2 + dw seg seg006 +aTstringref db 'TStringRef *',0 +byte_C4FC db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:8EEBo + db 0Dh dup(0), 2, 0, 2, 0, 17h, 8Fh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_C58C + dw 0 + db 3, 0Dh dup(0) +byte_C54A db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:8EE7o + db 0Dh dup(0), 2, 0, 2, 0, 64h, 8Fh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Ch, 2 + dw seg seg006 + db 2 dup(0), 3, 0Dh dup(0) +byte_C58C db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg006:0206o + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0Ch, 0 + db 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 32h, 0, 3Eh, 0Dh dup(0) + db 1, 0, 1, 0, 0ABh, 6 + dw seg seg006 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0DAh, 2 + dw seg seg006 + dw 0 + db 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh), 1, 0 + db 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h, 72h + db 65h, 6Eh, 63h, 65h, 0Ah dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string___string(void (*driver)(void), char) +@string@$bdtr$qv proc far ; CODE XREF: string::contains(char *)+45P + ; xmsg::~xmsg(void)+3FP ... + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 8FBAh + call ___InitExceptBlocks + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov ax, word ptr [bp+driver] + or ax, word ptr [bp+driver+2] + jz short loc_C6B0 + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_C69D + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov ax, 3 + push ax ; char + les bx, [bp+driver] + push word ptr es:[bx+2] + push word ptr es:[bx] ; driver + nop + push cs + call near ptr sub_C9DB + add sp, 6 + +loc_C69D: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_C6B0 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_C6B0: ; CODE XREF: string::~string(void)+2Bj + ; string::~string(void)+69j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@$bdtr$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::assert_element(unsigned int)const +@string@assert_element$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 8FEEh + call ___InitExceptBlocks + mov ax, [bp+arg_4] + mov [bp+var_28], ax + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+6] + cmp ax, [bp+var_28] + jbe short loc_C6EB + mov ax, 1 + jmp short loc_C6ED +; --------------------------------------------------------------------------- + +loc_C6EB: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_C6ED: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_C76E + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 90E0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 0D0Ah + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_C76E: ; CODE XREF: string::assert_element(uint)+31j + push [bp+var_26] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@assert_element$xqui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::assert_index(unsigned int)const +@string@assert_index$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 9032h + call ___InitExceptBlocks + mov ax, [bp+arg_4] + mov [bp+var_28], ax + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+6] + cmp ax, [bp+var_28] + jb short loc_C7A9 + mov ax, 1 + jmp short loc_C7AB +; --------------------------------------------------------------------------- + +loc_C7A9: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_C7AB: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_C82C + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 90E0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 0D28h + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_C82C: ; CODE XREF: string::assert_index(uint)+31j + push [bp+var_26] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@string@assert_index$xqui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; TSubString::assert_element(unsigned int)const +@TSubString@assert_element$xqui proc far + +var_28 = word ptr -28h +var_26 = word ptr -26h +var_1A = word ptr -1Ah +src = byte ptr -8 +driver = byte ptr -4 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 28h + push si + push di + mov ax, seg seg000 + mov bx, 9076h + call ___InitExceptBlocks + mov ax, [bp+arg_4] + mov [bp+var_28], ax + les bx, [bp+arg_0] + mov ax, es:[bx+6] + cmp ax, [bp+var_28] + jbe short loc_C864 + mov ax, 1 + jmp short loc_C866 +; --------------------------------------------------------------------------- + +loc_C864: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_C866: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_C8E7 + xor ax, ax + push ax ; int + push ax ; int + push ax ; int + push ax ; int + mov ax, 5 + push ax ; int + mov ax, seg seg000 + push ax ; int + mov ax, 90E0h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 0D46h + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_C8E7: ; CODE XREF: TSubString::assert_element(uint)+2Ej + push [bp+var_26] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +@TSubString@assert_element$xqui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far TStringRef__TStringRef(__int32, void *src, size_t n, int, int, int, int) +@TStringRef@$bctr$qnxcuit1uiui proc far ; CODE XREF: string::string(char *)+76p + +arg_0 = dword ptr 6 +src = dword ptr 0Ah +n = 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 + push si + push di + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_C919 + mov ax, 0Ch + push ax + call @$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 + jnz short loc_C919 + jmp loc_C9BF +; --------------------------------------------------------------------------- + +loc_C919: ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+Bj + ; TStringRef::TStringRef(char *,uint,char *,uint,uint)+1Fj + les bx, [bp+arg_0] + mov word ptr es:[bx], 1 + mov word ptr es:[bx+0Ah], 0 + mov ax, [bp+n] + add ax, [bp+arg_E] + mov es:[bx+6], ax + mov ax, es:[bx+6] + add ax, [bp+arg_10] + push ax + nop + push cs + call near ptr sub_CB73 + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_3C38 + pop cx + les bx, [bp+arg_0] + mov es:[bx+4], dx + mov es:[bx+2], ax + mov ax, es:[bx+2] + or ax, es:[bx+4] + jnz short loc_C973 + push ds + mov ax, 0A60h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_C973: ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+70j + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + les bx, [bp+arg_0] + push word ptr es:[bx+4] + push word ptr es:[bx+2] ; dest + call _memcpy + push [bp+arg_E] ; n + push [bp+arg_C] + push [bp+arg_A] ; src + les bx, [bp+arg_0] + mov ax, es:[bx+2] + add ax, [bp+n] + push word ptr es:[bx+4] + push ax ; dest + call _memcpy + add sp, 14h + les bx, [bp+arg_0] + les bx, es:[bx+2] + mov ax, [bp+n] + add ax, [bp+arg_E] + add bx, ax + mov byte ptr es:[bx], 0 + +loc_C9BF: ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+21j + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + pop di + pop si + pop bp + retf +@TStringRef@$bctr$qnxcuit1uiui endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_C9DB(void (*driver)(void), char) +sub_C9DB proc far ; CODE XREF: string::~string(void)+5Fp + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + +; TStringRef::~TStringRef(void) +@TStringRef@$bdtr$qv: + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 9090h + call ___InitExceptBlocks + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + sub word ptr es:[bx], 1 + sbb word ptr es:[bx+2], 0 + mov ax, word ptr [bp+driver] + or ax, word ptr [bp+driver+2] + jz short loc_CA2D + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3B05 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_CA2D + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_CA2D: ; CODE XREF: sub_C9DB+2Bj sub_C9DB+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_C9DB endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; TStringRef::reserve(unsigned int) +@TStringRef@reserve$qui: + sub sp, 20h + push si + push di + mov ax, seg seg000 + mov bx, 90A2h + call ___InitExceptBlocks + les bx, [bp+6] + or word ptr es:[bx+0Ah], 1 + mov ax, [bp+0Ah] + inc ax + push ax + nop + push cs + call near ptr sub_CB73 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_DC88 + jbe short loc_CA9B + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3D9F + add sp, 6 + les bx, [bp+6] + mov es:[bx+4], dx + mov es:[bx+2], ax + mov ax, [bp-20h] + mov es:[bx+8], ax + +loc_CA9B: ; CODE XREF: seg006:0742j + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; TStringRef::check_freeboard(void) +@TStringRef@check_freeboard$qv: + sub sp, 20h + push si + push di + mov ax, seg seg000 + mov bx, 90ACh + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_CB73 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_DC88 + jbe short loc_CB03 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3D9F + add sp, 6 + les bx, [bp+6] + mov es:[bx+4], dx + mov es:[bx+2], ax + mov ax, [bp-20h] + mov es:[bx+8], ax + +loc_CB03: ; CODE XREF: seg006:07AAj + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_CB11 proc far ; CODE XREF: seg006:08C2p + +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + +; TStringRef::grow_to(unsigned int) +@TStringRef@grow_to$qui: + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 90BEh + call ___InitExceptBlocks + les bx, [bp+arg_0] + mov ax, [bp+arg_4] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3D9F + add sp, 6 + les bx, [bp+arg_0] + mov es:[bx+4], dx + mov es:[bx+2], ax + mov ax, es:[bx+2] + or ax, es:[bx+4] + jnz short loc_CB65 + push ds + mov ax, 0A60h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_CB65: ; CODE XREF: sub_CB11+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_CB11 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_CB73 proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg006:072Dp ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; TStringRef::round_capacity(unsigned int) +@TStringRef@round_capacity$qui: + sub sp, 20h + push si + push di + mov ax, seg seg000 + mov bx, 90C8h + call ___InitExceptBlocks + mov ax, word_DC84 + mov [bp+var_20], ax + mov cx, word_DC86 + mov ax, [bp+arg_0] + sub ax, [bp+var_20] + add ax, cx + dec ax + xor dx, dx + div cx + imul cx + add ax, [bp+var_20] + push ax + push [bp+var_1E] + call ___ExitExceptBlocks + pop ax + pop di + pop si + mov sp, bp + pop bp + retf +sub_CB73 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; TStringRef::splice(unsigned int, unsigned int, char const *, unsigned int) +@TStringRef@splice$quiuinxcui: + sub sp, 26h + push si + push di + mov ax, seg seg000 + mov bx, 90DAh + call ___InitExceptBlocks + les bx, [bp+6] + mov ax, es:[bx+6] + add ax, [bp+12h] + sub ax, [bp+0Ch] + mov [bp-24h], ax + push ax + push cs + call near ptr sub_CB73 + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_CBFA + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_CB11 + add sp, 6 + jmp short loc_CC69 +; --------------------------------------------------------------------------- + +loc_CBFA: ; CODE XREF: seg006:08B8j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_DC88 + jbe short loc_CC69 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_CC69 + mov ax, [bp-26h] + inc ax + push ax + call sub_3C38 + pop cx + mov [bp-20h], dx + mov [bp-22h], ax + les bx, [bp+6] + mov ax, es:[bx+2] + or ax, es:[bx+4] + jnz short loc_CC3B + push ds + mov ax, 0A60h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_CC3B: ; CODE XREF: seg006:08FDj + cmp word ptr [bp+0Ah], 0 + jz short loc_CC5D + push word ptr [bp+0Ah] + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + push word ptr [bp-20h] + push word ptr [bp-22h] + call _memcpy + add sp, 0Ah + +loc_CC5D: ; CODE XREF: seg006:090Fj + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_CC7A +; --------------------------------------------------------------------------- + +loc_CC69: ; CODE XREF: seg006:08C8j seg006:08D8j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_CC7A: ; CODE XREF: seg006:0937j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_CC97 + cmp ax, [bp-22h] + jnz short loc_CC97 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_CCC9 + +loc_CC97: ; CODE XREF: seg006:0958j seg006:095Dj + les bx, [bp+6] + mov ax, es:[bx+6] + sub ax, [bp+0Ah] + sub ax, [bp+0Ch] + push ax + mov ax, es:[bx+2] + add ax, [bp+0Ah] + add ax, [bp+0Ch] + push word ptr es:[bx+4] + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + add ax, [bp+12h] + push word ptr [bp-20h] + push ax + call _memmove + add sp, 0Ah + +loc_CCC9: ; CODE XREF: seg006:0965j + cmp word ptr [bp+12h], 0 + jz short loc_CD0D + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_CCF4 + push word ptr [bp+12h] + push word ptr [bp+10h] + push word ptr [bp+0Eh] + mov ax, [bp-22h] + add ax, [bp+0Ah] + push word ptr [bp-20h] + push ax + call _memmove + add sp, 0Ah + jmp short loc_CD0D +; --------------------------------------------------------------------------- + +loc_CCF4: ; CODE XREF: seg006:09A5j + push word ptr [bp+12h] + mov ax, 20h ; ' ' + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + push word ptr [bp-20h] + push ax + call _memset + add sp, 8 + +loc_CD0D: ; CODE XREF: seg006:099Dj seg006:09C2j + les bx, [bp+6] + mov ax, [bp-24h] + mov es:[bx+6], ax + push es + les ax, [bp-22h] + mov dx, es + pop es + add ax, es:[bx+6] + mov bx, ax + mov es, dx + mov byte ptr es:[bx], 0 + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_CD3F + cmp ax, [bp-22h] + jz short loc_CD62 + +loc_CD3F: ; CODE XREF: seg006:0A08j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3B05 + pop cx + pop cx + les bx, [bp+6] + mov dx, [bp-20h] + mov ax, [bp-22h] + mov es:[bx+4], dx + mov es:[bx+2], ax + +loc_CD62: ; CODE XREF: seg006:0A0Dj + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::set_case_sensitive(int) +@string@set_case_sensitive$qi: + sub sp, 2 + push si + push di + mov ax, word_DC7E + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC7E, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::set_paranoid_check(int) +@string@set_paranoid_check$qi: + sub sp, 2 + push si + push di + mov ax, word_DC80 + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC80, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::skip_whitespace(int) +@string@skip_whitespace$qi: + sub sp, 2 + push si + push di + mov ax, word_DC82 + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC82, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::initial_capacity(unsigned int) +@string@initial_capacity$qui: + sub sp, 2 + push si + push di + mov ax, word_DC84 + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC84, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::resize_increment(unsigned int) +@string@resize_increment$qui: + sub sp, 2 + push si + push di + mov ax, word_DC86 + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC86, ax + cmp word_DC86, 0 + jnz short loc_CE05 + mov word_DC86, 1 + +loc_CE05: ; CODE XREF: seg006:0ACDj + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::max_waste(unsigned int) +@string@max_waste$qui: + sub sp, 2 + push si + push di + mov ax, word_DC88 + mov [bp-2], ax + mov ax, [bp+6] + mov word_DC88, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_CE2B db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:90B6o seg000:90D2o + db 0Dh dup(0), 2, 0, 2, 0, 15h, 91h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_CEBB + db 2 dup(0), 3, 0Dh dup(0), 6, 0, 3, 0, 26h, 0, 2 dup(0FFh) + db 7, 0, 2Eh, 0, 3Ah, 0Dh dup(0), 2, 0, 2, 0, 62h, 91h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 8Bh, 0Bh + dw seg seg006 + db 2 dup(0), 3, 0Dh dup(0) +byte_CEBB db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg006:0B35o + db 0Dh dup(0), 1, 0, 1, 0, 9Ch, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_CEF3 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:8FC8o seg000:9050o + db 0Dh dup(0), 1, 0, 1, 0, 8, 3 + dw seg seg006 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_CF2D db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:909Ao + db 0Dh dup(0), 2, 0, 2, 0, 0AFh, 91h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0, 8Bh, 0Bh + dw seg seg006 + db 2 dup(0), 3, 12h dup(0) +seg006 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_CF80 dw 0 ; DATA XREF: sub_48A+7r sub_3A34+20r ... +word_CF82 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +word_CF84 dw 554Eh ; DATA XREF: sub_48A+20w sub_3AA5+Cr ... +word_CF86 dw 4C4Ch ; DATA XREF: sub_48A+Br sub_3AA5+2r ... +off_CF88 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_39D1+24r ... + dw offset sub_4548 + db 43h ; C + db 4Bh ; K + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aBorlandCCopyri db 'Borland C++ - Copyright 1993 Borland Intl.',0 +aDivideError db 'Divide error',0Dh,0Ah,0 +dword_CFDA dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_CFDE dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_CFE2 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_CFE6 dd 0 ; DATA XREF: sub_178+2Dw + ; __restorezero+25r ... +; int argc +argc dw 0 ; DATA XREF: start+137r +; char **argv +argv dw 0 ; DATA XREF: start+133r +word_CFEE dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br sub_8E2A+54w +word_CFF2 dw 0 ; DATA XREF: start+127r sub_8E2A+4Ew +word_CFF4 dw 0 ; DATA XREF: start+46w +word_CFF6 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_CFF8 dw 0 ; DATA XREF: start+55w sub_8E2A+9r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_CFFC dw 0 ; DATA XREF: start+16w start+C7r ... +word_CFFE dw 0 ; DATA XREF: __IOERROR:loc_31F0w + ; seg000:4138w ... + db 0FFh + db 0FFh + db 0E2h ; â + db 2Ch ; , +word_D004 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_D006 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_D008 dw 0 ; DATA XREF: sub_3E20+6Ew __sbrk+12r ... +word_D00A dw 0 ; DATA XREF: start+8Bw sub_3E20+6Aw ... +word_D00C dw 0 ; DATA XREF: sub_3E20+7Ew __brk+1Cr ... +word_D00E dw 0 ; DATA XREF: start+21w start+F5w ... +aOk db 'ÏÏ®ª¼ÂÏ',0 +aK db '϶¸»·ªµ',0 +aKN db 'Ïϱª»­Ï',0 +aKM db 'µ¾¶ª½²¬',0 +unk_D030 db 0 ; DATA XREF: sub_9643+Co + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aKkuukkuukkuukk db 'ªªUUªªUUªªUUªªUUªªUUªªUUªªUUªªUU3333ÌÌÌÌ3333ÌÌÌÌ3333ÌÌÌÌ3333ÌÌÌÌÌ' + ; DATA XREF: sub_97F1+Co + db 'ÌÌÌ3333ÌÌÌÌ3333ÌÌÌÌ3333ÌÌÌÌ3333end3.txt',0 +aEnding_m db 'ending.m',0 ; DATA XREF: sub_9AD4+1Do +aEnd1_txt db 'end1.txt',0 ; DATA XREF: sub_9B64+5o +aEnd1_m db 'end1.m',0 ; DATA XREF: sub_9B64+Fo sub_A09D+Fo +aEd01_pi db 'ed01.pi',0 ; DATA XREF: sub_9B64+34o sub_A09D+34o +aEd02_pi db 'ed02.pi',0 ; DATA XREF: sub_9B64+280o +aEnd2_txt db 'end2.txt',0 ; DATA XREF: sub_A09D+5o +aEd03_pi db 'ed03.pi',0 ; DATA XREF: sub_A09D+A7o +aEd03a_rgb db 'ed03a.rgb',0 ; DATA XREF: sub_A09D+17Bo +aEd04_pi db 'ed04.pi',0 ; DATA XREF: sub_A09D+1BDo +aEd05_pi db 'ed05.pi',0 ; DATA XREF: sub_A09D+3DDo + ; sub_A09D+596o ... +aVer1_00 db 'ver 1.00',0 ; DATA XREF: sub_A8FA+2Co sub_A8FA+7Ao +aXxcvsB@b@vrvsv db '••–‚˜^@@‚r‚s‚`‚e‚e',0 ; DATA XREF: sub_A8FA+B4o +aEd06_pi db 'ed06.pi',0 ; DATA XREF: sub_A8FA+CBo +aGvgngogigab@b@ db 'ƒvƒƒOƒ‰ƒ€@@@‚y‚t‚m',0 ; DATA XREF: sub_A8FA+10Eo +aEd06b_rgb db 'ed06b.rgb',0 ; DATA XREF: sub_A8FA+12Bo +aEd06c_rgb db 'ed06c.rgb',0 ; DATA XREF: sub_A8FA+156o +aEd07_pi db 'ed07.pi',0 ; DATA XREF: sub_A8FA+173o +aGogigtgbgbgnb@ db 'ƒOƒ‰ƒtƒBƒbƒN@‚y‚t‚m',0 ; DATA XREF: sub_A8FA+1ADo +aB@b@b@b@b@b@b@ db '@@@@@@@‚•“úŒü',0 ; DATA XREF: sub_A8FA+1C2o +aB@b@b@b@bigibG db '@@@@iƒI[ƒ‹ƒNƒŠƒA‰æj',0 ; DATA XREF: sub_A8FA+1D7o +aEd07a_rgb db 'ed07a.rgb',0 ; DATA XREF: sub_A8FA+1ECo +aEd07b_rgb db 'ed07b.rgb',0 ; DATA XREF: sub_A8FA+20Co + ; sub_A8FA+262o +aVlvtvrvhvbb@b@ db '‚l‚t‚r‚h‚b@@‚y‚t‚m',0 ; DATA XREF: sub_A8FA+24Do +aEd08_pi db 'ed08.pi',0 ; DATA XREF: sub_A8FA+280o +aEd08a_rgb db 'ed08a.rgb',0 ; DATA XREF: sub_A8FA+2D2o +aVsvdvrvsb@vovk db '‚s‚d‚r‚s@‚o‚k‚`‚x‚d‚q',0 ; DATA XREF: sub_A8FA+2F4o +aB@b@b@b@vivivs db '@@@@‚©‚¨‚é',0 ; DATA XREF: sub_A8FA+309o +aB@b@b@b@vbbVv db '@@@@‚b|‚v',0 ; DATA XREF: sub_A8FA+31Eo +aB@b@Orucb@mbiS db '@@ ŽR“c@Œbˆê˜Y',0 ; DATA XREF: sub_A8FA+333o +aVVSSxrivVVVV db ' ‚»‚Ì‘¼‘娂݂̂Ȃ³‚ñ',0 ; DATA XREF: sub_A8FA+348o +aEd08b_rgb db 'ed08b.rgb',0 ; DATA XREF: sub_A8FA+35Do +aEd08c_rgb db 'ed08c.rgb',0 ; DATA XREF: sub_A8FA+37Do +aEd09_pi db 'ED09.pi',0 ; DATA XREF: sub_A8FA+3A9o +aVsvivbvovlb@vs db '‚s‚ˆ‚‚Ž‚‹@‚™‚‚•@‚†‚‚’@‚‚Œ‚‚™‚‰‚Ž‚‡',0 ; DATA XREF: sub_A8FA+3F5o +aB@nPiuU_ db '@ÅI“¾“_',0 ; DATA XREF: sub_A8FA+429o +aGrgugegbgjgeb db 'ƒRƒ“ƒeƒBƒjƒ…[',0 ; DATA XREF: sub_A8FA+46Ao +aB@Gigugn db '@ ƒ‰ƒ“ƒN',0 ; DATA XREF: sub_A8FA+4B6o +aGvgmgcgdbPik db 'ƒvƒŒƒCƒ„[‰Šú',0 ; DATA XREF: sub_A8FA+504o +aCMvpik db ' —쌂‰Šú”',0 ; DATA XREF: sub_A8FA+552o +aVavVVSrso db '‚ ‚È‚½‚̘r‘O',0 ; DATA XREF: sub_A8FA+5B9o +aVpvxvxvvb@vyvt db '‚P‚X‚X‚V@‚y‚t‚m (Amusement Makers)',0 ; DATA XREF: sub_A8FA+6AEo +aAll_pi db 'all.pi',0 ; DATA XREF: sub_AFE7+1Ao sub_B07F+1Ao +aBut_pi db 'but.pi',0 ; DATA XREF: sub_AFE7+5Ao +aExtra_pi db 'extra.pi',0 ; DATA XREF: sub_B07F+5Ao +aMikoft_bft db 'MIKOFT.bft',0 ; DATA XREF: _main+26o +aEndft_bft db 'endft.bft',0 ; DATA XREF: _main+7Do +; char path[] +path db 'op',0 ; DATA XREF: _main+D8o _main+DCo +aBfnt db 'BFNT' + db 1Ah + db 0 +word_D362 dw 0 ; DATA XREF: sub_6AE+Er + ; sub_6AE:loc_70Er ... +word_D364 dw 27Fh ; DATA XREF: sub_D04+19r sub_11EE+36w +word_D366 dw 27Fh ; DATA XREF: sub_6AE:loc_6C2r + ; sub_6AE:loc_718r ... +word_D368 dw 0 ; DATA XREF: sub_D04:loc_D42r + ; sub_DD4+Fr ... +word_D36A dw 18Fh ; DATA XREF: sub_6AE+33r sub_6AE+47r ... +word_D36C dw 18Fh ; DATA XREF: sub_11EE+40w +word_D36E dw 0A800h ; DATA XREF: sub_D04+66r + ; sub_DD4:loc_E48r ... +word_D370 dw 7CB0h ; DATA XREF: sub_11EE+46w + dw 0 + db 80h ; € + db 0 + db 0C0h ; À + db 0 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 0 + db 0F8h ; ø + db 0 + db 0FCh ; ü + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 80h ; € + db 0FFh + db 0C0h ; À + db 0FFh + db 0E0h ; à + db 0FFh + db 0F0h ; ð + db 0FFh + db 0F8h ; ø + db 0FFh + db 0FCh ; ü + db 0FFh + db 0FEh ; þ + db 0FFh + db 0FFh +word_D394 dw 0 ; DATA XREF: sub_AE8+5r sub_AE8+26r ... +word_D396 dw 0FFFFh ; DATA XREF: sub_9FC+6r sub_9FC+1Fw ... +byte_D398 db 0 ; DATA XREF: sub_CE4+4r + db 0 +word_D39A dw 0 ; DATA XREF: sub_FA2+2r sub_FA2+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_D3A4 dw 0A800h ; DATA XREF: sub_11EE+9w sub_123C+18r ... +word_D3A6 dw 3E80h ; DATA XREF: sub_11EE+Fw sub_123C+14r ... +word_D3A8 dw 190h ; DATA XREF: sub_11EE+3Cw + db 50h ; P + db 0 +word_D3AC dw 0 ; DATA XREF: sub_11EE+2Dw + db 55h ; U + db 0 +word_D3B0 dw 64h ; DATA XREF: sub_536+8w + ; sub_536:loc_55Dw ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0FFh + db 0FFh + db 0 + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0 + db 0FFh + db 0FFh + db 0FFh + db 77h ; w + db 77h ; w + db 77h ; w + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª +word_D3E2 dw 0 ; DATA XREF: seg000:1C57r + dw 0 + dw 0 +word_D3E8 dw 200h ; DATA XREF: sub_5B8+9r sub_5B8+2Fr +word_D3EA dw 0 ; DATA XREF: sub_5B8:loc_5F4w + ; sub_5B8+48w ... +byte_D3EC db 0 ; DATA XREF: sub_2B06+4Fr sub_B756+28w + db 0 + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FEh ; þ + db 0 + db 0FDh ; ý + db 0 + db 0FCh ; ü + db 0 + db 0FBh ; û + db 0 + db 0FAh ; ú + db 0 + db 0F8h ; ø + db 0 + db 0F7h ; ÷ + db 0 + db 0F5h ; õ + db 0 + db 0F3h ; ó + db 0 + db 0F1h ; ñ + db 0 + db 0EFh ; ï + db 0 + db 0EDh ; í + db 0 + db 0EAh ; ê + db 0 + db 0E7h ; ç + db 0 + db 0E5h ; å + db 0 + db 0E2h ; â + db 0 + db 0DFh ; ß + db 0 + db 0DCh ; Ü + db 0 + db 0D8h ; Ø + db 0 + db 0D5h ; Õ + db 0 + db 0D1h ; Ñ + db 0 + db 0CEh ; Î + db 0 + db 0CAh ; Ê + db 0 + db 0C6h ; Æ + db 0 + db 0C2h ;  + db 0 + db 0BEh ; ¾ + db 0 + db 0B9h ; ¹ + db 0 + db 0B5h ; µ + db 0 + db 0B1h ; ± + db 0 + db 0ACh ; ¬ + db 0 + db 0A7h ; § + db 0 + db 0A2h ; ¢ + db 0 + db 9Dh ; + db 0 + db 98h ; ˜ + db 0 + db 93h ; “ + db 0 + db 8Eh ; Ž + db 0 + db 89h ; ‰ + db 0 + db 84h ; „ + db 0 + db 7Eh ; ~ + db 0 + db 79h ; y + db 0 + db 73h ; s + db 0 + db 6Dh ; m + db 0 + db 68h ; h + db 0 + db 62h ; b + db 0 + db 5Ch ; \ + db 0 + db 56h ; V + db 0 + db 50h ; P + db 0 + db 4Ah ; J + db 0 + db 44h ; D + db 0 + db 3Eh ; > + db 0 + db 38h ; 8 + db 0 + db 32h ; 2 + db 0 + db 2Ch ; , + db 0 + db 26h ; & + db 0 + db 1Fh + db 0 + db 19h + db 0 + db 13h + db 0 + db 0Dh + db 0 + db 6 + db 0 + db 0 + db 0 + db 0FAh ; ú + db 0FFh + db 0F3h ; ó + db 0FFh + db 0EDh ; í + db 0FFh + db 0E7h ; ç + db 0FFh + db 0E1h ; á + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0CEh ; Î + db 0FFh + db 0C8h ; È + db 0FFh + db 0C2h ;  + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0B0h ; ° + db 0FFh + db 0AAh ; ª + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 9Eh ; ž + db 0FFh + db 98h ; ˜ + db 0FFh + db 93h ; “ + db 0FFh + db 8Dh ; + db 0FFh + db 87h ; ‡ + db 0FFh + db 82h ; ‚ + db 0FFh + db 7Ch ; | + db 0FFh + db 77h ; w + db 0FFh + db 72h ; r + db 0FFh + db 6Dh ; m + db 0FFh + db 68h ; h + db 0FFh + db 63h ; c + db 0FFh + db 5Eh ; ^ + db 0FFh + db 59h ; Y + db 0FFh + db 54h ; T + db 0FFh + db 4Fh ; O + db 0FFh + db 4Bh ; K + db 0FFh + db 47h ; G + db 0FFh + db 42h ; B + db 0FFh + db 3Eh ; > + db 0FFh + db 3Ah ; : + db 0FFh + db 36h ; 6 + db 0FFh + db 32h ; 2 + db 0FFh + db 2Fh ; / + db 0FFh + db 2Bh ; + + db 0FFh + db 28h ; ( + db 0FFh + db 24h ; $ + db 0FFh + db 21h ; ! + db 0FFh + db 1Eh + db 0FFh + db 1Bh + db 0FFh + db 19h + db 0FFh + db 16h + db 0FFh + db 13h + db 0FFh + db 11h + db 0FFh + db 0Fh + db 0FFh + db 0Dh + db 0FFh + db 0Bh + db 0FFh + db 9 + db 0FFh + db 8 + db 0FFh + db 6 + db 0FFh + db 5 + db 0FFh + db 4 + db 0FFh + db 3 + db 0FFh + db 2 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 2 + db 0FFh + db 3 + db 0FFh + db 4 + db 0FFh + db 5 + db 0FFh + db 6 + db 0FFh + db 8 + db 0FFh + db 9 + db 0FFh + db 0Bh + db 0FFh + db 0Dh + db 0FFh + db 0Fh + db 0FFh + db 11h + db 0FFh + db 13h + db 0FFh + db 16h + db 0FFh + db 19h + db 0FFh + db 1Bh + db 0FFh + db 1Eh + db 0FFh + db 21h ; ! + db 0FFh + db 24h ; $ + db 0FFh + db 28h ; ( + db 0FFh + db 2Bh ; + + db 0FFh + db 2Fh ; / + db 0FFh + db 32h ; 2 + db 0FFh + db 36h ; 6 + db 0FFh + db 3Ah ; : + db 0FFh + db 3Eh ; > + db 0FFh + db 42h ; B + db 0FFh + db 47h ; G + db 0FFh + db 4Bh ; K + db 0FFh + db 4Fh ; O + db 0FFh + db 54h ; T + db 0FFh + db 59h ; Y + db 0FFh + db 5Eh ; ^ + db 0FFh + db 63h ; c + db 0FFh + db 68h ; h + db 0FFh + db 6Dh ; m + db 0FFh + db 72h ; r + db 0FFh + db 77h ; w + db 0FFh + db 7Ch ; | + db 0FFh + db 82h ; ‚ + db 0FFh + db 87h ; ‡ + db 0FFh + db 8Dh ; + db 0FFh + db 93h ; “ + db 0FFh + db 98h ; ˜ + db 0FFh + db 9Eh ; ž + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 0AAh ; ª + db 0FFh + db 0B0h ; ° + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0C2h ;  + db 0FFh + db 0C8h ; È + db 0FFh + db 0CEh ; Î + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0E1h ; á + db 0FFh + db 0E7h ; ç + db 0FFh + db 0EDh ; í + db 0FFh + db 0F3h ; ó + db 0FFh + db 0FAh ; ú + db 0FFh + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 +word_D670 dw 0A000h ; DATA XREF: sub_1078+13r sub_10BC+13r + db 50h ; P + db 0 +word_D674 dw 1 ; DATA XREF: sub_12CC+2Er +aMasterl_libVer db 'MASTERL.LIB Version 0.23 Copyright (c)1995 A.Koizuka,Kazumi,steel' + db 'man,iR,All rights reserved.',0 + db 0 +unk_D6D4 db 0 ; DATA XREF: seg000:23D8r + db 0 +word_D6D6 dw 0 ; DATA XREF: seg000:23CAr +word_D6D8 dw 0 ; DATA XREF: sub_233E+Ew sub_233E+16w ... +byte_D6DA db 0 ; DATA XREF: sub_233E+24r sub_233E+4Cw ... + db 90h ; +word_D6DC dw 0 ; DATA XREF: sub_22F2r sub_2530+6w ... +word_D6DE dw 0 ; DATA XREF: sub_250E+15w sub_2530+1Bw ... +word_D6E0 dw 0 ; DATA XREF: sub_5B8+3w sub_14B8+DFw ... +word_D6E2 dw 100h ; DATA XREF: sub_2556+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_D6E9 db 0 ; DATA XREF: sub_2882+24r + ; sub_2882:loc_28C8r + dw 0 + dw 0 + dw 0 +word_D6F0 dw 0 ; DATA XREF: sub_2882+6Er +word_D6F2 dw 0 ; DATA XREF: sub_2882+6Br + dd 0 + dd 0 + dd 0 +word_D700 dw 0 ; DATA XREF: sub_2882+32r + dw 0 +word_D704 dw 0 ; DATA XREF: sub_280E+12r sub_280E+26w +word_D706 dw 0 ; DATA XREF: sub_2762+5r sub_2762+28r ... + db 0 + db 0 +byte_D70A db 5 ; DATA XREF: sub_B45F+4r sub_B45F+2Fr +byte_D70B db 3 ; DATA XREF: sub_B45F+10r sub_B45F+3Br +byte_D70C db 0 ; DATA XREF: sub_B45F+1Cr sub_B45F+47r + db 0 +a_exe db '.exe',0 +byte_D713 db 0 ; DATA XREF: sub_2BE6+3Bw sub_2BE6+4Fw ... +byte_D714 db 0 ; DATA XREF: sub_B68E:loc_B6A4w + ; sub_B839+3r ... + db 0 +aUmx db '“Œ•û••–‚.˜^',0 ; DATA XREF: sub_B756+2Eo +byte_D722 db 1 ; DATA XREF: sub_A8FA+4D5r + ; sub_B888+54w ... + db 0 +aHuuma_cfg db 'huuma.cfg',0 ; DATA XREF: sub_B888+5o +off_D72E dd aHuuhi_dat ; DATA XREF: sub_B967+4r sub_BBFD+6Er ... + ; "huuhi.dat" +aMO db '±²Ï¼¬¸»®',0 ; DATA XREF: sub_BA25+10o +byte_D73B db 0AAh ; DATA XREF: sub_BA25+9Br + db 0ABh ; « + db 0ACh ; ¬ + db 0ADh ; ­ + db 0AEh ; ® + db 0AFh ; ¯ + db 0B0h ; ° + db 0B1h ; ± + db 0B2h ; ² + db 0B3h ; ³ + db 0B4h ; ´ + db 0B5h ; µ + db 0B7h ; · + db 0B6h ; ¶ + db 0B8h ; ¸ + db 0B9h ; ¹ + db 0BAh ; º + db 0BBh ; » + db 0BCh ; ¼ + db 0BDh ; ½ + db 0BEh ; ¾ + db 0BFh ; ¿ + db 0C0h ; À + db 0C1h ; Á + db 0C2h ;  + db 0C3h ; à + db 0DAh ; Ú + db 0DBh ; Û + db 0DCh ; Ü + db 0DDh ; Ý + db 0DEh ; Þ + db 0E0h ; à + db 2 + db 3 + db 0A0h ;   + db 0A1h ; ¡ + db 0A2h ; ¢ + db 0A3h ; £ + db 0A4h ; ¤ + db 0A5h ; ¥ + db 0A6h ; ¦ + db 0A7h ; § + db 0A8h ; ¨ + db 0A9h ; © + db 0E1h ; á + db 0E2h ; â + db 0E3h ; ã + db 0E4h ; ä + db 0E5h ; å + db 0E6h ; æ + db 0E7h ; ç +aKO db '¶ª·®',0 ; DATA XREF: sub_BA25+22o +asc_D773 db '¹¸²¶½',0 ; DATA XREF: sub_BA25+34o +asc_D779 db '¼½',0 ; DATA XREF: sub_BA25+46o +unk_D77C db 3Eh ; > ; DATA XREF: sub_BFE8+Ao + db 1 + db 76h ; v + db 0 + db 0DAh ; Ú + db 0 +aHuuhi_dat db 'huuhi.dat',0 ; DATA XREF: dseg:off_D72Eo +unk_D78C db 0 ; DATA XREF: sub_C1C6+Co + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 +asc_D796 db ')))))',0 ; DATA XREF: sub_C1C6+1Do +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_D7BC dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_2D61r ... +off_D7BE dd sub_2F74 ; DATA XREF: sub_2F79+29r _setvbuf+C0w ... +off_D7C2 dd sub_2F74 ; DATA XREF: sub_2F79+43r +off_D7C6 dd sub_2F74 ; DATA XREF: sub_2F79+47r + dw 0 +word_D7CC dw 209h ; DATA XREF: seg000:35BBw seg000:35C5r +byte_D7CE db 0 ; DATA XREF: seg000:35ACr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 4Ah ; J + db 8 + db 0 + db 0 +word_D7E0 dw 20Ah ; DATA XREF: seg000:35F4w seg000:35FEr +byte_D7E2 db 1 ; DATA XREF: seg000:35E5r + dd 0 + dd 0 + dd 0 + db 0 + db 5Eh ; ^ + db 8 + db 0 + db 0 + db 2 + db 2 +byte_D7F6 db 2 ; DATA XREF: ___ErrorMessage+19r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 72h ; r + db 8 + db 0 + db 0 + db 43h ; C + db 2 + db 3 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 86h ; † + db 8 + db 0 + db 0 + db 42h ; B + db 2 + db 4 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 9Ah ; š + db 8 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_D95A dw 14h ; DATA XREF: start+C0r start+E3r ... + db 1 + db 60h ; ` + db 2 + db 60h ; ` + db 2 + db 60h ; ` + db 4 + db 0A0h ;   + db 2 + db 0A0h ;   + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_D984 dw 0 ; DATA XREF: __IOERROR:loc_31D3w + ; __IOERROR+2Bw + db 0 + db 13h + db 2 + db 2 + db 4 + db 5 + db 6 + db 8 + db 8 + db 8 + db 14h + db 15h + db 5 + db 13h + db 0Eh + db 5 + db 5 + db 11h + db 2 + db 1Eh + db 29h ; ) + db 2Ch ; , + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 29h ; ) + db 2Ch ; , + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 5 + db 5 + db 29h ; ) + db 17h + db 17h + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Fh + db 2Ch ; , + db 23h ; # + db 2 + db 2Ch ; , + db 0Fh + db 2Ah ; * + db 28h ; ( + db 28h ; ( + db 28h ; ( + db 13h + db 1Bh + db 1Ch + db 2 + db 2 + db 5 + db 0Fh + db 2 + db 17h + db 28h ; ( + db 2Ah ; * + db 13h + db 2Ah ; * + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 23h ; # + db 0Eh + db 1Ch + db 28h ; ( + db 17h + db 23h ; # + db 25h ; % + db 13h + db 28h ; ( + db 0 + db 0 + db 0 + db 0 + db 0 +word_D9E4 dw 0 ; DATA XREF: seg000:32AAr +word_D9E6 dw 326Fh ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_D9E8 dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_D9F8 dw 1000h ; DATA XREF: start+62r start+70w ... + public __ctype +; unsigned __int8 _ctype[257] +__ctype db 0, 20h, 20h, 20h, 20h, 20h, 20h, 20h ; DATA XREF: _toupper+18r + db 20h, 20h, 21h, 21h, 21h, 21h, 21h, 20h + db 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h + db 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h + db 20h, 81h, 40h, 40h, 40h, 40h, 40h, 40h + db 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h + db 40h, 12h, 12h, 12h, 12h, 12h, 12h, 12h + db 12h, 12h, 12h, 40h, 40h, 40h, 40h, 40h + db 40h, 40h, 14h, 14h, 14h, 14h, 14h, 14h + db 4, 4, 4, 4, 4, 4, 4, 4 + db 4, 4, 4, 4, 4, 4, 4, 4 + db 4, 4, 4, 4, 40h, 40h, 40h, 40h + db 40h, 40h, 18h, 18h, 18h, 18h, 18h, 18h + db 8, 8, 8, 8, 8, 8, 8, 8 + db 8, 8, 8, 8, 8, 8, 8, 8 + db 8, 8, 8, 8, 40h, 40h, 40h, 40h + db 20h, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + dd @terminate$qv ; terminate(void) + dd @unexpected$qv ; unexpected(void) +word_DB0E dw 0 ; DATA XREF: __ExceptInit+28w +word_DB10 dw 0 ; DATA XREF: __ExceptInit+25w + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_DC24 dw 0 ; DATA XREF: seg000:397Aw seg000:398Dw ... +word_DC26 dw 0 ; DATA XREF: sub_3E20+22r sub_3E20+61w +byte_DC28 db 0 ; DATA XREF: seg000:4175r seg000:418Dw +byte_DC29 db 0 ; DATA XREF: seg000:4110r seg000:4123w +word_DC2A dw 0 ; DATA XREF: seg000:407Dr seg000:40B3w +word_DC2C dw 0 ; DATA XREF: seg000:4079r + ; seg000:loc_40ADw + db 0 + db 0 + db 0 + db 0 +word_DC32 dw 0 ; DATA XREF: seg000:3F97r seg000:3FCDw ... +word_DC34 dw 0 ; DATA XREF: seg000:3F93r + ; seg000:loc_3FC7w ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 2 + db 4 + db 8 + db 0Bh + db 0Fh + db 16h + db 0 + db 15h + db 8Ch ; Œ + db 0Bh + db 0 + db 0 +dword_DC4E dd 0 ; DATA XREF: seg000:42F1w sub_4305+Ar ... + dd 0 + dd 0 + dd 0 + dw 0 + db 5Ch ; \ + db 0 +word_DC62 dw 0 ; DATA XREF: _setvbuf:loc_4DD6r + ; _setvbuf+4Bw +word_DC64 dw 0 ; DATA XREF: _setvbuf:loc_4DC0r + ; _setvbuf+35w +word_DC66 dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_DC7A dd 0 ; DATA XREF: _getenv+21r sub_8E2A+16w ... +word_DC7E dw 1 ; DATA XREF: seg006:0A48r seg006:0A51w +word_DC80 dw 0 ; DATA XREF: seg006:0A65r seg006:0A6Ew +word_DC82 dw 1 ; DATA XREF: seg006:0A82r seg006:0A8Bw +word_DC84 dw 3Fh ; DATA XREF: sub_CB73+13r seg006:0A9Fr ... +word_DC86 dw 40h ; DATA XREF: sub_CB73+19r seg006:0ABCr ... +word_DC88 dw 3Fh ; DATA XREF: seg006:073Er seg006:07A6r ... +aStringReferenc db 'String reference out of range',0 +aStringRefere_0 db 'String reference out of range',0 +aStringRefere_1 db 'String reference out of range',0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 0 + db 8 + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 8 + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0 + db 0 + db 0 + db 0 +aPath db 'PATH',0 + db '/\',0 + db 0 +a_bat db '.BAT',0 +a_com db '.COM',0 +a_exe_0 db '.EXE',0 +a_bat_0 db '.BAT',0 +aComspec db 'COMSPEC',0 +aC db '/c',0 + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 7Dh ; } + db 35h ; 5 + db 0 + db 0 + db 0 + db 10h + db 69h ; i + db 39h ; 9 + db 0 + db 0 + db 0 + db 0Fh + db 0BCh ; ¼ + db 42h ; B + db 0 + db 0 + db 0 + db 10h + db 2Ah ; * + db 8Eh ; Ž + db 0 + db 0 + db 1 + db 20h + dd loc_341D +unk_DE32 db ? ; ; DATA XREF: sub_95A3+16o sub_9B64+8Ao ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_DF46 db ? ; ; DATA XREF: sub_9B64+103o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_DFFE db ? ; ; DATA XREF: sub_9B64+140o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E02C db ? ; ; DATA XREF: sub_9B64+156o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E05A db ? ; ; DATA XREF: sub_9B64+16Eo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E088 db ? ; ; DATA XREF: sub_9B64+1BAo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E112 db ? ; ; DATA XREF: sub_A09D+20Do + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E140 db ? ; ; DATA XREF: sub_A09D+223o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E1F8 db ? ; ; DATA XREF: sub_9B64+245o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E226 db ? ; ; DATA XREF: sub_9B64+25Bo + ; sub_A09D+28Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E254 db ? ; ; DATA XREF: sub_9B64+271o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E282 db ? ; ; DATA XREF: sub_9B64+2EFo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E2B0 db ? ; ; DATA XREF: sub_A09D+2C9o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E2DE db ? ; ; DATA XREF: sub_A09D+2DFo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E30C db ? ; ; DATA XREF: sub_A09D+304o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E33A db ? ; ; DATA XREF: sub_A09D+326o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E368 db ? ; ; DATA XREF: sub_A09D+33Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E3C4 db ? ; ; DATA XREF: sub_9B64+38Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E3F2 db ? ; ; DATA XREF: sub_9B64+3A2o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E420 db ? ; ; DATA XREF: sub_9B64+3B8o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E44E db ? ; ; DATA XREF: sub_9B64+3D4o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E47C db ? ; ; DATA XREF: sub_9B64+3EAo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E4AA db ? ; ; DATA XREF: sub_9B64+400o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E534 db ? ; ; DATA XREF: sub_9B64+43Do + ; sub_A09D+3C7o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E562 db ? ; ; DATA XREF: sub_9B64+453o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E590 db ? ; ; DATA XREF: sub_9B64+469o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E5BE db ? ; ; DATA XREF: sub_9B64+485o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E5EC db ? ; ; DATA XREF: sub_9B64+49Bo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E6A4 db ? ; ; DATA XREF: sub_A09D+449o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E6D2 db ? ; ; DATA XREF: sub_9B64+4FFo + ; sub_A09D+465o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E700 db ? ; ; DATA XREF: sub_9B64+515o + ; sub_A09D+476o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E72E db ? ; ; DATA XREF: sub_9B64+52Bo + ; sub_A09D+48Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E75C db ? ; ; DATA XREF: sub_A09D+4A2o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E78A db ? ; ; DATA XREF: sub_A09D+4C4o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E7B8 db ? ; ; DATA XREF: sub_A09D+4DAo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E7E6 db ? ; ; DATA XREF: sub_A09D+4F0o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E814 db ? ; ; DATA XREF: sub_A09D+506o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E842 db ? ; ; DATA XREF: sub_A09D+51Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_E870 db ? ; ; DATA XREF: sub_A09D+532o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EA98 db ? ; ; DATA XREF: sub_A09D+5FDo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EAC6 db ? ; ; DATA XREF: sub_A09D+613o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EAF4 db ? ; ; DATA XREF: sub_A09D+622o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EB22 db ? ; ; DATA XREF: sub_A09D+638o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EB50 db ? ; ; DATA XREF: sub_A09D+64Eo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EB7E db ? ; ; DATA XREF: sub_A09D+670o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EBAC db ? ; ; DATA XREF: sub_A09D+686o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EBDA db ? ; ; DATA XREF: sub_A09D+69Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EC08 db ? ; ; DATA XREF: sub_A09D+6B2o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EC36 db ? ; ; DATA XREF: sub_A09D+6C8o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EC64 db ? ; ; DATA XREF: sub_A09D+6DEo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EC92 db ? ; ; DATA XREF: sub_A09D+6F4o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_ECC0 db ? ; ; DATA XREF: sub_A09D+70Ao + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_ECEE db ? ; ; DATA XREF: sub_A09D+720o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_ED1C db ? ; ; DATA XREF: sub_A09D+736o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EEBA db ? ; ; DATA XREF: sub_A09D+7B3o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_EEE8 db ? ; ; DATA XREF: sub_A09D+7C9o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_F02A db ? ; DATA XREF: sub_9643+43r sub_9B64+77w ... +byte_F02B db ? ; DATA XREF: sub_9643+56r sub_9643+8Fr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F040 dd ? ; DATA XREF: sub_A50+17r sub_AE8+2Er ... +word_F044 dw ? ; DATA XREF: sub_9FC+32w sub_9FC+46w ... +word_F046 dw ? ; DATA XREF: sub_9FC+35w sub_9FC+49w ... +word_F048 dw ? ; DATA XREF: sub_9FC+29w sub_A50+9r ... +word_F04A dw ? ; DATA XREF: sub_9FC+26w sub_A50+Cr ... +word_F04C dw ? ; DATA XREF: sub_9FC+2Cw + ; sub_AE8:loc_B8Bw ... +word_F04E dw ? ; DATA XREF: sub_9FC+2Fw + ; sub_A50:loc_A81w ... +unk_F050 db ? ; ; DATA XREF: sub_B790+11o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_F080 dw ? ; DATA XREF: sub_233E+1Ew seg000:23C2w ... +word_F082 dw ? ; DATA XREF: sub_233E+21w seg000:23C6w +word_F084 dw ? ; DATA XREF: sub_233E+37w sub_23EC+2Br +word_F086 dw ? ; DATA XREF: sub_233E+3Aw sub_23EC+27r +word_F088 dw ? ; DATA XREF: seg000:23BCw +word_F08A dw ? ; DATA XREF: sub_2530+Fw sub_2592+18r ... +word_F08C dw ? ; DATA XREF: sub_22F2+20r sub_2530+12w ... +word_F08E dw ? ; DATA XREF: sub_2530+15w sub_2592+24r ... +word_F090 dw ? ; DATA XREF: sub_22DC+7w sub_22F2+19r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F892 dd ? ; DATA XREF: sub_9701+29r sub_9701+73r ... +dword_F896 dd ? ; DATA XREF: sub_9701+35r sub_9701+A8r ... +dword_F89A dd ? ; DATA XREF: sub_9701+41r sub_9701+C0r ... +dword_F89E dd ? ; DATA XREF: sub_9701+4Dr sub_9701+D8r ... +dword_F8A2 dd ? ; DATA XREF: sub_9B64+5Ar + ; sub_9B64+2A6r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F8BA db ? ; ; DATA XREF: sub_9B64+57o + ; sub_9B64+2A3o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_FA6A db ? ; ; DATA XREF: seg000:2A19o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_FAEA dw ? ; DATA XREF: sub_2912+1Ew sub_2972+21r ... +word_FAEC dw ? ; DATA XREF: sub_2912+24w seg000:29D2r ... +word_FAEE dw ? ; DATA XREF: sub_9643+5Dr sub_9643+96r ... +byte_FAF0 db ? ; DATA XREF: sub_B68E+Bw sub_B6AC+Aw +byte_FAF1 db ? ; DATA XREF: _main+43w _main+55w ... +byte_FAF2 db ? ; DATA XREF: sub_B654+1Ew sub_B6ACw +byte_FAF3 db ? ; DATA XREF: _main+67r sub_B654+28w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_FB02 dd ? ; DATA XREF: sub_9B64+2B7r + ; sub_9B64:loc_9E2Ar ... + db ? ; +byte_FB07 db ? ; DATA XREF: sub_B888+46w +byte_FB08 db ? ; DATA XREF: sub_B888+4Dw + db ? + db ? ; + db ? ; +dword_FB0C dd ? ; DATA XREF: sub_A8FA+445r + ; sub_B888+5Cw ... + db ? ; + db ? ; +dword_FB12 dd ? ; DATA XREF: seg004:loc_BFE2w +word_FB16 dw ? ; DATA XREF: sub_B967+24o sub_BBFD+8Eo ... +dword_FB18 dd ? ; DATA XREF: seg004:loc_BFD1r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_FB3C dd ? ; DATA XREF: sub_BC9E:loc_BCBDr +dword_FB40 dd ? ; DATA XREF: sub_BBFD+4w sub_BBFD+2Ew + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_FB8A db ? ; DATA XREF: sub_BBFD+Dw sub_BBFD+3Cw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_FB95 db ? ; DATA XREF: sub_BBFD+12w sub_BBFD+44w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_FBC8 dd ? ; DATA XREF: sub_BBFD+17w sub_BBFD+58w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_FC4C dw ? ; DATA XREF: seg000:411Dw +word_FC4E dw ? ; DATA XREF: seg000:4117w + db ? ; + db ? ; + db ? ; + db ? ; +word_FC54 dw ? ; DATA XREF: seg000:40BDr seg000:418Aw ... +word_FC56 dw ? ; DATA XREF: seg000:40B9r seg000:4186w ... +dword_FC58 dd ? ; DATA XREF: sub_7263+ACw sub_7263+C2r ... +dword_FC5C dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg008 segment byte stack 'STACK' use16 + assume cs:seg008 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 80h dup(?) +seg008 ends + + + end start