diff --git a/th03_mainl.asm b/th03_mainl.asm new file mode 100644 index 00000000..21054fb9 --- /dev/null +++ b/th03_mainl.asm @@ -0,0 +1,39580 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : CE44AA7A114237C6B3CD67EEA9C0225A + +; File Name : th03/MAINL.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-10CF0h Loaded length: F72Ch +; 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:seg005, 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_E46C, ax + mov segx, es + mov word_E466, bx + mov word_E47E, bp + call sub_178 + mov ax, word_E466 + 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_E464, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_E468, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_F2F2 + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_F2F2, 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_2D32 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_E476, bx + mov word_E47A, 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_F2F2, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 133Ch + mov cx, 2880h + sub cx, di + cld + rep stosb + cmp word_F254, 14h + jbe short loc_110 + cmp byte ptr word_E46C, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_E46C+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_F254 + 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_E47E, 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_2D32 +; --------------------------------------------------------------------------- + +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, 1318h + mov di, 1336h + call sub_1E8 + push word_E462 + push envp ; envp + push word_E45E + push argv ; argv + push argc ; argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_2FC7+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 1336h + mov di, 133Ch + 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_2FC7+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_2FC7+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 + +; --------------------------------------------------------------------------- + mov dx, 4Bh ; 'K' + push ds + push dx + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax + nop + push cs + call near ptr __exit + +; =============== 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: seg002:0062r + mov word ptr dword_E44A, bx + mov word ptr dword_E44A+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_E44E, bx + mov word ptr dword_E44E+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_E452, bx + mov word ptr dword_E452+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_E456, bx + mov word ptr dword_E456+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_2FC7+2Fp + push ds + mov ax, 2500h + lds dx, dword_E44A + 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_E44E + 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_E452 + 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_E456 + 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 db 4, 0C0h, 0, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 0Eh, 0E8h, 2Eh + db 1Ch, 0B8h, 0F3h, 0FFh +; --------------------------------------------------------------------------- + +loc_27F: ; CODE XREF: seg000:02D9j seg000:02E1j + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_286: ; CODE XREF: sub_24E2+60p + push bp + mov bp, sp + push ds + push si + push di + mov ax, [bp+6] + mov cs:word_36D, ax + mov cs:word_35F, ds + mov ax, [bp+0Ch] + mov cs:word_2ED, ax + push ds + lds bx, [bp+8] + mov ax, [bx+8] + mov cx, [bx+0Ah] + mov bp, [bx+0Eh] + sub bp, [bx+0Ch] + inc bp + pop ds + shr ax, 3 + mov cs:byte_309, al + mov dh, al + mov dl, cl + mov cs:word_364, dx + mov cs:byte_307, cl + mul cx + mov cs:word_302, ax + shl ax, 2 + mov cs:word_2E8, ax + xchg ax, bx + push bx + push cs + call near ptr sub_1EC0 + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_1EC0 + jb short loc_27F + mov es, ax + mov ds, cx +; --------------------------------------------------------------------------- + db 0B9h +word_2E8 dw 1234h ; DATA XREF: seg000:02CFw + db 33h, 0D2h, 0BBh +word_2ED dw 1234h ; DATA XREF: seg000:029Bw + db 0B4h, 3Fh, 0CDh, 21h, 73h, 3, 0E9h, 7Ah, 0FFh, 3Bh + db 0C1h, 74h, 3, 0E9h, 73h, 0FFh, 33h, 0F6h, 0BAh +word_302 dw 1234h ; DATA XREF: seg000:02C8w + db 33h, 0DBh, 0B5h +byte_307 db 11h ; DATA XREF: seg000:02C1w + db 0B1h +byte_309 db 11h ; DATA XREF: seg000:02B4w + db 51h, 52h, 53h, 0ADh, 8Bh, 0D8h, 0ADh, 8Bh, 0D0h, 0BFh + db 4, 0, 0D0h, 0C3h, 0D0h, 0D5h, 0D0h, 0C3h, 0D0h, 0D1h + db 0D0h, 0C3h, 0D0h, 0D4h, 0D0h, 0C3h, 3 dup(0D0h), 0C3h + db 0D0h, 0D5h, 0D0h, 0C3h, 0D0h, 0D1h, 0D0h, 0C3h, 0D0h + db 0D4h, 0D0h, 0C3h, 2 dup(0D0h), 8Ah, 0DFh, 8Ah, 0FAh + db 8Ah, 0D6h, 4Fh, 75h, 0D7h, 5Bh, 5Ah, 26h, 88h, 1, 3 + db 0FAh, 26h, 88h, 21h, 3, 0FAh, 26h, 88h, 9, 3, 0FAh + db 26h, 88h, 29h, 59h, 43h, 0FEh, 0C9h, 75h, 0B1h, 0FEh + db 0CDh, 75h, 0ABh, 1Eh, 0B8h +word_35F dw 1234h ; DATA XREF: seg000:0293w + db 8Eh, 0D8h, 0B8h +word_364 dw 1234h ; DATA XREF: seg000:02BCw + db 6, 50h, 6, 33h, 0C0h, 50h, 0B8h +word_36D dw 1234h ; DATA XREF: seg000:028Fw + db 50h, 0Eh, 0E8h, 4Eh, 20h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 1Fh, 1Bh, 0Eh, 0E8h, 2 dup(1Bh) + db 8Bh, 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h + db 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 5, 1Bh, 0Eh + db 0E8h, 1, 1Bh, 0B8h, 2 dup(0), 0F8h, 5Eh, 5Fh, 1Fh, 5Dh + db 0CAh, 8, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_CB2+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_CB2+31p sub_24E2+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, 51Ch + 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_24E2+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_1EC0 + 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_F02+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_1EAA + +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_18DA+Cp + +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_22B2 + 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:loc_52Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_E3F0 + mov cx, word_E3F6 + 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_E3F2, ax + mov word_E3F4, 1 + mov al, byte ptr off_E3F8 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_E3F2, 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_24E2+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, 141Eh + 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: seg000:0620p sub_1952+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 + +locret_52A: ; DATA XREF: sub_CB68:loc_CCCBr + ; sub_CB68:loc_CC9Br + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + ; DATA XREF: sub_CB68:loc_CCDBr + push es + +loc_52E: ; DATA XREF: sub_CB68:loc_CC82r + push cs + +loc_52F: ; DATA XREF: sub_CB68:loc_CC3Fr + ; sub_CB68:loc_CCEBr ... + call near ptr sub_48A + +loc_532: ; DATA XREF: sub_CB68:loc_CBFAr + pop bp + +locret_533: ; DATA XREF: sub_CB68:loc_CBB5r + retf 2 +sub_506 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_536 proc far ; CODE XREF: sub_978D+46P + ; sub_9A2C+103P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_E968, 0 + nop + push cs + call near ptr sub_2064 + +loc_549: ; CODE XREF: sub_536+31j + nop + push cs + +loc_54B: ; DATA XREF: sub_E24+1Fr + call loc_17D0 + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: sub_536+25j + nop + push cs + call near ptr sub_2064 + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: sub_536+1Dj + add word_E968, 6 + cmp word_E968, 64h ; 'd' + jl short loc_549 + mov word_E968, 64h ; 'd' + nop + push cs + call loc_17D0 + 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_978D+F2P + ; sub_9F8D+142P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_E968, 64h ; 'd' + nop + push cs + call near ptr sub_2064 + +loc_58D: ; CODE XREF: sub_57A+2Cj + nop + push cs + call loc_17D0 + mov di, si + cmp di, 0 + jle short loc_5A1 + +loc_599: ; CODE XREF: sub_57A+25j + nop + push cs + call near ptr sub_2064 + dec di + jnz short loc_599 + +loc_5A1: ; CODE XREF: sub_57A+1Dj + sub word_E968, 6 + jg short loc_58D + mov word_E968, 0 + nop + push cs + call loc_17D0 + 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 + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov word_EC46, 6 + mov ax, word_E9A0 + add ax, 9 + push ax + push cs + call near ptr sub_21AE + jb short loc_5F4 + mov es, ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_AAE + jb short loc_5FB + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_E9A0 + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5F4: ; CODE XREF: sub_5B8+14j + mov byte_E9A2, 3 + jmp short loc_605 +; --------------------------------------------------------------------------- + +loc_5FB: ; CODE XREF: sub_5B8+22j + push es + push cs + call near ptr sub_22B2 + mov byte_E9A2, 1 + +loc_605: ; CODE XREF: sub_5B8+41j + xor ax, ax + pop bp + retf 4 +sub_5B8 endp + +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ah] + mov si, [bp+8] + cmp si, 0 + jle short loc_631 + +loc_61C: ; CODE XREF: seg000:062Fj + push word ptr [bp+6] + push cs + call near ptr sub_506 + inc ah + jz short loc_631 + mov es, word ptr [bp+0Ch] + mov es:[di], al + inc di + dec si + jnz short loc_61C + +loc_631: ; CODE XREF: seg000:061Aj seg000:0625j + mov ax, di + sub ax, [bp+0Ah] + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+0Ah] + mov ax, es:2 + mov dx, [bp+6] + mov cx, [bp+8] + 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: seg000:064Ej seg000:0652j + 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 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_67E proc far ; CODE XREF: seg000:1A06p + +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 ======================================= + +; Attributes: bp-based frame + +sub_6AE proc far ; CODE XREF: sub_786+1Ap sub_856+1Dp + +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_6AE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6C6 proc far ; CODE XREF: sub_9E4+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_6F6 + 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_6F6: ; CODE XREF: sub_6C6+Fj + neg ax + sbb dx, dx + retf 2 +sub_6C6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6FE proc far ; CODE XREF: sub_17CA+2p + mov ax, 0C00h + int 21h ; DOS - CLEAR KEYBOARD BUFFER + ; AL must be 01h, 06h, 07h, 08h, or 0Ah. + retf +sub_6FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_704 proc far ; CODE XREF: sub_1F6E+34p sub_1F6E+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] + +loc_710: ; DATA XREF: sub_F02:loc_F47r + mov ah, 35h + +loc_712: ; DATA XREF: sub_1F32+9r + 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_704 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_724 proc far ; CODE XREF: sub_75A+1p sub_A193+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_724 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_73A proc far ; CODE XREF: sub_75A+27p sub_A1C7+64P ... + 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_73A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_75A proc far ; CODE XREF: sub_C990+3CP sub_CEE0+20P ... + push cs + call near ptr sub_724 + 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_73A + retf +sub_75A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_786 proc far ; CODE XREF: sub_AEF0+8CP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_E946 + cmp bx, 0FFFFh + jnz short loc_7D6 + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_6AE + or ax, dx + mov word_E946, ax + mov cx, ax + xor ax, ax + mov word_F804, ax + mov word_F802, ax + mov word_F806, ax + mov word_F808, ax + mov word_F7FE, ax + mov word_F800, ax + inc dx + jz short loc_7D6 + 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_F7FE, ax + mov word_F800, dx + mov ax, 1 + +loc_7D6: ; CODE XREF: sub_786+Dj sub_786+39j + pop bp + retf 4 +sub_786 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_7DA proc far ; CODE XREF: sub_846+1p sub_9A2+1p + mov bx, word_E946 + cmp bx, 0FFFFh + jz short locret_844 + mov ax, word_F802 + cmp word_F804, ax + jnb short loc_818 + push ds + mov cx, word_F802 + lds dx, dword_F7FA + 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_80B + add word_F7FE, ax + adc word_F800, 0 + cmp word_F802, ax + jz short loc_811 + +loc_80B: ; CODE XREF: sub_7DA+20j + mov word_F808, 1 + +loc_811: ; CODE XREF: sub_7DA+2Fj + mov word_F802, 0 + retf +; --------------------------------------------------------------------------- + +loc_818: ; CODE XREF: sub_7DA+10j + cmp word_F804, 0 + jz short locret_844 + mov dx, ax + mov cx, 0 + add dx, word_F7FE + mov word_F804, cx + mov word_F802, cx + adc cx, word_F800 + mov ax, 4200h + mov bx, word_E946 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_F7FE, ax + mov word_F800, dx + +locret_844: ; CODE XREF: sub_7DA+7j sub_7DA+43j + retf +sub_7DA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_846 proc far ; CODE XREF: sub_2856+53p sub_95F3+1AP ... + push cs + call near ptr sub_7DA + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_E946, 0FFFFh + retf +sub_846 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_856 proc far ; CODE XREF: sub_AE8E+16P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_E946 + cmp bx, 0FFFFh + jnz short loc_892 + mov cx, 20h ; ' ' + mov ah, 3Ch ; '<' + push ax + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_6AE + or ax, dx + mov word_E946, ax + xor ax, ax + mov word_F804, ax + mov word_F802, ax + mov word_F806, ax + mov word_F808, ax + mov word_F7FE, ax + mov word_F800, ax + mov ax, dx + inc ax + +loc_892: ; CODE XREF: sub_856+Dj + pop bp + retf 4 +sub_856 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_896 proc far ; CODE XREF: sub_AE8E+8P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_AAE + jb short loc_8AC + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_8AC: ; CODE XREF: sub_896+Fj + sbb ax, ax + inc ax + retf 4 +sub_896 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_8B2 proc far ; CODE XREF: sub_2856+2Cp sub_2856+4Fp ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_E944, 0 + jz short loc_936 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_8C4: ; CODE XREF: sub_8B2+7Fj + mov ax, word_F804 + cmp word_F802, ax + jb short loc_8FA + add word_F7FE, ax + adc word_F800, 0 + push bx + push ds + mov cx, word_E944 + mov bx, word_E946 + lds dx, dword_F7FA + 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_F804, ax + jz short loc_955 + mov word_F802, 0 + +loc_8FA: ; CODE XREF: sub_8B2+19j + mov si, word_F804 + sub si, word_F802 + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_92B + or si, si + jz short loc_92B + push si + push ds + mov cx, si + mov ax, word_F802 + lds si, dword_F7FA + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_92B: ; CODE XREF: sub_8B2+5Cj sub_8B2+60j + add word_F802, si + sub bx, si + jnz short loc_8C4 + jmp short loc_95B +; --------------------------------------------------------------------------- + nop + +loc_936: ; CODE XREF: sub_8B2+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_E946 + 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_F7FE, ax + adc word_F800, 0 + mov bx, cx + sub bx, ax + jz short loc_95B + +loc_955: ; CODE XREF: sub_8B2+40j + mov word_F806, 1 + +loc_95B: ; CODE XREF: sub_8B2+81j sub_8B2+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_8B2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_966 proc far ; CODE XREF: sub_2856+1Bp sub_95F3+9P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_E946 + cmp bx, 0FFFFh + jnz short loc_99D + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_AAE + sbb bx, bx + or ax, bx + mov word_E946, ax + xor ax, ax + mov word_F804, ax + mov word_F7FE, ax + mov word_F800, ax + mov word_F802, ax + mov word_F806, ax + mov word_F808, ax + lea ax, [bx+1] + +loc_99D: ; CODE XREF: sub_966+Cj + pop bp + retf 4 +sub_966 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_9A2 proc far ; CODE XREF: sub_9624+DEP sub_AE8E+3BP ... + push cs + call near ptr sub_7DA + cmp bx, 0FFFFh + jz short locret_9D3 + 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_F806, 0 + mov word_F7FE, ax + mov word_F800, dx + +locret_9D3: ; CODE XREF: sub_9A2+7j + retf 6 +sub_9A2 endp + +; --------------------------------------------------------------------------- + mov ax, word_F802 + xor dx, dx + add ax, word_F7FE + adc dx, word_F800 + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_9E4 proc far ; CODE XREF: sub_A12E:loc_A147P + push word_E946 + push cs + call near ptr sub_6C6 + jb short loc_9EF + retf +; --------------------------------------------------------------------------- + +loc_9EF: ; CODE XREF: sub_9E4+8j + mov ax, dx + retf +sub_9E4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9F2 proc far ; CODE XREF: sub_AEF0+ACP + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_E944, 0 + jz short loc_A68 + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_A04: ; CODE XREF: sub_9F2+6Ej + mov cx, word_E944 + sub cx, word_F802 + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_F7FA + add di, word_F802 + sub bx, cx + add word_F802, 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_A5E + push ds + push bx + mov cx, word_E944 + mov bx, word_E946 + lds dx, dword_F7FA + 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_A7A + cmp word_E944, ax + jnz short loc_A7A + mov word_F802, 0 + add word_F7FE, ax + adc word_F800, 0 + +loc_A5E: ; CODE XREF: sub_9F2+3Fj + or bx, bx + jnz short loc_A04 + mov ax, 1 + jmp short loc_A90 +; --------------------------------------------------------------------------- + nop + +loc_A68: ; CODE XREF: sub_9F2+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_E946 + 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_A82 + +loc_A7A: ; CODE XREF: sub_9F2+55j sub_9F2+5Bj + mov word_F808, 1 + xor ax, ax + +loc_A82: ; CODE XREF: sub_9F2+86j + add word_F7FE, ax + adc word_F800, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_A90: ; CODE XREF: sub_9F2+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_9F2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_A98 proc far ; CODE XREF: sub_24E2+68p sub_24E2+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_AAA + mov ax, 0FFF3h + +locret_AAA: ; CODE XREF: sub_A98+Dj + retf 2 +sub_A98 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_AAE proc far ; CODE XREF: sub_5B8+1Fp sub_896+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_E948 + 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_AC2 + retf 4 +; --------------------------------------------------------------------------- + +loc_AC2: ; CODE XREF: sub_AAE+Fj + mov ax, 0FFFEh + retf 4 +sub_AAE endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_ACE + +loc_AC8: ; CODE XREF: sub_ACE+1Fj sub_ACE+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_ACE + +; =============== S U B R O U T I N E ======================================= + + +sub_ACE proc far ; CODE XREF: sub_9F8D+F8P + +; FUNCTION CHUNK AT 0AC8 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_AE3 + xchg bx, si + +loc_AE3: ; CODE XREF: sub_ACE+11j + mov bp, word_E912 + mov dx, word_E914 + sub si, bp + jl short loc_AC8 + 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_AC8 + add bx, bp + cmp ax, di + jle short loc_B0C + xchg ax, di + +loc_B0C: ; CODE XREF: sub_ACE+3Bj + mov dx, word_E918 + mov bp, word_E91A + sub di, dx + js short loc_AC8 + 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_AC8 + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_E91E + 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+532h] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+534h] + sar si, 4 + js short loc_B8A + lea bp, [si+2Ah] + shl bp, 1 + +loc_B72: ; CODE XREF: sub_ACE+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_B72 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_B8A: ; CODE XREF: sub_ACE+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_B92: ; CODE XREF: sub_ACE+C7j + stosw + sub di, bp + jnb short loc_B92 + pop di + pop si + pop bp + retf 8 +sub_ACE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B9E proc far ; CODE XREF: sub_A64D+49FP + ; sub_BEC7+A7P ... + push di + mov di, sp + mov ax, word_E918 + mov cx, ax + mov bx, ss:[di+0Ah] + sub bx, ax + jg short loc_BB0 + xor bx, bx + +loc_BB0: ; CODE XREF: sub_B9E+Ej + mov ax, bx + shl ax, 2 + add ax, bx + add ax, word_E91E + mov es, ax + mov ax, word_E91A + mov dx, ss:[di+6] + sub dx, cx + cmp dx, ax + jl short loc_BCC + mov dx, ax + +loc_BCC: ; CODE XREF: sub_B9E+2Aj + sub dx, bx + jl short loc_C02 + mov ax, ss:[di+0Ch] + mov bx, ss:[di+8] + sub bx, ax + jl short loc_C02 + inc bx + mov di, dx + shl di, 2 + add di, dx + shl di, 4 + add di, ax + lea dx, [bx+50h] + mov ax, 0FFFFh + test di, 1 + jnz short loc_C14 + shr bx, 1 + jb short loc_C06 + nop + +loc_BFA: ; CODE XREF: sub_B9E+62j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_BFA + +loc_C02: ; CODE XREF: sub_B9E+30j sub_B9E+3Cj + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C06: ; CODE XREF: sub_B9E+59j sub_B9E+6Fj + mov cx, bx + rep stosw + stosb + sub di, dx + jnb short loc_C06 + pop di + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_C14: ; CODE XREF: sub_B9E+55j + shr bx, 1 + jb short loc_C28 + dec bx + nop + +loc_C1A: ; CODE XREF: sub_B9E+84j + mov cx, bx + stosb + rep stosw + stosb + sub di, dx + jnb short loc_C1A + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C28: ; CODE XREF: sub_B9E+78j sub_B9E+91j + mov cx, bx + stosb + rep stosw + sub di, dx + jnb short loc_C28 + pop di + retf 8 +sub_B9E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_C36 proc far ; CODE XREF: sub_9F8D+E7P + ; sub_A64D+48EP ... + 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_C36 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_C60 proc far ; CODE XREF: sub_9F8D+FDP + ; sub_A64D+4A4P ... + xor al, al + out 7Ch, al + retf +sub_C60 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_C66 proc near ; CODE XREF: sub_1700+3Ap sub_1700+43p ... + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + mov al, ah + jmp short $+2 + jmp short $+2 + out 0A0h, al ; PIC 2 same as 0020 for PIC 1 + retn +sub_C66 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_C72 proc far ; CODE XREF: _main:loc_9DADP + xor ax, ax + cmp word_E94A, ax + jnz short locret_C95 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_21C2 + or ax, ax + jz short locret_C95 + mov word_E94A, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_D90 + mov ax, 1 + +locret_C95: ; CODE XREF: sub_C72+6j sub_C72+13j + retf +sub_C72 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_C96 proc far ; CODE XREF: _main+6AP _main+19CP ... + mov ax, word_E94A + test ax, ax + jz short locret_CB1 + push ax + push ax + xor ax, ax + mov word_E94A, ax + push ax + push cs + call near ptr sub_DFE + nop + push cs + call near ptr sub_22B2 + mov ax, 1 + +locret_CB1: ; CODE XREF: sub_C96+5j + retf +sub_C96 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB2 proc far ; CODE XREF: _main+39P + +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_AAE + mov bp, ax + mov ax, 0 + jb short loc_D3F + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_1EC0 + mov si, ax + mov ax, 0 + jb short loc_D37 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_D2D + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_D2D + add di, 8 + push si + mov si, 55Ch + mov cx, 4 + repe cmpsw + pop si + jnz short loc_D2D + 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_D2D + push si + xor ax, ax + push ax + push cs + call near ptr sub_DFE + mov ax, 1 + jmp short loc_D2F +; --------------------------------------------------------------------------- + +loc_D2D: ; CODE XREF: sub_CB2+34j sub_CB2+3Fj ... + xor ax, ax + +loc_D2F: ; CODE XREF: sub_CB2+79j + push ax + push si + nop + push cs + call near ptr sub_1EAA + pop ax + +loc_D37: ; CODE XREF: sub_CB2+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_D3F: ; CODE XREF: sub_CB2+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_CB2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D48 proc near ; CODE XREF: seg000:0D84p sub_D90+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_D54: ; CODE XREF: sub_D48+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_D54 + retn +sub_D48 endp + +; --------------------------------------------------------------------------- + nop + 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_D48 + mov al, 0Ah + out 68h, al + pop di + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D90 proc far ; CODE XREF: sub_C72+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_D9E: ; CODE XREF: sub_D90+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_D48 + inc dl + jnz short loc_D9E + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_D90 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DB4 proc near ; CODE XREF: seg000:0DF1p sub_DFE+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_DC0: ; CODE XREF: sub_DB4+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_DC0 + retn +sub_DB4 endp + +; --------------------------------------------------------------------------- + nop + 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_DB4 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_DFE proc far ; CODE XREF: sub_C96+10p sub_CB2+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_E0D: ; CODE XREF: sub_DFE+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_DB4 + inc dl + jnz short loc_E0D + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_DFE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_E24 proc far ; CODE XREF: sub_CEE0+25P + 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_E954, ax + mov word_E91E, ax + mov word_E956, 3E80h + xor ax, ax + mov word_E912, ax + mov word_E918, 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_E95C, ax + mov ax, 27Fh + mov word_E916, ax + mov word_E914, ax + mov ax, 190h + mov word_E958, ax + dec ax + mov word_E91C, ax + mov word_E91A, ax + mov word_E920, 7CB0h + retf +sub_E24 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E72 proc far ; CODE XREF: sub_978D+AP sub_978D+15P ... + 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_E956 + mov es, word_E954 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_E72 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E96 proc near ; CODE XREF: sub_EAC+25p sub_EAC+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_E96 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_EAC proc far ; CODE XREF: sub_9A2C+21P + ; sub_A64D+3BDP ... + xor dx, dx + mov cx, word_E956 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_1EC0 + xchg ax, dx + jb short locret_EFE + 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_E96 + call sub_E96 + mov bx, 0B000h + call sub_E96 + call sub_E96 + mov bx, 0B800h + call sub_E96 + call sub_E96 + mov bx, 0E000h + call sub_E96 + call sub_E96 + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_1EAA + mov ax, 1 + +locret_EFE: ; CODE XREF: sub_EAC+11j + retf 2 +sub_EAC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_F02 proc far ; CODE XREF: sub_1F6E+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_F55 + 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_F55 + 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_EC30, 1 + jz short loc_F3C + 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_F3C: ; CODE XREF: sub_F02+34j + test cl, 1 + jz short loc_F47 + 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_F47: ; CODE XREF: sub_F02+3Dj + test byte ptr es:loc_710+1, 1 + jz short loc_F53 + 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_F53: ; CODE XREF: sub_F02+4Bj + mov ax, cx + +locret_F55: ; CODE XREF: sub_F02+Aj sub_F02+1Cj + retf 4 +sub_F02 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F58 proc far ; CODE XREF: sub_A64D+323P + ; sub_A64D+33FP + +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_E954 + 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_FB8: ; CODE XREF: sub_F58+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_FB8 + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop di + pop bp + retf 8 +sub_F58 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FEC proc far ; CODE XREF: sub_990C+103P + ; sub_9A2C+2FP ... + +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_100D + push ax + nop + push cs + call near ptr sub_22B2 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_100D: ; CODE XREF: sub_FEC+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_1027 + push ax + nop + push cs + call near ptr sub_22B2 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_1027: ; CODE XREF: sub_FEC+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_1034 + push ax + nop + push cs + call near ptr sub_22B2 + +loc_1034: ; CODE XREF: sub_FEC+40j + pop bp + retf 8 +sub_FEC endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1044 + +loc_1038: ; CODE XREF: sub_1044+11j sub_1044+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_1044 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1044 proc far ; CODE XREF: sub_D4AB+39P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 1038 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_AAE + jb short loc_1038 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_1EC0 + jb short loc_1038 + 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_108E: ; CODE XREF: sub_1044+54j sub_1044+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_108E + inc al + loop loc_108E + mov ax, 0FFF3h + call sub_15EE + cmp dl, 50h ; 'P' + jnz short loc_1038 + call sub_15EE + cmp dl, 69h ; 'i' + jnz short loc_1038 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_10B9: ; CODE XREF: sub_1044+7Cj + inc ax + call sub_15EE + cmp dl, 1Ah + jnz short loc_10B9 + stosw + +loc_10C3: ; CODE XREF: sub_1044+84j + call sub_15EE + or dl, dl + jnz short loc_10C3 + call sub_15EE + mov al, dl + stosb + mov ds:410Ch, al + call sub_15EE + mov ah, dl + call sub_15EE + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_10E8 + jmp loc_1038 +; --------------------------------------------------------------------------- + +loc_10E8: ; CODE XREF: sub_1044+9Fj + call sub_15EE + cmp dl, 4 + jz short loc_10F3 + jmp loc_1038 +; --------------------------------------------------------------------------- + +loc_10F3: ; CODE XREF: sub_1044+AAj + mov al, dl + stosb + call sub_15EE + mov al, dl + call sub_15EE + mov ah, dl + stosw + call sub_15EE + mov al, dl + call sub_15EE + mov ah, dl + stosw + call sub_15EE + mov ah, dl + call sub_15EE + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_EC46, 0Ah + nop + push cs + call near ptr sub_210A + pop ds + stosw + jb short loc_1144 + push es + push di + mov es, ax + xor di, di + +loc_1138: ; CODE XREF: sub_1044+FBj + call sub_15EE + mov al, dl + stosb + dec bx + jnz short loc_1138 + pop di + pop es + nop + +loc_1144: ; CODE XREF: sub_1044+ECj + call sub_15EE + mov ah, dl + call sub_15EE + mov al, dl + stosw + mov ds:4000h, ax + mov bx, ax + call sub_15EE + mov ah, dl + call sub_15EE + 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_EC46, 0Ah + nop + push cs + call near ptr sub_210A + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_1192 + jmp loc_1038 +; --------------------------------------------------------------------------- + +loc_1192: ; CODE XREF: sub_1044+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_11C4 + mov bl, 30h ; '0' + nop + +loc_11BA: ; CODE XREF: sub_1044+17Ej + call sub_15EE + mov al, dl + stosb + dec bl + jnz short loc_11BA + +loc_11C4: ; CODE XREF: sub_1044+171j + xor bl, bl + call sub_1500 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1500 + or al, dl + les di, ds:4004h + mov cx, ds:4000h + rep stosb + mov cl, 0FFh + nop + +loc_11E2: ; CODE XREF: sub_1044+490j + ; sub_1044+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_120E + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1202 + call sub_161A + +loc_1202: ; CODE XREF: sub_1044+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_120E: ; CODE XREF: sub_1044+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_125C + push cx + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_124E + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1244 + call sub_161A + +loc_1244: ; CODE XREF: sub_1044+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_124E: ; CODE XREF: sub_1044+1F1j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + adc bl, 0 + pop cx + +loc_125C: ; CODE XREF: sub_1044+1E2j + cmp bl, cl + jnz short loc_12D0 + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_1276 + 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_1276: ; CODE XREF: sub_1044+223j + and bl, 0Fh + nop + +loc_127A: ; CODE XREF: sub_1044+284j + call sub_1500 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1500 + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_1298 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1298: ; CODE XREF: sub_1044+24Aj + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_12BE + mov si, ds:4110h + cmp si, 4000h + jnz short loc_12B4 + call sub_161A + nop + +loc_12B4: ; CODE XREF: sub_1044+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_12BE: ; CODE XREF: sub_1044+260j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + jb short loc_127A + mov cl, 0FFh + jmp loc_14CE +; --------------------------------------------------------------------------- + nop + +loc_12D0: ; CODE XREF: sub_1044+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, ds:4112h + mov cl, ds:4113h + nop + +loc_12E0: ; CODE XREF: sub_1044+2BCj + inc bh + dec cl + jns short loc_12FE + mov si, ds:4110h + cmp si, 4000h + jnz short loc_12F4 + call sub_161A + nop + +loc_12F4: ; CODE XREF: sub_1044+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_12FE: ; CODE XREF: sub_1044+2A0j + shl dl, 1 + jb short loc_12E0 + mov ds:4112h, dl + mov ds:4113h, cl + mov dh, 0 + dec bh + jnz short loc_1313 + jmp loc_13AA +; --------------------------------------------------------------------------- + +loc_1313: ; CODE XREF: sub_1044+2CAj + cmp bh, 8 + jl short loc_1358 + mov cx, bp + +loc_131A: ; CODE XREF: sub_1044+30Fj + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1328 + call sub_161A + +loc_1328: ; CODE XREF: sub_1044+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_131A + mov bp, cx + nop + +loc_1358: ; CODE XREF: sub_1044+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_1384 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1378 + call sub_161A + +loc_1378: ; CODE XREF: sub_1044+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1384: ; CODE XREF: sub_1044+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_13AA: ; CODE XREF: sub_1044+2CCj + mov cx, ax + test bl, bl + jnz short loc_13B3 + jmp loc_1450 +; --------------------------------------------------------------------------- + +loc_13B3: ; CODE XREF: sub_1044+36Aj + mov bh, 0 + mov ax, ds:4000h + cmp bl, 1 + jz short loc_13D2 + cmp bl, 2 + jnz short loc_13C8 + shl ax, 1 + adc bh, bh + jmp short loc_13D2 +; --------------------------------------------------------------------------- + +loc_13C8: ; CODE XREF: sub_1044+37Cj + dec ax + cmp bl, 3 + jz short loc_13D2 + add ax, 2 + nop + +loc_13D2: ; CODE XREF: sub_1044+377j + ; sub_1044+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_13E6 + sub dx, 1000h + nop + +loc_13E6: ; CODE XREF: sub_1044+39Bj + mov ds, dx + or bh, bh + jnz short loc_1428 + mov ax, cx + +loc_13EE: ; CODE XREF: sub_1044+3DEj + mov cx, si + cmp si, di + ja short loc_13F6 + mov cx, di + +loc_13F6: ; CODE XREF: sub_1044+3AEj + neg cx + test ax, ax + jz short loc_1404 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1404: ; CODE XREF: sub_1044+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1414 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1414: ; CODE XREF: sub_1044+3C6j + or si, si + jnz short loc_1420 + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1420: ; CODE XREF: sub_1044+3D2j + test ax, ax + jnz short loc_13EE + pop ds + assume ds:dseg + jmp loc_14CC +; --------------------------------------------------------------------------- + +loc_1428: ; CODE XREF: sub_1044+3A6j + ; sub_1044:loc_144Aj + lodsb + mov ah, al + or si, si + jnz short loc_1438 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_1438: ; CODE XREF: sub_1044+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_144A + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_144A: ; CODE XREF: sub_1044+3FCj + loop loc_1428 + pop ds + assume ds:dseg + jmp short loc_14CC +; --------------------------------------------------------------------------- + nop + +loc_1450: ; CODE XREF: sub_1044+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1466 + 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_1466: ; CODE XREF: sub_1044+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1488 + nop + +loc_1470: ; CODE XREF: sub_1044:loc_147Ej + ; sub_1044+43Fj + stosb + or di, di + jnz short loc_147E + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_147E: ; CODE XREF: sub_1044+42Fj + loop loc_1470 + sub bp, 1 + jnb short loc_1470 + jmp short loc_14CC +; --------------------------------------------------------------------------- + nop + +loc_1488: ; CODE XREF: sub_1044+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_14A0 + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_14A0: ; CODE XREF: sub_1044+44Dj + ; sub_1044:loc_14C4j ... + mov al, dl + stosb + or di, di + jnz short loc_14AE + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_14AE: ; CODE XREF: sub_1044+461j + loop loc_14B6 + sub bp, 1 + jb short loc_14CC + nop + +loc_14B6: ; CODE XREF: sub_1044:loc_14AEj + mov al, bh + stosb + or di, di + jnz short loc_14C4 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_14C4: ; CODE XREF: sub_1044+477j + loop loc_14A0 + sub bp, 1 + jnb short loc_14A0 + nop + +loc_14CC: ; CODE XREF: sub_1044+3E1j + ; sub_1044+409j ... + mov cl, bl + +loc_14CE: ; CODE XREF: sub_1044+288j + cmp ds:4008h, di + jbe short loc_14D7 + jmp loc_11E2 +; --------------------------------------------------------------------------- + +loc_14D7: ; CODE XREF: sub_1044+48Ej + mov ax, es + cmp ds:400Ah, ax + jbe short loc_14E2 + jmp loc_11E2 +; --------------------------------------------------------------------------- + +loc_14E2: ; CODE XREF: sub_1044+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_1EAA + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_1044 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1500 proc near ; CODE XREF: sub_1044+182p + ; sub_1044+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, ds:4112h + mov cl, ds:4113h + dec cl + jns short loc_1528 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_151E + call sub_161A + +loc_151E: ; CODE XREF: sub_1500+19j + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1528: ; CODE XREF: sub_1500+Fj + shl dl, 1 + jb short loc_1576 + add al, 2 + dec cl + jns short loc_154A + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1540 + call sub_161A + nop + +loc_1540: ; CODE XREF: sub_1500+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_154A: ; CODE XREF: sub_1500+30j + shl dl, 1 + jnb short loc_1576 + add al, 2 + inc ah + dec cl + jns short loc_156E + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1564 + call sub_161A + nop + +loc_1564: ; CODE XREF: sub_1500+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_156E: ; CODE XREF: sub_1500+54j + shl dl, 1 + jnb short loc_1576 + add al, 4 + inc ah + +loc_1576: ; CODE XREF: sub_1500+2Aj sub_1500+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_15AC + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_15A0 + call sub_161A + +loc_15A0: ; CODE XREF: sub_1500+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_15AC: ; CODE XREF: sub_1500+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_15E0 + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_15E0: ; CODE XREF: sub_1500+D9j sub_1500+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_15E0 + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1500 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_15EE proc near ; CODE XREF: sub_1044+5Dp sub_1044+65p ... + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_15FC + call sub_161A + +loc_15FC: ; CODE XREF: sub_15EE+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_15EE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_161A proc near ; CODE XREF: sub_1044+1BBp + ; sub_1044+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_161A endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1632 + +loc_162C: ; CODE XREF: sub_1632+10j sub_1632+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1632 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1632 proc far ; CODE XREF: sub_CD2F+37P sub_CDB7+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 162C SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_E918 + cmp ax, word_E91A + ja short loc_162C + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_162C + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1662 + add cx, di + jle short loc_162C + shl di, 2 + add si, di + xor di, di + +loc_1662: ; CODE XREF: sub_1632+23j + cmp di, 50h ; 'P' + jge short loc_162C + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1671 + mov cx, 50h ; 'P' + +loc_1671: ; CODE XREF: sub_1632+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_E91E + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1684: ; CODE XREF: sub_1632+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1AAAh] + mov dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + 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_1684 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1632 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1700 proc far ; CODE XREF: sub_A64D:loc_A91DP + ; sub_A64D+2F0P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov bx, [bp+arg_0] + mov dx, word_E958 + sub bx, dx + sbb ax, ax + and bx, ax + add bx, dx + sub dx, bx + mov bp, bx + mov cx, word_E95C + shl bx, cl + shl dx, cl + mov cl, 4 + +loc_1720: ; CODE XREF: sub_1700+26j + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, cl + jz short loc_1720 + mov al, 70h ; 'p' + out 0A2h, al ; Interrupt Controller #2, 8259A + mov ax, bp + shl ax, 1 + shl ax, 1 + add ax, bp + shl ax, 1 + shl ax, 1 + shl ax, 1 + call sub_C66 + mov ax, dx + shl ax, cl + or ah, ch + call sub_C66 + xor ax, ax + call sub_C66 + mov ax, bx + shl ax, cl + or ah, ch + call sub_C66 + pop bp + retf 2 +sub_1700 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1758 proc far ; CODE XREF: sub_978D+2BP _main+183P ... + mov ah, 40h ; '@' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + retf +sub_1758 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_175E proc far ; CODE XREF: seg002:016BP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov cx, [bp+arg_2] + mov bp, [bp+arg_0] + mov ax, cx + or ax, bp + jz short loc_17C5 + mov ax, cx + cwd + xor ax, dx + sub ax, dx + mov bx, ax + mov ax, bp + cwd + xor ax, dx + sub ax, dx + mov dx, ax + cmp dx, bx + jz short loc_179A + jl short loc_179E + mov ax, bx + mov bx, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 41Ch + xlat + jmp short loc_17B2 +; --------------------------------------------------------------------------- + nop + +loc_179A: ; CODE XREF: sub_175E+23j + mov al, 20h ; ' ' + jmp short loc_17B2 +; --------------------------------------------------------------------------- + +loc_179E: ; CODE XREF: sub_175E+25j + mov ax, dx + xor dh, dh + mov dl, ah + mov ah, al + mov al, dh + div bx + mov bx, 41Ch + xlat + neg al + add al, 40h ; '@' + +loc_17B2: ; CODE XREF: sub_175E+39j sub_175E+3Ej + xor ah, ah + or bp, bp + jge short loc_17BD + neg ax + add ax, 80h ; '€' + +loc_17BD: ; CODE XREF: sub_175E+58j + or cx, cx + jge short loc_17C3 + neg al + +loc_17C3: ; CODE XREF: sub_175E+61j + xor ah, ah + +loc_17C5: ; CODE XREF: sub_175E+Dj + pop bp + retf 4 +sub_175E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_17CA proc far ; CODE XREF: sub_C990+37P sub_D16F+1CP + nop + push cs + call near ptr sub_6FE + retf +sub_17CA endp + +; --------------------------------------------------------------------------- + +loc_17D0: ; CODE XREF: sub_536:loc_54Bp + ; sub_536+3Bp ... + cld + push si + mov ax, word_E968 + 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_17F6 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_17F6: ; CODE XREF: seg000:17EDj + mov si, 141Eh + mov dl, 64h ; 'd' + cmp word_E99A, bx + jnz short loc_183A + +loc_1801: ; CODE XREF: seg000:1835j + 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_1801 + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_183A: ; CODE XREF: seg000:17FFj + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_184F + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_184F: ; CODE XREF: seg000:1846j + shr al, 1 + cmc + sbb al, al + mov cs:byte_18B8, al + mov dx, bx + push di + mov di, 0 + +loc_185E: ; CODE XREF: seg000:18D5j + 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_1893 + mov bh, al + +loc_1893: ; CODE XREF: seg000:188Fj + cmp bh, bl + ja short loc_1899 + mov bh, bl + +loc_1899: ; CODE XREF: seg000:1895j + 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_18B8 db 0 ; DATA XREF: seg000:1854w +; --------------------------------------------------------------------------- + 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_185E + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_18DA proc far ; CODE XREF: sub_2912+2Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + push word ptr es:0 + push cs + call near ptr sub_472 + push [bp+arg_0] + push cs + call near ptr sub_22B2 + pop bp + retf 2 +sub_18DA 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_1922 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1922: ; CODE XREF: seg000:190Aj + call word ptr es:4 + test ah, ah + jnz short locret_1951 + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1951 + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1950 + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1950: ; CODE XREF: seg000:193Ej + pop ax + +locret_1951: ; CODE XREF: seg000:1929j seg000:1934j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1952 proc near ; CODE XREF: seg000:1996p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_196F + ja short loc_196B + cmp ax, es:6 + jb short loc_196F + +loc_196B: ; CODE XREF: sub_1952+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_196F: ; CODE XREF: sub_1952+Ej sub_1952+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_1952 endp + +; --------------------------------------------------------------------------- + call sub_1952 + or ah, ah + jnz short locret_19A2 + xor al, es:1Eh + +locret_19A2: ; CODE XREF: seg000:199Bj + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+8] + mov di, [bp+0Ah] + test si, si + jz short loc_19C7 + +loc_19B4: ; CODE XREF: seg000:19C5j + mov es, word ptr [bp+6] + call word ptr es:2 + inc ah + jz short loc_19C7 + mov es, word ptr [bp+0Ch] + stosb + dec si + jnz short loc_19B4 + +loc_19C7: ; CODE XREF: seg000:19B2j seg000:19BEj + mov ax, di + sub ax, [bp+0Ah] + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + 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 +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push di + mov es, word ptr [bp+0Ah] + inc word ptr [bp+8] + mov di, [bp+6] + or di, di + jz short loc_1A2B + +loc_1A1F: ; CODE XREF: seg000:1A29j seg000:1A2Ej + call word ptr es:2 + test ah, ah + jnz short loc_1A30 + dec di + jnz short loc_1A1F + +loc_1A2B: ; CODE XREF: seg000:1A1Dj + dec word ptr [bp+8] + jnz short loc_1A1F + +loc_1A30: ; CODE XREF: seg000:1A26j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A3E proc far ; CODE XREF: sub_AEF0+BP sub_AEF0+13P ... + mov ax, 4E35h + mul word ptr dword_E9A6+2 + mov cx, ax + mov ax, 15Ah + mul word ptr dword_E9A6 + add cx, ax + mov ax, 4E35h + mul word ptr dword_E9A6 + add ax, 1 + adc dx, cx + mov word ptr dword_E9A6, ax + mov ax, dx + mov word ptr dword_E9A6+2, ax + and ah, 7Fh + retf +sub_1A3E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A68 proc far ; CODE XREF: sub_9624+8P sub_978D+A8P ... + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_AAE + jb short locret_1AA7 + mov bx, ax + mov dx, 141Eh + 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_1A8B: ; CODE XREF: sub_1A68+2Fj + mov al, [bx+141Eh] + shl al, 4 + or [bx+141Eh], al + dec bx + jns short loc_1A8B + pop bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov ax, 0 + jcxz short locret_1AA7 + mov ax, 0FFF3h + stc + +locret_1AA7: ; CODE XREF: sub_1A68+Fj sub_1A68+39j + retf 4 +sub_1A68 endp + +; --------------------------------------------------------------------------- + db 4 dup(0), 1, 4 dup(0), 1, 2 dup(0), 2 dup(1), 4 dup(0) + db 1, 0, 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 + db 0, 2, 0, 3, 1, 2, 0, 3, 0, 3, 0, 3, 1, 3, 0, 3, 0, 2 + db 1, 3, 1, 2, 1, 3, 0, 3, 1, 3, 1, 3, 1, 3, 2 dup(2) + db 0, 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_1EAA proc far ; CODE XREF: sub_412+57p sub_CB2+81p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_F84E, bx + pop bx + retf 2 +sub_1EAA endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_1EC0 + +loc_1EBA: ; CODE XREF: sub_1EC0+5j + push cs + call near ptr sub_2186 + jb short loc_1EEF +; END OF FUNCTION CHUNK FOR sub_1EC0 + +; =============== S U B R O U T I N E ======================================= + + +sub_1EC0 proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 1EBA SIZE 00000006 BYTES + + cmp word_EC42, 0 + jz short loc_1EBA + 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_F84E + add bx, ax + jb short loc_1EEE + cmp word_F84A, bx + jb short loc_1EEE + mov word_F84E, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_1EEE: ; CODE XREF: sub_1EC0+1Ej sub_1EC0+24j + pop bx + +loc_1EEF: ; CODE XREF: sub_1EC0-2j + mov ax, 0FFF8h + retf 2 +sub_1EC0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1EF6 proc near ; CODE XREF: sub_2AAE+1Ep sub_2AD8+2p + mov dx, 188h + +loc_1EF9: ; CODE XREF: sub_1EF6+6j + in al, dx + test al, 80h + jnz short loc_1EF9 + mov al, bh + out dx, al + +loc_1F01: ; CODE XREF: sub_1EF6+Ej + in al, dx + test al, 80h + jnz short loc_1F01 + inc dx + inc dx + mov al, bl + out dx, al + retn +sub_1EF6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1F0C proc near ; CODE XREF: sub_2AAE+15p + mov dx, 188h + +loc_1F0F: ; CODE XREF: sub_1F0C+6j + in al, dx + test al, 80h + jnz short loc_1F0F + mov al, bh + out dx, al + +loc_1F17: ; CODE XREF: sub_1F0C+Ej + in al, dx + test al, 80h + jnz short loc_1F17 + inc dx + inc dx + in al, dx + retn +sub_1F0C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1F20 proc far ; CODE XREF: _main+65P _main:loc_9F69P ... + 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_1F20 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1F32 proc far ; CODE XREF: sub_9A2C+251P + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + mov bx, bp + mov bp, sp + push di + xor ax, ax + mov es, ax + assume es:seg000 + mov al, byte ptr es:loc_712 + inc ax + mov dx, ax + shl dx, 1 + shl dx, 1 + add dx, ax + mov cl, 4 + shl dx, cl + mov cx, dx + mov es, word_EC2C + assume es:nothing + xor di, di + mov ax, [bp+arg_2] + rep stosw + mov cx, dx + mov di, 2000h + mov ax, [bp+arg_0] + rep stosw + pop di + mov bp, bx + retf 4 +sub_1F32 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_1F6A dd 0 ; DATA XREF: sub_1F6E+5Ew seg000:1FD9r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_1F6E proc far ; CODE XREF: sub_CEE0+1BP + xor ax, ax + push ax + push ax + push cs + call near ptr sub_F02 + and ax, 0Ch + cmp ax, 0Ch + mov word_EC36, 33FFh + jz short loc_1F8A + mov word_EC36, 0 + +loc_1F8A: ; CODE XREF: sub_1F6E+14j + xor ax, ax + mov word_F83E, ax + mov word_F840, ax + cmp byte_EC38, al + jnz short locret_1FD7 + mov al, 0Ah + push ax + push cs + mov ax, 1FE2h + push ax + nop + push cs + call near ptr sub_704 + mov word_F842, ax + mov word_F844, 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_EC38, ah + mov ax, 18h + push ax + push cs + mov ax, 1FD8h + push ax + nop + push cs + call near ptr sub_704 + mov word ptr cs:dword_1F6A, ax + mov word ptr cs:dword_1F6A+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_1FD7: ; CODE XREF: sub_1F6E+28j + retf +sub_1F6E endp + +; --------------------------------------------------------------------------- + pushf + call cs:dword_1F6A + out 64h, al ; AT Keyboard controller 8042. + iret +; --------------------------------------------------------------------------- + nop + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_EC36 + add word_F846, ax + jb short loc_2013 + inc word_F83E + inc word_F840 + cmp word_EC34, 0 + jz short loc_2013 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_EC32 + pop es + assume es:nothing + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_2013: ; CODE XREF: seg000:1FF0j seg000:1FFFj + 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_201C proc far ; CODE XREF: sub_C990+28P sub_D16F+12P + cmp byte_EC38, 0 + jz short locret_2062 + mov ax, 18h + push ax + push word ptr cs:dword_1F6A+2 + push word ptr cs:dword_1F6A + nop + push cs + call near ptr sub_704 + 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_F844 + push word_F842 + nop + push cs + call near ptr sub_704 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_EC38 + 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_EC38, al + +locret_2062: ; CODE XREF: sub_201C+5j + retf +sub_201C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2064 proc far ; CODE XREF: sub_536+10p sub_536+21p ... + cmp byte_EC38, 0 + jnz short loc_2080 + +loc_206B: ; CODE XREF: sub_2064+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_206B + +loc_2075: ; CODE XREF: sub_2064+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2075 + retf +; --------------------------------------------------------------------------- + +loc_2080: ; CODE XREF: sub_2064+5j + mov ax, word_F83E + +loc_2083: ; CODE XREF: sub_2064+23j + cmp ax, word_F83E + jz short loc_2083 + retf +sub_2064 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_208A proc far ; CODE XREF: sub_978D+C2P + ; sub_9A2C+246P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_E968, 0C8h ; 'È' + push cs + call near ptr sub_2064 + +loc_209C: ; CODE XREF: sub_208A+2Ej + push cs + call loc_17D0 + mov di, si + cmp di, 0 + jle short loc_20AE + +loc_20A7: ; CODE XREF: sub_208A+22j + push cs + call near ptr sub_2064 + dec di + jnz short loc_20A7 + +loc_20AE: ; CODE XREF: sub_208A+1Bj + sub word_E968, 6 + cmp word_E968, 64h ; 'd' + jg short loc_209C + mov word_E968, 64h ; 'd' + push cs + call loc_17D0 + pop di + pop si + retf 2 +sub_208A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_20CA proc far ; CODE XREF: sub_9A2C+234P + ; sub_A64D+137P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_E968, 64h ; 'd' + push cs + call near ptr sub_2064 + +loc_20DC: ; CODE XREF: sub_20CA+2Fj + push cs + call loc_17D0 + mov di, si + cmp di, 0 + jle short loc_20EE + +loc_20E7: ; CODE XREF: sub_20CA+22j + push cs + call near ptr sub_2064 + dec di + jnz short loc_20E7 + +loc_20EE: ; CODE XREF: sub_20CA+1Bj + add word_E968, 6 + cmp word_E968, 0C8h ; 'È' + jl short loc_20DC + mov word_E968, 0C8h ; 'È' + push cs + call loc_17D0 + pop di + pop si + retf 2 +sub_20CA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_210A proc far ; CODE XREF: sub_1044+E7p + ; sub_1044+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_2136 + rcr bx, 1 + push bx + push cs + call near ptr sub_21C2 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_2136: ; CODE XREF: sub_210A+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_210A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_213E proc far ; CODE XREF: sub_CEE0+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_2159 + push ax + push bx + push cs + call near ptr sub_2160 + xor ax, ax + mov word_EC44, 1 + +loc_2159: ; CODE XREF: sub_213E+Bj + neg ax + pop bx + retf 2 +sub_213E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2160 proc far ; CODE XREF: sub_213E+10p sub_2186+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_EC42, ax + mov word_F84E, ax + add ax, [bp+arg_0] + mov word_F848, ax + mov word_F84A, ax + mov word_F84C, 0 + mov word_EC44, 0 + clc + pop bp + retf 4 +sub_2160 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2186 proc far ; CODE XREF: sub_1EC0-5p sub_21C2+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_EC48 + cmp bx, ax + jbe short loc_2197 + sub bx, ax + +loc_2197: ; CODE XREF: sub_2186+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_21AB + push ax + push ax + push bx + push cs + call near ptr sub_2160 + mov word_EC44, 1 + pop ax + +loc_21AB: ; CODE XREF: sub_2186+15j + pop bx + retf +sub_2186 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_21AE proc far ; CODE XREF: sub_5B8+11p sub_23C2+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_21C9 +sub_21AE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_21C2 proc far ; CODE XREF: sub_C72+Ep sub_210A+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_21C9: ; CODE XREF: sub_21AE+12j + cmp word_EC42, 0 + jnz short loc_21D4 + push cs + call near ptr sub_2186 + +loc_21D4: ; CODE XREF: sub_21C2+Cj + push cx + push es + test bx, bx + jz short loc_2235 + mov ax, word_F848 + sub ax, word_F84E + cmp bx, ax + jnb short loc_2235 + inc bx + mov ax, word_F84C + test ax, ax + jz short loc_2211 + mov cx, word_F848 + +loc_21F1: ; CODE XREF: sub_21C2+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_220D + mov cx, es + add cx, bx + jb short loc_2209 + cmp cx, ax + jbe short loc_2242 + +loc_2209: ; CODE XREF: sub_21C2+41j + mov cx, word_F848 + +loc_220D: ; CODE XREF: sub_21C2+3Bj + cmp ax, cx + jnz short loc_21F1 + +loc_2211: ; CODE XREF: sub_21C2+29j + mov ax, word_F84A + mov cx, ax + sub ax, bx + jb short loc_2235 + cmp ax, word_F84E + jb short loc_2235 + mov word_F84A, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_229B +; --------------------------------------------------------------------------- + +loc_2235: ; CODE XREF: sub_21C2+16j sub_21C2+21j ... + mov ax, 0 + mov word_EC46, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2242: ; CODE XREF: sub_21C2+45j + sub ax, cx + cmp ax, 1 + jbe short loc_2272 + 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_F84C + jnz short loc_229B + mov word_F84C, cx + jmp short loc_229B +; --------------------------------------------------------------------------- + +loc_2272: ; CODE XREF: sub_21C2+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_F84C + jnz short loc_229B + mov ax, word_F848 + mov cx, bx + push bx + +loc_2287: ; CODE XREF: sub_21C2+D0j + les cx, es:0 + jcxz short loc_2296 + mov bx, es + cmp bx, ax + jb short loc_2287 + xor bx, bx + +loc_2296: ; CODE XREF: sub_21C2+CAj + mov word_F84C, bx + pop bx + +loc_229B: ; CODE XREF: sub_21C2+71j sub_21C2+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_EC46 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_22AC: ; CODE XREF: sub_22B2+12j sub_22B2+1Aj + pop es + pop cx + pop bx + retf 2 +sub_21C2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22B2 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_F84A + jz short loc_2316 + jb short loc_22AC + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_22AC + mov es:[bx], bx + mov cx, word_F84C + mov ax, es + mov word_F84C, ax + jcxz short loc_2353 + cmp ax, cx + jb short loc_22E5 + mov ax, cx + mov word_F84C, ax + +loc_22E5: ; CODE XREF: sub_22B2+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_F848 + jnz short loc_22F3 + mov ax, es + +loc_22F3: ; CODE XREF: sub_22B2+3Dj + push ds + +loc_22F4: ; CODE XREF: sub_22B2+4Dj sub_22B2+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_2313 + cmp [bx], bx + jnz short loc_22F4 + +loc_2301: ; CODE XREF: sub_22B2+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_22F4 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_2301 + +loc_2313: ; CODE XREF: sub_22B2+49j + pop ds + jmp short loc_2353 +; --------------------------------------------------------------------------- + +loc_2316: ; CODE XREF: sub_22B2+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_F84A, ax + cmp ax, word_F848 + jz short loc_2353 + mov es, ax + cmp es:[bx], bx + jnz short loc_2353 + mov ax, es:[bx+2] + mov word_F84A, ax + mov cx, word_F848 + cmp ax, cx + jz short loc_234F + jmp short loc_2346 +; --------------------------------------------------------------------------- + nop + +loc_233E: ; CODE XREF: sub_22B2+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_234F + +loc_2346: ; CODE XREF: sub_22B2+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_233E + mov bx, es + +loc_234F: ; CODE XREF: sub_22B2+87j sub_22B2+92j + mov word_F84C, bx + +loc_2353: ; CODE XREF: sub_22B2+28j sub_22B2+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_22B2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_235A proc far ; CODE XREF: sub_C990+2DP sub_D16F+17P + cmp word_EC42, 0 + jz short loc_2375 + mov ax, word_EC42 + mov es, ax + xor ax, ax + cmp word_EC44, ax + mov word_EC42, ax + jz short loc_2375 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2375: ; CODE XREF: sub_235A+5j sub_235A+15j + mov ax, 1 + retf +sub_235A endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_237E proc far ; CODE XREF: sub_B7D2+BCP + cmp word_EC6A, 0 + jz short locret_23AD + push word_EC6A + push cs + call near ptr sub_22B2 + mov word_EC6A, 0 + jmp short loc_239B +; --------------------------------------------------------------------------- + +loc_2395: ; CODE XREF: sub_237E+22j + dec ax + push ax + push cs + call near ptr sub_256C + +loc_239B: ; CODE XREF: sub_237E+15j + mov ax, word_EC6C + test ax, ax + jnz short loc_2395 + cmp word_EC6E, 0 + jz short locret_23AD + call word_EC6E + +locret_23AD: ; CODE XREF: sub_237E+5j sub_237E+29j + retf +sub_237E endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_23C2 + +loc_23AE: ; CODE XREF: sub_23C2+32j + push ax + push es + push cs + call near ptr sub_22B2 + pop ax + jmp short loc_23BB +; END OF FUNCTION CHUNK FOR sub_23C2 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_23C2 + +loc_23B8: ; CODE XREF: sub_23C2+24j + mov ax, 0FFF8h + +loc_23BB: ; CODE XREF: sub_23C2-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_23C2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_23C2 proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 23AE SIZE 00000009 BYTES +; FUNCTION CHUNK AT 23B8 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_EC6C + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_EC46, 4 + push ax + push cs + call near ptr sub_21AE + jb short loc_23B8 + mov es, ax + push word_EC6C + push dx + push ax + push cs + call near ptr sub_246E + jb short loc_23AE + 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_2418 + rep movsb + jmp short loc_241E +; --------------------------------------------------------------------------- + nop + +loc_2418: ; CODE XREF: sub_23C2+4Fj sub_23C2+5Aj + lodsb + not al + stosb + loop loc_2418 + +loc_241E: ; CODE XREF: sub_23C2+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2426: ; CODE XREF: sub_23C2+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2426 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2436: ; CODE XREF: sub_23C2+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2436 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2446: ; CODE XREF: sub_23C2+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2446 + test dl, dl + jz short loc_2462 + mov ah, 4 + +loc_2454: ; CODE XREF: sub_23C2+9Ej + xor si, si + mov cx, bx + +loc_2458: ; CODE XREF: sub_23C2+9Aj + lodsb + and [di], al + inc di + loop loc_2458 + dec ah + jnz short loc_2454 + +loc_2462: ; CODE XREF: sub_23C2+8Ej + pop ds + mov ax, word_EC6C + dec ax + pop di + pop si + pop bp + retf 8 +sub_23C2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_246E proc far ; CODE XREF: sub_23C2+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_24DD + cmp word_EC6A, 0 + jnz short loc_24AE + mov word_EC46, 4 + push 240h + push cs + call near ptr sub_21C2 + mov word_EC6A, ax + mov ax, 0FFF8h + jb short loc_24DD + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 1860h + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_24AE: ; CODE XREF: sub_246E+17j + mov ax, bx + shl bx, 1 + cmp ax, word_EC6C + jnb short loc_24C9 + cmp word ptr [bx+1860h], 0 + jz short loc_24CD + push word ptr [bx+1460h] + push cs + call near ptr sub_22B2 + jmp short loc_24CD +; --------------------------------------------------------------------------- + +loc_24C9: ; CODE XREF: sub_246E+48j + inc ax + mov word_EC6C, ax + +loc_24CD: ; CODE XREF: sub_246E+4Fj sub_246E+59j + mov ax, [bp+arg_2] + mov [bx+1860h], ax + mov ax, [bp+arg_0] + mov [bx+1460h], ax + xor ax, ax + +loc_24DD: ; CODE XREF: sub_246E+10j sub_246E+2Cj + pop bx + pop bp + retf 6 +sub_246E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_24E2 proc far ; CODE XREF: sub_AFAC+74P sub_AFAC+7DP + +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_AAE + jb short loc_2564 + mov bx, ax + mov cx, 85Ah + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_255C + mov al, byte_EC4F + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_255C + xor si, si + mov ax, word_EC66 + or ax, ax + jz short loc_2528 + 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_2528: ; CODE XREF: sub_24E2+37j + test byte_EC4F, 80h + jz short loc_253C + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_255C + +loc_253C: ; CODE XREF: sub_24E2+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_255C + push bx + push cs + call near ptr sub_A98 + mov ax, word_EC58 + sub ax, word_EC56 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_255C: ; CODE XREF: sub_24E2+22j sub_24E2+2Ej ... + push ax + push bx + push cs + call near ptr sub_A98 + pop ax + stc + +loc_2564: ; CODE XREF: sub_24E2+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_24E2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_256C proc far ; CODE XREF: sub_237E+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_EC6C + jnb short loc_25B4 + mov cx, bx + shl bx, 1 + mov ax, [bx+1860h] + or ax, ax + jz short loc_25B4 + push word ptr [bx+1460h] + push cs + call near ptr sub_22B2 + mov [bx+1460h], dx + mov [bx+1860h], dx + inc cx + cmp cx, word_EC6C + jnz short loc_25AC + +loc_259D: ; CODE XREF: sub_256C+3Dj + dec word_EC6C + jz short loc_25AC + dec bx + dec bx + mov cx, [bx+1460h] + jcxz short loc_259D + nop + +loc_25AC: ; CODE XREF: sub_256C+2Fj sub_256C+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_25B4: ; CODE XREF: sub_256C+Cj sub_256C+18j + stc + mov ax, 0FFE1h + retf 2 +sub_256C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_25BC proc far ; CODE XREF: sub_B187+1AP sub_B2AD+19P ... + +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 dx, [bx+1860h] + mov cx, [bp+arg_4] + mov bp, [bp+arg_2] + mov ax, bp + shl ax, 2 + add bp, ax + shl bp, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add bp, ax + mov si, cx + mov ch, dh + shr ch, 1 + mov al, dl + mov ah, [si+84Ah] + mov cs:word_2769, ax + test bp, 1 + jnz short loc_262C + test dh, 1 + jnz short loc_2616 + mov cs:byte_26C9, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_26C7, al + mov cs:word_276C, 0FF3Eh + jmp short loc_265E +; --------------------------------------------------------------------------- + +loc_2616: ; CODE XREF: sub_25BC+42j + mov cs:byte_26F7, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_26F5, al + mov cs:word_276C, 0FF62h + jmp short loc_265E +; --------------------------------------------------------------------------- + +loc_262C: ; CODE XREF: sub_25BC+3Dj + dec bp + test dh, 1 + jnz short loc_264A + dec ch + mov cs:byte_272E, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_272C, al + mov cs:word_276C, 0FF90h + jmp short loc_265E +; --------------------------------------------------------------------------- + +loc_264A: ; CODE XREF: sub_25BC+74j + mov cs:byte_275F, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_275D, al + mov cs:word_276C, 0FFC6h + +loc_265E: ; CODE XREF: sub_25BC+58j sub_25BC+6Ej ... + mov ds, word ptr [bx+1460h] + xor si, si + mov al, 0C0h ; 'À' + out 7Ch, al + mov ax, si + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + mov ax, 0A800h + mov es, ax + assume es:nothing + call loc_2766 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2766 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2766 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2766 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2766 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_25BC endp + +; --------------------------------------------------------------------------- + db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_26C7 db 50h ; DATA XREF: sub_25BC+4Dw + db 0B5h +byte_26C9 db 11h ; DATA XREF: sub_25BC+44w + db 0FEh, 0CBh, 75h, 0E0h, 0C3h, 90h, 32h, 0D2h, 0Ah, 0EDh + db 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh, 4Fh, 8Ah + db 0D5h, 83h, 0C7h +byte_26F5 db 50h ; DATA XREF: sub_25BC+63w + db 0B5h +byte_26F7 db 11h ; DATA XREF: sub_25BC:loc_2616w + db 0FEh, 0CBh, 75h, 0D6h, 0C3h, 90h, 0ACh, 32h, 0E4h, 0D3h + db 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh, 0Ah, 0EDh + db 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh, 8Ah, 0D5h + db 83h, 0C7h +byte_272C db 50h ; DATA XREF: sub_25BC+81w + db 0B5h +byte_272E db 11h ; DATA XREF: sub_25BC+78w + db 0FEh, 0CBh, 75h, 0CBh, 0C3h, 0ACh, 32h, 0E4h, 0D3h + db 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh, 0Ah, 0EDh + db 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_275D db 50h ; DATA XREF: sub_25BC+97w + db 0B5h +byte_275F db 11h ; DATA XREF: sub_25BC:loc_264Aw + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2766: ; CODE XREF: sub_25BC+BBp sub_25BC+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2769 dw 1234h ; DATA XREF: sub_25BC+35w + db 0E9h +word_276C dw 0FF3Eh ; DATA XREF: sub_25BC+51w sub_25BC+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_276E proc far ; CODE XREF: _main+16P + push si + push di + mov ah, 52h + int 21h ; DOS - 2+ internal - GET LIST OF LISTS + ; Return: ES:BX -> DOS list of lists + cld + mov bx, es:[bx-2] + +loc_2779: ; CODE XREF: sub_276E+2Fj + mov es, bx + assume es:nothing + inc bx + mov ax, es:1 + or ax, ax + jz short loc_2791 + mov di, 10h + mov cx, 0Ah + mov si, 882h + repe cmpsb + jz short loc_27A2 + +loc_2791: ; CODE XREF: sub_276E+14j + mov ax, es:3 + add bx, ax + mov al, es:0 + cmp al, 4Dh ; 'M' + jz short loc_2779 + mov bx, 0 + +loc_27A2: ; CODE XREF: sub_276E+21j + mov ax, bx + mov word_E99C, ax + pop di + pop si + retf +sub_276E endp + +; --------------------------------------------------------------------------- + db 56h, 57h, 90h, 0Eh, 0E8h, 0BDh, 0FFh, 0Bh, 0C0h, 0B8h + db 2, 0, 75h, 64h, 0B8h, 0, 58h, 0CDh, 21h, 8Bh, 0D0h + db 0B8h, 1, 58h, 0BBh, 1, 0, 0CDh, 21h, 0B4h, 48h, 0BBh + db 4, 0, 0CDh, 21h, 0B9h, 2 dup(0), 72h, 40h, 8Ch, 0CBh + db 3Bh, 0D8h, 73h, 15h, 8Eh, 0C0h, 0B4h, 49h, 0CDh, 21h + db 0B8h, 1, 58h, 0BBh, 2, 0, 0CDh, 21h, 0B4h, 48h, 0BBh + db 4, 0, 0CDh, 21h, 8Bh, 0C8h, 0A3h, 0ACh, 5, 49h, 8Eh + db 0C1h, 0B8h, 2 dup(0FFh), 26h, 0A3h, 1, 0, 41h, 8Eh + db 0C1h, 0FCh, 33h, 0FFh, 0BEh, 82h, 8, 0B9h, 0Ah, 0, 0F3h + db 0A4h, 33h, 0C0h, 3 dup(0ABh), 0B9h, 1, 0, 0B8h, 1, 58h + db 8Bh, 0DAh, 0CDh, 21h, 8Bh, 0C1h, 5Fh, 5Eh, 0CBh, 90h + +; =============== S U B R O U T I N E ======================================= + + +sub_2820 proc far ; CODE XREF: sub_9A2C+26BP + push si + push di + cld + mov ax, word_E99C + or ax, ax + jz short loc_284C + mov es, ax + mov ax, word_E968 + mov es:0Ah, al + mov si, 141Eh + mov di, 10h + mov cx, 10h + +loc_283C: ; CODE XREF: sub_2820+2Aj + lodsw + xchg ah, al + shr ax, 4 + and al, 0Fh + stosw + lodsb + shr al, 4 + stosb + loop loc_283C + +loc_284C: ; CODE XREF: sub_2820+8j + pop di + pop si + retf +sub_2820 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_2850 dd 0 ; DATA XREF: sub_2856+4r sub_2856+71w ... +byte_2854 db 0, 90h ; DATA XREF: seg000:294Ar seg000:2961w + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2856 proc far ; CODE XREF: sub_CEE0+33P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_2850 + or ax, word ptr cs:dword_2850+2 + jz short loc_2868 + jmp loc_28E9 +; --------------------------------------------------------------------------- + +loc_2868: ; CODE XREF: sub_2856+Dj + push di + push si + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + push cs + call near ptr sub_966 + push 10h + push cs + call near ptr sub_21AE + mov di, ax + push ax + push 0 + push 10h + push cs + call near ptr sub_8B2 + mov ax, di + mov es, ax + mov di, es:0 + mov si, es:6 + push ax + push cs + call near ptr sub_22B2 + push di + push cs + call near ptr sub_21AE + mov word_100F6, ax + push ax + push 0 + push di + push cs + call near ptr sub_8B2 + push cs + call near ptr sub_846 + mov cx, di + mov ax, word_100F6 + mov es, ax + mov ax, si + xor bx, bx + +loc_28B7: ; CODE XREF: sub_2856+68j + xor es:[bx], al + sub al, es:[bx] + inc bx + loop loc_28B7 + pop si + pop di + 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_2850, bx + mov word ptr cs:dword_2850+2, es + mov word_100F2, 0 + mov word_100F4, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 294Ah + 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_28E9: ; CODE XREF: sub_2856+Fj + 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, 1C82h + 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_2856 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2912 proc far ; CODE XREF: sub_C990+3P sub_D16F+3P + mov ax, word ptr cs:dword_2850 + or ax, word ptr cs:dword_2850+2 + jz short locret_2949 + push ds + lds dx, cs:dword_2850 + 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_2850, ax + mov word ptr cs:dword_2850+2, ax + cmp word_100F2, ax + jz short locret_2949 + push word_100F2 + push cs + call near ptr sub_18DA + push word_100F6 + push cs + call near ptr sub_22B2 + +locret_2949: ; CODE XREF: sub_2912+9j sub_2912+25j + retf +sub_2912 endp + +; --------------------------------------------------------------------------- + cmp cs:byte_2854, 0 + jz short loc_2957 + jmp cs:dword_2850 +; --------------------------------------------------------------------------- + +loc_2957: ; CODE XREF: seg000:2950j + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_2854 + push word ptr [bp+18h] + popf + mov cs:byte_29AE, ah + mov si, 297Eh + +loc_2972: ; CODE XREF: seg000:2978j + add si, 4 + cmp ah, cs:[si] + jnz short loc_2972 + mov di, word_100F4 + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh ; = + db 0 + db 0B2h ; ² + db 29h ; ) + db 3Eh ; > + db 0 + db 0E7h ; ç + db 29h ; ) + db 3Fh ; ? + db 0 + db 5 + db 2Ah ; * + db 42h ; B + db 0 + db 19h + db 2Ah ; * + db 46h ; F + db 0 + db 7Ah ; z + db 2Ah ; * + db 40h ; @ + db 0 + db 7Eh ; ~ + db 2Ah ; * + db 45h ; E + db 0 + db 7Eh ; ~ + db 2Ah ; * + db 4Ch ; L + db 0 + db 5Ch ; \ + db 2Ah ; * + db 57h ; W + db 0 + db 7Eh ; ~ + db 2Ah ; * + db 5Ch ; \ + db 0 + db 7Eh ; ~ + db 2Ah ; * + db 44h ; D + db 0 + db 68h ; h + db 2Ah ; * +byte_29AE db 0 ; DATA XREF: seg000:296Aw + db 0 + db 82h, 2Ah, 0A8h, 0Fh, 74h, 3, 0E9h, 0C9h, 0, 0Bh, 0FFh + db 78h, 3, 0E9h, 0C2h, 0, 1Eh, 68h, 82h, 1Ch, 0FFh, 76h + db 2, 52h, 0Eh, 0E8h, 4Ah, 1, 0Bh, 0C0h, 75h, 3, 0E9h + db 0AFh, 0, 0A3h, 2, 1Dh, 8Eh, 0C0h, 26h, 8Eh, 6, 2 dup(0) + db 26h, 0A1h, 2 dup(0), 0A3h, 4, 1Dh, 0E9h, 0B6h, 0, 3Bh + db 0DFh, 74h, 3, 0E9h, 94h, 0, 0FFh, 36h, 2, 1Dh, 0Eh + db 0E8h, 0E4h, 0EEh, 0C7h, 6, 2, 1Dh, 2 dup(0), 0C7h, 6 + db 4, 1Dh, 2 dup(0FFh), 0E9h, 98h, 0, 3Bh, 0DFh, 75h, 79h + db 0FFh, 76h, 2, 52h, 51h, 0FFh, 36h, 2, 1Dh, 0Eh, 0E8h + db 8Eh, 0EFh, 0E9h, 84h, 0, 3Bh, 0DFh, 75h, 65h, 0Bh, 0C9h + db 7Ch, 73h, 3Ch, 1, 74h, 28h, 7Ch, 1Ah, 8Eh, 6, 2, 1Dh + db 26h, 8Bh, 2 dup(16h), 0, 26h, 8Bh, 0Eh, 18h, 0, 26h + db 2Bh, 16h, 12h, 0, 26h, 1Bh, 0Eh, 14h, 0, 0EBh, 0Ch + db 51h, 52h, 0FFh, 36h, 2, 1Dh, 0Eh, 0E8h, 87h, 0EFh, 5Ah + db 59h, 0FFh, 36h, 2, 1Dh, 51h, 52h, 0Eh, 0E8h, 0B7h, 0EFh + db 89h, 56h, 0Eh, 0EBh, 41h, 2Eh, 0C5h, 16h, 50h, 28h + db 0B8h, 21h, 25h, 0CDh, 21h, 0EBh, 1Ah, 8Ah, 0C8h, 0B8h + db 1, 0, 0D3h, 0E0h, 2Eh, 85h, 6, 78h, 2Ah, 75h, 8, 0EBh + db 0Ah, 0CFh, 14h, 8Bh, 0CFh, 74h, 16h, 3Bh, 0DFh, 74h + db 12h, 2Eh, 0FEh, 0Eh, 54h, 28h, 0FFh, 76h, 18h, 9Dh + db 7, 1Fh, 61h, 0FAh, 2Eh, 0FFh, 2Eh, 50h, 28h, 80h, 4Eh + db 18h, 1, 0B8h, 1, 0, 0EBh, 4, 80h, 66h, 18h, 0FEh, 89h + db 46h, 12h, 2Eh, 0FEh, 0Eh, 54h, 28h, 7, 1Fh, 61h, 0CFh + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_2AAE proc far ; CODE XREF: sub_CEE0+2AP + mov cx, 100h + mov dx, 188h + +loc_2AB4: ; CODE XREF: sub_2AAE+Bj + in al, dx + inc al + jnz short loc_2ABF + loop loc_2AB4 + xor ax, ax + jmp short loc_2AD3 +; --------------------------------------------------------------------------- + +loc_2ABF: ; CODE XREF: sub_2AAE+9j + pushf + cli + mov bh, 7 + call sub_1F0C + and al, 3Fh + or al, 80h + mov bl, al + call sub_1EF6 + popf + mov ax, 1 + +loc_2AD3: ; CODE XREF: sub_2AAE+Fj + mov word_E960, ax + retf +sub_2AAE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2AD8 proc near ; CODE XREF: sub_2AEA+10p + mov bh, 0Fh + call sub_1EF6 + mov dx, 188h + mov al, 0Eh + out dx, al + inc dx + inc dx + in al, dx + not al + retn +sub_2AD8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2AEA proc far ; CODE XREF: sub_D5A2+FP seg002:0DFFP ... + push bp + push si + push di + xor bp, bp + cmp word_E960, 0 + jz short loc_2B03 + pushf + cli + mov bl, 80h ; '€' + call sub_2AD8 + and ax, 3Fh + mov si, ax + popf + +loc_2B03: ; CODE XREF: sub_2AEA+Aj + or word_F80A, si + pop di + pop si + pop bp + retf +sub_2AEA endp + +; --------------------------------------------------------------------------- + nop + xchg dx, bx + out dx, al + xchg dx, bx + in al, dx + not al + retn +; --------------------------------------------------------------------------- + db 0 + db 0C8h, 3 dup(0), 56h, 57h, 0C7h, 6, 56h, 8, 7, 0, 6Ah + db 1Fh, 0Eh, 0E8h, 86h, 0F6h, 0Fh, 82h, 0F6h, 0, 8Bh, 0F0h + db 0FFh, 76h, 0Ch, 0FFh, 76h, 0Ah, 0Eh, 0E8h, 80h, 0DAh + db 0Bh, 0C0h, 0Fh, 84h, 0DDh, 0, 8Eh, 0C6h, 26h, 0A3h + db 2 dup(0), 0A1h, 6, 1Dh, 8Eh, 0E0h, 33h, 0C0h, 8Bh, 0F8h + db 64h, 8Ah, 5, 0BBh, 2, 0, 0Ah, 0C0h, 74h, 18h, 0BBh + db 3, 0, 3, 0DFh, 0FFh, 76h, 8, 0FFh, 76h, 6, 0Fh, 0A0h + db 53h, 0E8h, 0C8h, 0, 75h, 7, 83h, 0C7h, 20h, 0EBh, 0DEh + db 8Bh, 0C3h, 8Eh, 0C6h, 64h, 8Bh, 45h, 14h, 64h, 8Bh + db 55h, 16h, 26h, 0A3h, 0Eh, 0, 26h, 89h, 16h, 10h, 0 + db 26h, 0FFh, 36h, 2 dup(0), 52h, 50h, 6Ah, 0, 0Eh, 0E8h + db 0EDh, 0DAh, 0B8h, 52h, 19h, 64h, 8Ah, 55h, 2, 8Eh, 0C6h + db 0Ah, 0D2h, 74h, 8, 26h, 88h, 16h, 1Eh, 0, 0B8h, 96h + db 19h, 26h, 0A3h, 4, 0, 8Eh, 0C1h, 64h, 8Bh, 5, 8Eh, 0C6h + db 3Dh, 88h, 0F3h, 74h, 0Ah, 3Dh, 2 dup(95h), 74h, 0Fh + db 0B8h, 5, 0, 0EBh, 4Fh, 26h, 0A1h, 4, 0, 26h, 0A3h, 2 + db 0, 0EBh, 15h, 26h, 0C7h, 6, 2, 0, 4, 19h, 26h, 0C7h + db 6, 1Ah, 3 dup(0), 26h, 0C7h, 6, 1Ch, 0, 2 dup(0FFh) + db 64h, 8Bh, 5Dh, 10h, 64h, 8Bh, 55h, 12h, 33h, 0C0h, 26h + db 89h, 1Eh, 6, 0, 26h, 0A3h, 8, 0, 26h, 89h, 2 dup(16h) + db 0, 26h, 0A3h, 18h, 0, 26h, 0A3h, 0Ah, 0, 26h, 0A3h + db 0Ch, 0, 26h, 0A3h, 12h, 0, 26h, 0A3h, 14h, 0, 8Bh, 0C6h + db 0EBh, 1Ah, 0A3h, 0B2h, 5, 26h, 0FFh, 36h, 2 dup(0) + db 0Eh, 0E8h, 57h, 0D8h, 56h, 0Eh, 0E8h, 92h, 0F6h, 0EBh + db 5, 0C6h, 6, 0B2h, 5, 3, 33h, 0C0h, 5Fh, 5Eh, 0C9h, 0CAh + db 8, 0, 90h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2C30 proc near + +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_2C3C: ; CODE XREF: sub_2C30+2Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_2C49 + sub al, 20h ; ' ' + +loc_2C49: ; CODE XREF: sub_2C30+15j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_2C54 + sub ah, 20h ; ' ' + +loc_2C54: ; CODE XREF: sub_2C30+1Fj + cmp ah, al + jnz short loc_2C5E + add al, 61h ; 'a' + jnz short loc_2C3C + jmp short loc_2C60 +; --------------------------------------------------------------------------- + +loc_2C5E: ; CODE XREF: sub_2C30+26j + xor ax, ax + +loc_2C60: ; CODE XREF: sub_2C30+2Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 +sub_2C30 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_2C6E + +loc_2C68: ; CODE XREF: sub_2C6E+Ej sub_2C6E+1Dj ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_2C6E + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2C6E proc far ; CODE XREF: sub_A23C+85P + +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 2C68 SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_2C68 + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_2C94 + add cx, di + jle short loc_2C68 + shl di, 2 + add si, di + xor di, di + +loc_2C94: ; CODE XREF: sub_2C6E+19j + cmp di, 50h ; 'P' + jge short loc_2C68 + add cx, di + cmp cx, 50h ; 'P' + jl short loc_2CA3 + mov cx, 50h ; 'P' + +loc_2CA3: ; CODE XREF: sub_2C6E+30j + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_E91E + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_2CB6: ; CODE XREF: sub_2C6E+BBj + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1AAAh] + mov dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1AAAh] + or dx, cs:[bx+1AACh] + 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_2CB6 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_2C6E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_2D32 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 0CA6h + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_2D32 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_423A + pop cx + nop + push cs + call near ptr sub_2D32 +_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_F0B6, 20h ; ' ' + jnz short loc_2DAF + mov ax, 1 + jmp short loc_2DCB +; --------------------------------------------------------------------------- + +loc_2DAF: ; CODE XREF: _atexit+Aj + mov bx, word_F0B6 + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+27ECh], dx + mov [bx+27EAh], ax + inc word_F0B6 + xor ax, ax + +loc_2DCB: ; 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:351Ep ... + +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_3B55 + 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_7E89+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_9399+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_2E4D + mov [bp+var_6], 0 + jmp short loc_2E38 +; --------------------------------------------------------------------------- + +loc_2E1F: ; CODE XREF: __DOSENV+50j + les bx, [bp+var_4] + assume es:nothing + 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_2E38: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2E4D + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_2E1F + +loc_2E4D: ; 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_2E6B + 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_2E6B: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_2E75 + jmp loc_2F5C +; --------------------------------------------------------------------------- + +loc_2E75: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_3C88 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_2E8F + jmp loc_2F5C +; --------------------------------------------------------------------------- + +loc_2E8F: ; 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_2F05 + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2F05 + jmp short loc_2EEE +; --------------------------------------------------------------------------- + +loc_2EC2: ; 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_2EEE: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_2F0F + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_2EC2 + jmp short loc_2F0F +; --------------------------------------------------------------------------- + +loc_2F05: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_2F0F: ; 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_2F51 + 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_2F51: ; 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_2F60 +; --------------------------------------------------------------------------- + +loc_2F5C: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_2F60: ; 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_475F+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: seg000:016Ap sub_2D32+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_F0F0 + 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_2FC2 proc far ; CODE XREF: sub_2FC7+29P sub_2FC7+43P ... + push si + push di + pop di + pop si + retf +sub_2FC2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_2FC7 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_2FF4 + jmp short loc_2FE4 +; --------------------------------------------------------------------------- + +loc_2FD4: ; CODE XREF: sub_2FC7+22j + dec word_F0B6 + mov bx, word_F0B6 + mov cl, 2 + shl bx, cl + call dword ptr [bx+27EAh] + +loc_2FE4: ; CODE XREF: sub_2FC7+Bj + cmp word_F0B6, 0 + jnz short loc_2FD4 + nop + push cs + call __cleanup + call off_F0B8 + +loc_2FF4: ; CODE XREF: sub_2FC7+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_301B + cmp [bp+arg_4], 0 + jnz short loc_3012 + call off_F0BC + call off_F0C0 + +loc_3012: ; CODE XREF: sub_2FC7+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_301B: ; CODE XREF: sub_2FC7+3Bj + pop di + pop si + pop bp + retn 6 +sub_2FC7 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_2FC7 + 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: seg000:0175p sub_2D32+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_2FC7 + 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_2FC7 + 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_2FC7 + 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_B46B+16P + +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 __interrupt far *__cdecl getvect(int interruptno))() +_getvect proc far ; CODE XREF: seg000:41D2p + +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:4117p seg000:4214p ... + +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_30CD + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_7CD6+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_30CD +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_30CD +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_30CD: ; CODE XREF: seg000:30B5j 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_30EC + or dx, dx + jz short loc_3151 + or bx, bx + jz short loc_3151 + +loc_30EC: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_310E + or dx, dx + jns short loc_3100 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_3100: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_310E + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_310E: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_3118: ; CODE XREF: N_LUDIV@:loc_312Fj + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_312F + ja short loc_312A + cmp si, bx + jb short loc_312F + +loc_312A: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_312F: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_3118 + pop bx + test bx, 2 + jz short loc_313E + mov ax, si + mov dx, di + shr bx, 1 + +loc_313E: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_314B + neg dx + neg ax + sbb dx, 0 + +loc_314B: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_3151: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_315A + xchg ax, dx + +loc_315A: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_314B +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_3176 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_3176: ; 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_3192 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_31C1 +; --------------------------------------------------------------------------- + +loc_3192: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_319A + add dx, 1000h + +loc_319A: ; 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_31C1 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_3192 +; --------------------------------------------------------------------------- + +loc_31C1: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_31C9 + sub dx, 1000h + +loc_31C9: ; 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_3202 + cmp dx, 58h ; 'X' + jle short loc_31F3 + +loc_31F0: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_31F3: ; CODE XREF: __IOERROR+Fj + mov word_F27E, dx + mov bx, dx + mov al, [bx+0E90h] + cbw + mov dx, ax + jmp short loc_3210 +; --------------------------------------------------------------------------- + +loc_3202: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_F560 + jg short loc_31F0 + mov word_F27E, 0FFFFh + +loc_3210: ; CODE XREF: __IOERROR+21j + mov word_E46E, 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:35D3p seg000:360Cp + +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+0E66h], 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_326A + jmp short loc_326F +; --------------------------------------------------------------------------- + +loc_326A: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_326F: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_349E + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 73h, 32h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 3281h + 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, 3379h + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0EEAh + 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_F2DE + 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, 349Eh + 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_F2E2 + mov ax, word_F2E0 + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_F2E2, dx + mov word_F2E0, 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_3345 + mov ax, [bp+arg_0] + jmp short loc_3348 +; --------------------------------------------------------------------------- + +loc_3345: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_3348: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_3351 +; --------------------------------------------------------------------------- + +loc_334D: ; CODE XREF: operator new(uint)+43j + call dword ptr word_F2E0 + +loc_3351: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_3C88 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_336D + mov ax, word_F2E0 + or ax, seg_F2E2 + jnz short loc_334D + +loc_336D: ; 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_349E + db 2 dup(0), 0EAh, 0Eh + dw seg dseg + dd byte_3464 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0BCh, 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:131Ao + +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, 33D4h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 0EF4h + 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, 0EEAh + 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_343D: ; DATA XREF: dseg:1338o + 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, 0EEAh + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_3464 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:33C6o + db 0Dh dup(0), 1, 0, 1, 0, 7, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_349E db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:3273o seg000:33BCo + db 0Dh dup(0), 2, 0, 2, 0, 0E0h, 34h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 2Dh, 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_3527 + 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_3525 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_3529 +; --------------------------------------------------------------------------- + +loc_3525: ; CODE XREF: seg000:3514j + jmp short loc_3529 +; --------------------------------------------------------------------------- + +loc_3527: ; CODE XREF: seg000:34EBj + xor ax, ax + +loc_3529: ; CODE XREF: seg000:3523j + ; seg000:loc_3525j + 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, 0ECh, 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_7CD6+51p sub_7CD6+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_356E + mul bx + +loc_356E: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_3575 + xchg ax, cx + mul si + add ax, cx + +loc_3575: ; CODE XREF: N_LXMUL@:loc_356Ej + 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_359C + cmp ax, bx + +locret_359C: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_35C6 +; --------------------------------------------------------------------------- + +loc_35A4: ; CODE XREF: seg000:35CAj + mov bx, cx + add bx, bx + mov word ptr [bx+0E66h], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+0CD8h], 0FFh + add ax, 0CD4h + mov bx, dx + mov [bx+0CE6h], ax + inc cx + +loc_35C6: ; CODE XREF: seg000:35A2j + cmp cx, word_F254 + jb short loc_35A4 + mov al, byte_F0C8 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_35E1 + and word_F0C6, 0FDFFh + +loc_35E1: ; CODE XREF: seg000:35D9j + mov ax, 200h + push ax + test byte ptr word_F0C6+1, 2 + jz short loc_35F1 + mov ax, 1 + jmp short loc_35F3 +; --------------------------------------------------------------------------- + +loc_35F1: ; CODE XREF: seg000:35EAj + xor ax, ax + +loc_35F3: ; CODE XREF: seg000:35EFj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0CD4h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_F0DC + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_361A + and word_F0DA, 0FDFFh + +loc_361A: ; CODE XREF: seg000:3612j + mov ax, 200h + push ax + test byte ptr word_F0DA+1, 2 + jz short loc_362A + mov ax, 2 + jmp short loc_362C +; --------------------------------------------------------------------------- + +loc_362A: ; CODE XREF: seg000:3623j + xor ax, ax + +loc_362C: ; CODE XREF: seg000:3628j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0CE8h + 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 tolower(int ch) +_tolower proc far ; CODE XREF: sub_A64D+BP sub_A64D+FCP + +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_3653 + mov ax, 0FFFFh + jmp short loc_366D +; --------------------------------------------------------------------------- + +loc_3653: ; CODE XREF: _tolower+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 4 + jz short loc_3669 + mov al, dl + mov ah, 0 + add ax, 20h ; ' ' + jmp short loc_366D +; --------------------------------------------------------------------------- + +loc_3669: ; CODE XREF: _tolower+1Dj + mov al, dl + mov ah, 0 + +loc_366D: ; CODE XREF: _tolower+10j _tolower+26j + pop di + pop si + pop bp + retf +_tolower endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3671 proc far ; CODE XREF: sub_475F+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_3683 + mov ax, 0FFFFh + jmp short loc_369D +; --------------------------------------------------------------------------- + +loc_3683: ; CODE XREF: sub_3671+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 8 + jz short loc_3699 + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_369D +; --------------------------------------------------------------------------- + +loc_3699: ; CODE XREF: sub_3671+1Dj + mov al, dl + mov ah, 0 + +loc_369D: ; CODE XREF: sub_3671+10j sub_3671+26j + pop di + pop si + pop bp + retf +sub_3671 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __RefDestructorCount(void) +@__RefDestructorCount$qv proc far ; CODE XREF: seg000:32D2p seg000:33A2p ... + 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:329Fp + ; 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:381Cp ... + +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:1010o + 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_3770 + 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_3770: ; 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_380A + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 7Ch, 37h + dw seg seg000 + db 0 + db 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_6361+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, 3794h + 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_37EE + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_37EE: ; 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_3812 +; --------------------------------------------------------------------------- + +loc_380A: ; DATA XREF: seg000:3780o + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_3812: ; 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:1014o + 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_3864 + 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_3864: ; 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_38A0 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_38A0: ; 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_38D3 + xor ax, ax + jmp short loc_390D +; --------------------------------------------------------------------------- + +loc_38D3: ; 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_390D: ; 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_3927 + xor ax, ax + jmp short loc_3965 +; --------------------------------------------------------------------------- + +loc_3927: ; 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_3965: ; 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, 1006h + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_F40A, ax + mov word_F408, 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_F51E, 0 + jz short locret_3A14 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_F51E, 2 + jz short locret_3A14 + 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_F51E, 3 + mov esp, edx + jz short locret_3A14 + mov word_F51E, 4 + +locret_3A14: ; CODE XREF: seg000:39D0j seg000:39E3j ... + retn +; --------------------------------------------------------------------------- +word_3A15 dw 0 ; DATA XREF: sub_3A21r sub_3A21+1Dr ... +word_3A17 dw 0 ; DATA XREF: sub_3A21+14w sub_3A21+27w ... +word_3A19 dw 0 ; DATA XREF: sub_3A21+4Cw sub_3AF5+19w ... +word_3A1B dw 0 ; DATA XREF: sub_3A21+32r + ; sub_3A21:loc_3A74r ... +word_3A1D dw 0 ; DATA XREF: sub_3D0F+1r sub_3DEF+1Aw +word_3A1F dw 0 ; DATA XREF: sub_3D0F+7r sub_3DEF+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_3A21 proc near ; CODE XREF: sub_3B55+18p + cmp dx, cs:word_3A15 + jz short loc_3A5F + mov ds, dx + mov ds, word_E3F2 + cmp word_E3F2, 0 + jz short loc_3A3C + mov cs:word_3A17, ds + jmp short loc_3A74 +; --------------------------------------------------------------------------- + +loc_3A3C: ; CODE XREF: sub_3A21+12j + mov ax, ds + cmp ax, cs:word_3A15 + jz short loc_3A5A + mov ax, off_E3F8 + mov cs:word_3A17, ax + push ds + xor ax, ax + push ax + call sub_3AF5 + mov ds, cs:word_3A1B + jmp short loc_3A7D +; --------------------------------------------------------------------------- + +loc_3A5A: ; CODE XREF: sub_3A21+22j + mov dx, cs:word_3A15 + +loc_3A5F: ; CODE XREF: sub_3A21+5j + mov cs:word_3A15, 0 + mov cs:word_3A17, 0 + mov cs:word_3A19, 0 + +loc_3A74: ; CODE XREF: sub_3A21+19j + mov ds, cs:word_3A1B + push dx + xor ax, ax + push ax + +loc_3A7D: ; CODE XREF: sub_3A21+37j + call __brk + add sp, 4 + retn +sub_3A21 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3A84 proc near ; CODE XREF: sub_3B55:loc_3B72p + mov ds, dx + push ds + mov es, word_E3F2 + mov word_E3F2, 0 + mov off_E3F8, es + cmp dx, cs:word_3A15 + jz short loc_3ACA + cmp word ptr es:2, 0 + jnz short loc_3ACA + mov ax, word_E3F0 + 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_3AC3 + mov es:8, cx + jmp short loc_3ACD +; --------------------------------------------------------------------------- + +loc_3AC3: ; CODE XREF: sub_3A84+36j + mov es:2, cx + jmp short loc_3ACD +; --------------------------------------------------------------------------- + +loc_3ACA: ; CODE XREF: sub_3A84+16j sub_3A84+1Ej + call sub_3B1E + +loc_3ACD: ; CODE XREF: sub_3A84+3Dj sub_3A84+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_E3F2, 0 + jz short loc_3ADF + retn +; --------------------------------------------------------------------------- + +loc_3ADF: ; CODE XREF: sub_3A84+58j + mov ax, word_E3F0 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_E3F0 + mov es, bx + mov es:2, ax +sub_3A84 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_3AF5 proc near ; CODE XREF: sub_3A21+2Fp sub_3C92+66p + mov bx, ds + cmp bx, word_E3F6 + jz short loc_3B16 + mov es, word_E3F6 + mov ds, word_E3F4 + mov word_E3F6, es + mov word ptr es:4, ds + mov cs:word_3A19, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_3B16: ; CODE XREF: sub_3AF5+6j + mov cs:word_3A19, 0 + retn +sub_3AF5 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B1E proc near ; CODE XREF: sub_3A84:loc_3ACAp + mov ax, cs:word_3A19 + or ax, ax + jz short loc_3B47 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov word_E3F4, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov word_E3F6, es + retn +; --------------------------------------------------------------------------- + +loc_3B47: ; CODE XREF: sub_3B1E+6j + mov cs:word_3A19, ds + mov word_E3F4, ds + mov word_E3F6, ds + retn +sub_3B1E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3B55 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_3D0F+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_3A1B, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_3B75 + cmp dx, cs:word_3A17 + jnz short loc_3B72 + call sub_3A21 + jmp short loc_3B75 +; --------------------------------------------------------------------------- + +loc_3B72: ; CODE XREF: sub_3B55+16j + call sub_3A84 + +loc_3B75: ; CODE XREF: sub_3B55+Fj sub_3B55+1Bj + mov ds, cs:word_3A1B + pop di + pop si + pop bp + retf +sub_3B55 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B7E proc near ; CODE XREF: sub_3C92:loc_3CE7p + push ax + mov ds, cs:word_3A1B + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_3BA7 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3A1B + push ax + push dx + call __sbrk + add sp, 4 + +loc_3BA7: ; CODE XREF: sub_3B7E+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3A1B + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3BDE + mov cs:word_3A15, dx + mov cs:word_3A17, dx + mov ds, dx + mov word_E3F0, bx + mov word_E3F2, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3BDE: ; CODE XREF: sub_3B7E+46j + xor ax, ax + cwd + retn +sub_3B7E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3BE2 proc near ; CODE XREF: sub_3C92:loc_3CE2p + push ax + mov ds, cs:word_3A1B + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_3C0A + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3A1B + push ax + push dx + call __sbrk + add sp, 4 + +loc_3C0A: ; CODE XREF: sub_3BE2+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3A1B + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3C61 + and ax, 0Fh + jnz short loc_3C46 + +loc_3C2E: ; CODE XREF: sub_3BE2+7Dj + mov cx, cs:word_3A17 + mov cs:word_3A17, dx + mov ds, dx + mov word_E3F0, bx + mov word_E3F2, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3C46: ; CODE XREF: sub_3BE2+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_3C61 + inc dx + jmp short loc_3C2E +; --------------------------------------------------------------------------- + +loc_3C61: ; CODE XREF: sub_3BE2+45j sub_3BE2+7Aj + xor ax, ax + cwd + retn +sub_3BE2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3C65 proc near ; CODE XREF: sub_3C92:loc_3CECp + mov bx, dx + sub word_E3F0, ax + add dx, word_E3F0 + mov ds, dx + mov word_E3F0, ax + mov word_E3F2, bx + mov bx, dx + add bx, word_E3F0 + mov ds, bx + mov word_E3F2, dx + mov ax, 4 + retn +sub_3C65 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C88 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_3C9B +sub_3C88 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3C92 proc far ; CODE XREF: sub_3D0F+Ep sub_3DEF+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_3C9B: ; CODE XREF: sub_3C88+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_3A1B, ds + jz short loc_3D06 + add ax, 13h + adc dx, 0 + jb short loc_3CF1 + test dx, 0FFF0h + jnz short loc_3CF1 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_3A15 + or dx, dx + jz short loc_3CE7 + mov dx, cs:word_3A19 + or dx, dx + jz short loc_3CE2 + mov bx, dx + +loc_3CD2: ; CODE XREF: sub_3C92+4Ej + mov ds, dx + cmp word_E3F0, ax + jnb short loc_3CF6 + mov dx, word_E3F6 + cmp dx, bx + jnz short loc_3CD2 + +loc_3CE2: ; CODE XREF: sub_3C92+3Cj + call sub_3BE2 + jmp short loc_3D06 +; --------------------------------------------------------------------------- + +loc_3CE7: ; CODE XREF: sub_3C92+33j + call sub_3B7E + jmp short loc_3D06 +; --------------------------------------------------------------------------- + +loc_3CEC: ; CODE XREF: sub_3C92:loc_3CF6j + call sub_3C65 + jmp short loc_3D06 +; --------------------------------------------------------------------------- + +loc_3CF1: ; CODE XREF: sub_3C92+1Cj sub_3C92+22j + xor ax, ax + cwd + jmp short loc_3D06 +; --------------------------------------------------------------------------- + +loc_3CF6: ; CODE XREF: sub_3C92+46j + ja short loc_3CEC + call sub_3AF5 + mov bx, off_E3F8 + mov word_E3F2, bx + mov ax, offset word_E3F4 + +loc_3D06: ; CODE XREF: sub_3C92+14j sub_3C92+53j ... + mov ds, cs:word_3A1B + pop di + pop si + pop bp + retf +sub_3C92 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D0F proc near ; CODE XREF: sub_3DEF:loc_3E4Bp + push bx + mov si, cs:word_3A1D + push si + mov si, cs:word_3A1F + push si + push cs + call near ptr sub_3C92 + add sp, 4 + or dx, dx + jnz short loc_3D29 + pop bx + retn +; --------------------------------------------------------------------------- + +loc_3D29: ; CODE XREF: sub_3D0F+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_E3F0 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_3D7A + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_3D4D: ; CODE XREF: sub_3D0F+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_3D5C + mov cx, 1000h + +loc_3D5C: ; CODE XREF: sub_3D0F+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_3D7A + 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_3D4D +; --------------------------------------------------------------------------- + +loc_3D7A: ; CODE XREF: sub_3D0F+32j sub_3D0F+59j + mov ds, cs:word_3A1B + assume ds:dseg + push cs + call near ptr sub_3B55 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_3D0F endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D8B proc near ; CODE XREF: sub_3DEF:loc_3E46p + cmp bx, cs:word_3A17 + jz short loc_3DD7 + 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_3DC3 + mov es:2, di + jmp short loc_3DC8 +; --------------------------------------------------------------------------- + +loc_3DC3: ; CODE XREF: sub_3D8B+2Fj + mov es:8, di + +loc_3DC8: ; CODE XREF: sub_3D8B+36j + mov si, bx + push cs + call near ptr sub_3B55 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3DD7: ; CODE XREF: sub_3D8B+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_3D8B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3DEF proc far ; CODE XREF: sub_475F+2DDp + ; seg003:0750P ... + +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_3DFC +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_3DFC: ; CODE XREF: sub_3DEF+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_3A1B, ds + mov cs:word_3A1D, dx + mov cs:word_3A1F, ax + or bx, bx + jz short loc_3E50 + mov cx, ax + or cx, dx + jz short loc_3E5B + add ax, 13h + adc dx, 0 + jb short loc_3E64 + test dx, 0FFF0h + jnz short loc_3E64 + 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_3E4B + ja short loc_3E46 + mov dx, bx + mov ax, 4 + jmp short loc_3E67 +; --------------------------------------------------------------------------- + +loc_3E46: ; CODE XREF: sub_3DEF+4Ej + call sub_3D8B + jmp short loc_3E67 +; --------------------------------------------------------------------------- + +loc_3E4B: ; CODE XREF: sub_3DEF+4Cj + call sub_3D0F + jmp short loc_3E67 +; --------------------------------------------------------------------------- + +loc_3E50: ; CODE XREF: sub_3DEF+25j + push dx + push ax + push cs + call near ptr sub_3C92 + add sp, 4 + jmp short loc_3E67 +; --------------------------------------------------------------------------- + +loc_3E5B: ; CODE XREF: sub_3DEF+2Bj + push bx + push ax + push cs + call near ptr sub_3B55 + add sp, 4 + +loc_3E64: ; CODE XREF: sub_3DEF+33j sub_3DEF+39j + xor ax, ax + cwd + +loc_3E67: ; CODE XREF: sub_3DEF+55j sub_3DEF+5Aj ... + mov ds, cs:word_3A1B + pop di + pop si + pop bp + retf +sub_3DEF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_3E70 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_F520 + jz short loc_3ED4 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_E47E + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_3EB5 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_3EB5: ; CODE XREF: sub_3E70+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_3EE6 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_F520, ax + +loc_3ED4: ; CODE XREF: sub_3E70+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_E47A, dx + mov word_E478, ax + mov ax, 1 + jmp short loc_3EF6 +; --------------------------------------------------------------------------- + +loc_3EE6: ; CODE XREF: sub_3E70+58j + mov ax, segx + add ax, dx + mov word_E47E, ax + mov word_E47C, 0 + xor ax, ax + +loc_3EF6: ; CODE XREF: sub_3E70+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_3E70 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_3A21:loc_3A7Dp + ; sub_3D8B+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_E476 + mov bx, word_E474 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_3F36 + mov cx, word_E47E + mov bx, word_E47C + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_3F36 + push [bp+arg_2] + push [bp+arg_0] + call sub_3E70 + or ax, ax + jnz short loc_3F3B + +loc_3F36: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_3F3D +; --------------------------------------------------------------------------- + +loc_3F3B: ; CODE XREF: __brk+36j + xor ax, ax + +loc_3F3D: ; 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_3B7E+Ap sub_3B7E+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_E47A + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_E478 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_3F6C + jg short loc_3FBC + cmp ax, 0FFFFh + ja short loc_3FBC + +loc_3F6C: ; CODE XREF: __sbrk+22j + mov dx, word_E47A + mov ax, word_E478 + 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_E476 + mov bx, word_E474 + call N_PCMP@ + jb short loc_3FBC + mov cx, word_E47E + mov bx, word_E47C + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_3FBC + mov dx, word_E47A + mov ax, word_E478 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_3E70 + or ax, ax + jnz short loc_3FC4 + +loc_3FBC: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_3FCA +; --------------------------------------------------------------------------- + +loc_3FC4: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_3FCA: ; 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_F52E + mov ax, word_F52C + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_3FF9 + cmp ax, 1 + jz short loc_4036 + +loc_3FF9: ; CODE XREF: seg000:3FF2j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_400D + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4017 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4017 + +loc_400D: ; CODE XREF: seg000:3FFFj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4017: ; CODE XREF: seg000:4005j seg000:400Bj + mov word_F52E, 0 + mov word_F52C, 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_4036: ; CODE XREF: seg000:3FF7j + 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_F52E + mov ax, word_F52C + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_406B + cmp ax, 1 + jz short loc_40A8 + +loc_406B: ; CODE XREF: seg000:4064j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_407F + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4089 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4089 + +loc_407F: ; CODE XREF: seg000:4071j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4089: ; CODE XREF: seg000:4077j seg000:407Dj + mov word_F52E, 0 + mov word_F52C, 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_40A8: ; CODE XREF: seg000:4069j + 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_F526 + mov ax, word_F524 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_40DF + cmp ax, 1 + jz short loc_4124 + +loc_40DF: ; CODE XREF: seg000:40D8j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_40F3 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_40FD + cmp word ptr [bp-4], 0FFFFh + jnz short loc_40FD + +loc_40F3: ; CODE XREF: seg000:40E5j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_40FD: ; CODE XREF: seg000:40EBj seg000:40F1j + mov word_F526, 0 + mov word_F524, 0 + push word_10C64 + push word_10C62 + 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_4124: ; CODE XREF: seg000:40DDj + 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_4133 proc far ; CODE XREF: seg000:417Cp sub_423A+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_413A: ; CODE XREF: sub_4133+1Cj + mov bx, dx + mov al, [bx+114Ch] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_414B + mov ax, dx + jmp short loc_4154 +; --------------------------------------------------------------------------- + +loc_414B: ; CODE XREF: sub_4133+12j + inc dx + cmp dx, 6 + jl short loc_413A + mov ax, 0FFFFh + +loc_4154: ; CODE XREF: sub_4133+16j + pop di + pop si + pop bp + retf +sub_4133 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_F523, 0 + jnz short loc_4178 + mov word_10C5C, seg seg000 + mov word_10C5A, 4158h + mov byte_F523, 1 + +loc_4178: ; CODE XREF: seg000:4165j + push word ptr [bp+6] + push cs + call near ptr sub_4133 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_4197 + mov word_E46E, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_4234 +; --------------------------------------------------------------------------- + +loc_4197: ; CODE XREF: seg000:4186j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+1136h] + mov ax, [bx+1134h] + 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+1136h], dx + mov [bx+1134h], ax + cmp word ptr [bp+6], 2 + jnz short loc_4201 + cmp byte_F522, 0 + jnz short loc_41E2 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_10C64, dx + mov word_10C62, ax + mov byte_F522, 1 + +loc_41E2: ; CODE XREF: seg000:41CAj + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_41F4 + push word_10C64 + push word_10C62 + jmp short loc_41FC +; --------------------------------------------------------------------------- + +loc_41F4: ; CODE XREF: seg000:41E8j + mov ax, seg seg000 + push ax + mov ax, 40B4h + push ax + +loc_41FC: ; CODE XREF: seg000:41F2j + mov ax, 23h ; '#' + jmp short loc_4225 +; --------------------------------------------------------------------------- + +loc_4201: ; CODE XREF: seg000:41C3j + cmp word ptr [bp+6], 8 + jnz short loc_422E + mov ax, seg seg000 + push ax + mov ax, 3FD0h + 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, 4042h + push ax + mov ax, 4 + +loc_4225: ; CODE XREF: seg000:41FFj + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_422E: ; CODE XREF: seg000:4205j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_4234: ; CODE XREF: seg000:4194j + 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_423A 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_4133 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_4257 + mov ax, 1 + jmp short loc_42CB +; --------------------------------------------------------------------------- + +loc_4257: ; CODE XREF: sub_423A+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+1136h] + mov ax, [bx+1134h] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_4275 + cmp ax, 1 + jz short loc_42C9 + +loc_4275: ; CODE XREF: sub_423A+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_42A4 + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_428F + cmp ax, 16h + jnz short loc_4298 + nop + push cs + call near ptr sub_2D32 +; --------------------------------------------------------------------------- + +loc_428F: ; CODE XREF: sub_423A+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_4298: ; CODE XREF: sub_423A+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_42C9 +; --------------------------------------------------------------------------- + +loc_42A4: ; CODE XREF: sub_423A+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+1136h], 0 + mov word ptr [bx+1134h], 0 + mov bx, [bp+var_2] + mov al, [bx+1152h] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_42C9: ; CODE XREF: sub_423A+39j sub_423A+68j + xor ax, ax + +loc_42CB: ; CODE XREF: sub_423A+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_423A 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_4CA7+A8p sub_9310+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_42F0 + jmp short loc_4308 +; --------------------------------------------------------------------------- + +loc_42F0: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_42FB + test dl, 1 + jnz short loc_42FF + +loc_42FB: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_4308 +; --------------------------------------------------------------------------- + +loc_42FF: ; CODE XREF: __access+28j + mov word_E46E, 5 + mov ax, 0FFFFh + +loc_4308: ; 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, 58h, 11h, 0Bh, 6, 5Ah, 11h, 75h + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc near ; CODE XREF: sub_608A+7Bp sub_608A+9Ap ... + daa + mov si, 0FFFFh + push ds + mov ax, 6300h + clc + int 21h ; DOS - 3.2+ only - GET DOUBLE BYTE CHARACTER SET LEAD TABLE + mov ax, ds + pop ds + jb short loc_433B + mov dx, ds + cmp ax, dx + jz short loc_433B + cmp si, 0FFFFh + jnz short loc_4341 + +loc_433B: ; CODE XREF: sub_4320+Ej sub_4320+14j + mov si, 115Ch + mov ax, seg dseg + +loc_4341: ; CODE XREF: sub_4320+19j + mov word ptr dword_F548, si + mov word ptr dword_F548+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 +sub_4320 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4355 proc far ; CODE XREF: sub_437A+35p + ; sub_475F+284p ... + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov al, [bp+arg_0] + xor cx, cx + les bx, dword_F548 + +loc_4363: ; CODE XREF: sub_4355+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_4375 + cmp al, dl + jb short loc_4375 + inc bx + inc bx + cmp al, dh + ja short loc_4363 + inc cx + +loc_4375: ; CODE XREF: sub_4355+13j sub_4355+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_4355 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_437A proc far ; CODE XREF: sub_4725+23p + ; sub_475F+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_4390: ; CODE XREF: sub_437A+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_439D + xor cx, cx + jmp short loc_43CB +; --------------------------------------------------------------------------- + +loc_439D: ; CODE XREF: sub_437A+1Dj + cmp cx, 1 + jnz short loc_43A7 + mov cx, 2 + jmp short loc_43BE +; --------------------------------------------------------------------------- + +loc_43A7: ; CODE XREF: sub_437A+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_4355 + pop cx + or ax, ax + jz short loc_43BC + mov cx, 1 + jmp short loc_43BE +; --------------------------------------------------------------------------- + +loc_43BC: ; CODE XREF: sub_437A+3Bj + xor cx, cx + +loc_43BE: ; CODE XREF: sub_437A+2Bj sub_437A+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_43CB + inc word ptr [bp+var_4] + jmp short loc_4390 +; --------------------------------------------------------------------------- + +loc_43CB: ; CODE XREF: sub_437A+21j sub_437A+4Aj + or cx, cx + jnz short loc_43D4 + mov ax, 1 + jmp short loc_43D6 +; --------------------------------------------------------------------------- + +loc_43D4: ; CODE XREF: sub_437A+53j + xor ax, ax + +loc_43D6: ; CODE XREF: sub_437A+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_437A 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_43F5 + xchg ax, cx + jmp short loc_43F9 +; --------------------------------------------------------------------------- + +loc_43F5: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_43F9: ; 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_4415 + nop + push cs + call near ptr _flushall + jmp loc_44C6 +; --------------------------------------------------------------------------- + +loc_4415: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_4424 + jmp loc_44C1 +; --------------------------------------------------------------------------- + +loc_4424: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_447B + test byte ptr es:[bx+2], 8 + jnz short loc_444C + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_4446 + jmp loc_44C6 +; --------------------------------------------------------------------------- + +loc_4446: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_44C6 + +loc_444C: ; 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_44C6 + cmp es:[bx+0Ch], ax + jnz short loc_44C6 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_44C6 +; --------------------------------------------------------------------------- + +loc_447B: ; 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_44C6 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_44C6 + or word ptr es:[bx+2], 10h + +loc_44C1: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_44C8 +; --------------------------------------------------------------------------- + +loc_44C6: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_44C8: ; 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_F254 + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 0CD4h + jmp short loc_4507 +; --------------------------------------------------------------------------- + +loc_44EB: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_4503 + 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_4503: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_4507: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_44EB + 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_451A 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_4537 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_4544 +; --------------------------------------------------------------------------- + +loc_4537: ; CODE XREF: sub_451A+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_4544: ; CODE XREF: sub_451A+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_4598 + 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_4591 + jmp short loc_4579 +; --------------------------------------------------------------------------- + +loc_456A: ; CODE XREF: sub_451A+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4579 + inc [bp+var_2] + +loc_4579: ; CODE XREF: sub_451A+4Ej sub_451A+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_456A + jmp short loc_4598 +; --------------------------------------------------------------------------- + +loc_4582: ; CODE XREF: sub_451A+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4591 + inc [bp+var_2] + +loc_4591: ; CODE XREF: sub_451A+4Cj sub_451A+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_4582 + +loc_4598: ; CODE XREF: sub_451A+35j sub_451A+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_451A 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_45BE + mov ax, 0FFFFh + jmp short loc_4621 +; --------------------------------------------------------------------------- + +loc_45BE: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_45DB + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_45DB + push word ptr [bp+stream+2] + push bx + call sub_451A + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_45DB: ; 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_461F + cmp ax, 0FFFFh + jnz short loc_461F + mov ax, 0FFFFh + jmp short loc_4621 +; --------------------------------------------------------------------------- + +loc_461F: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_4621: ; 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_4659 + cmp ax, 0FFFFh + jnz short loc_4659 + jmp loc_46FA +; --------------------------------------------------------------------------- + +loc_4659: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_4665 + jmp loc_46EA +; --------------------------------------------------------------------------- + +loc_4665: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+0E67h], 8 + jz short loc_46D8 + 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_46A0 + cmp ax, 0FFFFh + jnz short loc_46A0 + jmp short loc_4700 +; --------------------------------------------------------------------------- + +loc_46A0: ; 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_46CC + cmp ax, 0FFFFh + jnz short loc_46CC + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_4700 +; --------------------------------------------------------------------------- + +loc_46CC: ; 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_46D8: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_451A + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_46FA +; --------------------------------------------------------------------------- + +loc_46EA: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_451A + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_46FA: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_4700: ; 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_4706 proc near ; CODE XREF: sub_4725+Ep sub_475F+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_4718 + cmp ax, 2Fh ; '/' + jnz short loc_471D + +loc_4718: ; CODE XREF: sub_4706+Bj + mov ax, 1 + jmp short loc_471F +; --------------------------------------------------------------------------- + +loc_471D: ; CODE XREF: sub_4706+10j + xor ax, ax + +loc_471F: ; CODE XREF: sub_4706+15j + pop di + pop si + pop bp + retn 2 +sub_4706 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4725 proc near ; CODE XREF: sub_475F+CDp + ; sub_475F+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_4706 + or ax, ax + jz short loc_4757 + 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_437A + add sp, 8 + or ax, ax + jz short loc_4757 + mov ax, 1 + jmp short loc_4759 +; --------------------------------------------------------------------------- + +loc_4757: ; CODE XREF: sub_4725+13j sub_4725+2Bj + xor ax, ax + +loc_4759: ; CODE XREF: sub_4725+30j + pop di + pop si + pop bp + retn 8 +sub_4725 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_475F proc far ; CODE XREF: sub_4CA7+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_3C88 + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_477E + jmp loc_49C1 +; --------------------------------------------------------------------------- + +loc_477E: ; CODE XREF: sub_475F+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+0F05h], 0Ch + jz short loc_47BE + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_47BE + mov al, es:[bx] + cbw + mov [bp+var_10], ax + push ax + nop + push cs + call near ptr sub_3671 + pop cx + add ax, 0FFC0h + mov [bp+drive], ax + add word ptr [bp+src], 2 + jmp short loc_47D4 +; --------------------------------------------------------------------------- + +loc_47BE: ; CODE XREF: sub_475F+39j sub_475F+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_47D4: ; CODE XREF: sub_475F+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_4706 + or ax, ax + jnz short loc_483C + 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_480C + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + jmp loc_49C1 +; --------------------------------------------------------------------------- + +loc_480C: ; CODE XREF: sub_475F+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_4725 + or ax, ax + jnz short loc_485E + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_485B +; --------------------------------------------------------------------------- + +loc_483C: ; CODE XREF: sub_475F+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_485B: ; CODE XREF: sub_475F+DBj + inc word ptr [bp+dest] + +loc_485E: ; CODE XREF: sub_475F+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_4884: ; CODE XREF: sub_475F+28Cj + ; sub_475F+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_48A0 + push ax + call sub_4706 + or ax, ax + jnz short loc_48A0 + jmp loc_49D2 +; --------------------------------------------------------------------------- + +loc_48A0: ; CODE XREF: sub_475F+134j + ; sub_475F+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_48C7 + 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_4725 + or ax, ax + jz short loc_48C7 + sub word ptr [bp+dest], 2 + jmp short loc_493E +; --------------------------------------------------------------------------- + +loc_48C7: ; CODE XREF: sub_475F+149j + ; sub_475F+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_493E + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_493E + 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_4725 + or ax, ax + jz short loc_493E + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4927 + 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_437A + add sp, 8 + or ax, ax + jz short loc_4927 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + jmp loc_49C1 +; --------------------------------------------------------------------------- + +loc_4927: ; CODE XREF: sub_475F+19Cj + ; sub_475F+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_4725 + or ax, ax + jz short loc_4927 + +loc_493E: ; CODE XREF: sub_475F+166j + ; sub_475F+170j ... + cmp [bp+var_E], 0 + jz short loc_4947 + jmp loc_49C7 +; --------------------------------------------------------------------------- + +loc_4947: ; CODE XREF: sub_475F+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_4725 + or ax, ax + jz short loc_495F + dec word ptr [bp+dest] + +loc_495F: ; CODE XREF: sub_475F+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_498D + 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_437A + add sp, 8 + or ax, ax + jz short loc_498D + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_498D: ; CODE XREF: sub_475F+208j + ; sub_475F+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_49AF + jmp loc_4A33 +; --------------------------------------------------------------------------- + +loc_49AF: ; CODE XREF: sub_475F+24Bj + cmp dx, [bp+arg_8] + jbe short loc_4A0C + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + +loc_49C1: ; CODE XREF: sub_475F+1Cj sub_475F+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_4A42 +; --------------------------------------------------------------------------- + +loc_49C7: ; CODE XREF: sub_475F+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_4A06 +; --------------------------------------------------------------------------- + +loc_49D2: ; CODE XREF: sub_475F+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 near ptr sub_4355 + pop cx + or ax, ax + jnz short loc_49EE + jmp loc_4884 +; --------------------------------------------------------------------------- + +loc_49EE: ; CODE XREF: sub_475F+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_49FA + jmp loc_4884 +; --------------------------------------------------------------------------- + +loc_49FA: ; CODE XREF: sub_475F+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_4A06: ; CODE XREF: sub_475F+271j + inc word ptr [bp+dest] + jmp loc_4884 +; --------------------------------------------------------------------------- + +loc_4A0C: ; CODE XREF: sub_475F+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_3B55 + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_4A42 +; --------------------------------------------------------------------------- + +loc_4A33: ; CODE XREF: sub_475F+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3DEF + add sp, 6 + +loc_4A42: ; CODE XREF: sub_475F+266j + ; sub_475F+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_475F 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_475F+93p sub_4CA7+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_4A64 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_4A64: ; 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_4AC0 + 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_4A9F + mov word_E46E, 22h ; '"' + jmp short loc_4AC0 +; --------------------------------------------------------------------------- + +loc_4A9F: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_4AC6 + push [bp+len] + nop + push cs + call near ptr sub_3C88 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4AC6 + mov word_E46E, 8 + +loc_4AC0: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_4ADF +; --------------------------------------------------------------------------- + +loc_4AC6: ; 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_4ADF: ; 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_9399+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_4B16 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_4B16 + les di, dword_F574 + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_4B23 + +loc_4B16: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_4B4F +; --------------------------------------------------------------------------- + +loc_4B1C: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_4B23: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_4B16 + mov al, es:[di] + or al, al + jz short loc_4B16 + cmp ah, al + jnz short loc_4B1C + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_4B1C + push ds + lds si, [bp+_name] +_getenv endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4B43 proc far ; CODE XREF: sub_5D3C+77p sub_5D3C+A1p ... + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_4B1C + inc di + mov ax, di + mov dx, es + +loc_4B4F: ; CODE XREF: _getenv+35j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4B43 endp ; sp-analysis failed + + +; =============== 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_4B76 + 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_4B76: ; 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_6361+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_4B95 + movsb + +loc_4B95: ; 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_4BBC + jcxz short loc_4BC3 + stosb + dec cx + +loc_4BBC: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_4BC3 + stosb + +loc_4BC3: ; 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_700D+CFp seg003:09D4P + +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_4C06 + std + mov ax, 1 + jmp short loc_4C09 +; --------------------------------------------------------------------------- + +loc_4C06: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_4C09: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_4C1C + add si, cx + dec si + add di, cx + dec di + +loc_4C1C: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_4C26 + jcxz short loc_4C35 + movsb + dec cx + +loc_4C26: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_4C35 + add si, ax + add di, ax + movsb + +loc_4C35: ; 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: seg003:0990P seg003:09B9P + +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_9310+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_4C87 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 1168h + +loc_4C87: ; 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_4CA7 + 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_4CA7(char *src, __int32, char *pathname) +sub_4CA7 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_4CCC + xor dx, dx + jmp short loc_4CDB +; --------------------------------------------------------------------------- + +loc_4CCC: ; CODE XREF: sub_4CA7+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_4CDB: ; CODE XREF: sub_4CA7+23j sub_4CA7+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_4D30 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_4D01 + cmp bl, 2Fh ; '/' + jz short loc_4D01 + cmp bl, 3Ah ; ':' + jnz short loc_4D1D + +loc_4D01: ; CODE XREF: sub_4CA7+4Ej sub_4CA7+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_437A + add sp, 8 + or ax, ax + jnz short loc_4D30 + +loc_4D1D: ; CODE XREF: sub_4CA7+58j + push ds + mov ax, 116Ah + 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_4D30: ; CODE XREF: sub_4CA7+3Fj sub_4CA7+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_4DA4 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4D6B + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_4DE3 +; --------------------------------------------------------------------------- + +loc_4D6B: ; CODE XREF: sub_4CA7+B9j + xor dx, dx + jmp short loc_4D83 +; --------------------------------------------------------------------------- + +loc_4D6F: ; CODE XREF: sub_4CA7+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_4D83: ; CODE XREF: sub_4CA7+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_4D92 + cmp byte ptr es:[bx], 0 + jnz short loc_4D6F + +loc_4D92: ; CODE XREF: sub_4CA7+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_4D9E + jmp loc_4CDB +; --------------------------------------------------------------------------- + +loc_4D9E: ; CODE XREF: sub_4CA7+F2j + inc word ptr [bp+arg_4] + jmp loc_4CDB +; --------------------------------------------------------------------------- + +loc_4DA4: ; CODE XREF: sub_4CA7+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_475F + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_4DE3 + 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_3B55 + add sp, 0Ch + +loc_4DE3: ; CODE XREF: sub_4CA7+C2j + ; sub_4CA7+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4CA7 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:35FFp seg000:3638p + +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_4DFD + jmp loc_4ED4 +; --------------------------------------------------------------------------- + +loc_4DFD: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_4E06 + jmp loc_4ED4 +; --------------------------------------------------------------------------- + +loc_4E06: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_4E10 + jmp loc_4ED4 +; --------------------------------------------------------------------------- + +loc_4E10: ; CODE XREF: _setvbuf+22j + cmp word_F55E, 0 + jnz short loc_4E26 + cmp word ptr [bp+stream], 0CE8h + jnz short loc_4E26 + mov word_F55E, 1 + jmp short loc_4E3A +; --------------------------------------------------------------------------- + +loc_4E26: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_F55C, 0 + jnz short loc_4E3A + cmp word ptr [bp+stream], 0CD4h + jnz short loc_4E3A + mov word_F55C, 1 + +loc_4E3A: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_4E57 + 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_4E57: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_4E70 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + +loc_4E70: ; 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_4F04 + cmp [bp+_size], 0 + jbe short loc_4F04 + mov word ptr off_F0B8+2, seg seg000 + mov word ptr off_F0B8, 5212h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_4ED9 + push [bp+_size] + nop + push cs + call near ptr sub_3C88 + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_4ED4 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_4ED9 +; --------------------------------------------------------------------------- + +loc_4ED4: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_4F06 +; --------------------------------------------------------------------------- + +loc_4ED9: ; 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_4F04 + or word ptr es:[bx+2], 8 + +loc_4F04: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_4F06: ; 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_4CA7+83p sub_4CA7+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_4F3A + movsb + dec cx + +loc_4F3A: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_4F41 + movsb + +loc_4F41: ; 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_475F+10Dp + ; sub_475F+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_9399+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_4FB7: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_4FDB + scasb + jz short loc_4FB7 + cmp al, ch + jb short loc_4FCC + cmp al, cl + ja short loc_4FCC + sub al, 20h ; ' ' + +loc_4FCC: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_4FD7 + cmp bl, cl + ja short loc_4FD7 + sub bl, 20h ; ' ' + +loc_4FD7: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_4FB7 + +loc_4FDB: ; 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_4FF6 + cmp ax, di + jz short loc_5000 + +loc_4FF6: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_5000: ; 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_5004(char *s, char) +sub_5004 proc far ; CODE XREF: sub_9399+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_5043 +; --------------------------------------------------------------------------- + +loc_502C: ; CODE XREF: sub_5004+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_5042 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_504B +; --------------------------------------------------------------------------- + +loc_5042: ; CODE XREF: sub_5004+34j + dec cx + +loc_5043: ; CODE XREF: sub_5004+26j + or cx, cx + jnz short loc_502C + xor dx, dx + xor ax, ax + +loc_504B: ; CODE XREF: sub_5004+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5004 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_F254 + jb short loc_506D + mov ax, 6 + push ax + call __IOERROR + jmp loc_51B1 +; --------------------------------------------------------------------------- + +loc_506D: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_507B + xor ax, ax + jmp loc_51B1 +; --------------------------------------------------------------------------- + +loc_507B: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0E67h], 8 + jz short loc_509A + 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_509A: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0E67h], 40h + jnz short loc_50BD + 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_51B1 +; --------------------------------------------------------------------------- + +loc_50BD: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+0E66h], 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_5157 +; --------------------------------------------------------------------------- + +loc_50DC: ; 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_50F9 + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_50F9: ; 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_5161 + jnz short loc_511F + cmp dx, 80h ; '€' + jb short loc_5161 + +loc_511F: ; 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_5157 + cmp dx, 0FFFFh + jnz short loc_514F + mov ax, 0FFFFh + jmp short loc_51AC +; --------------------------------------------------------------------------- + +loc_514F: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_51A7 +; --------------------------------------------------------------------------- + +loc_5157: ; 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_5161: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_516A + jmp loc_50DC +; --------------------------------------------------------------------------- + +loc_516A: ; 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_51AE + 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_51AE + cmp dx, 0FFFFh + jnz short loc_51A4 + mov ax, 0FFFFh + jmp short loc_51AC +; --------------------------------------------------------------------------- + +loc_51A4: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_51A7: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_51AC: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_51B1 +; --------------------------------------------------------------------------- + +loc_51AE: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_51B1: ; 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+0E66h], 1 + jz short loc_51CE + mov ax, 5 + push ax + jmp short loc_51EF +; --------------------------------------------------------------------------- + +loc_51CE: ; 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_51EE + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+0E66h], 1000h + pop ax + jmp short loc_51F2 +; --------------------------------------------------------------------------- + +loc_51EE: ; CODE XREF: __rtl_write+26j + push ax + +loc_51EF: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_51F2: ; 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], 0CD4h + jmp short loc_5245 +; --------------------------------------------------------------------------- + +loc_5229: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_523E + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_523E: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_5245: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_5229 + 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_5272 + 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_5290 + +loc_5272: ; 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_5290: ; 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_538B + db 4 dup(0), 8Bh, 53h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 0ACh, 52h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 0B4h, 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_DF80+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, 52C2h + 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, 5348h + 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, 538Bh + 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_538B db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:52ACo + db 0Dh dup(0), 2, 0, 2, 0, 0CDh, 53h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 1Ah, 54h + 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_5414 + 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_5412 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_5416 +; --------------------------------------------------------------------------- + +loc_5412: ; CODE XREF: seg000:5401j + jmp short loc_5416 +; --------------------------------------------------------------------------- + +loc_5414: ; CODE XREF: seg000:53D8j + xor ax, ax + +loc_5416: ; CODE XREF: seg000:5410j + ; seg000:loc_5412j + 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, 0ECh, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0C0h + db 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), 52h, 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, 5460h + 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_54A5 + 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_54F7 + +loc_54A5: ; 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_54E7 + 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_54E7: ; 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_54F7: ; 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_57C0 + 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), 1Dh, 55h + +; =============== 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:32C4p seg000:338Cp ... + +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, 552Bh + 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_5570 + 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_55C6 + +loc_5570: ; 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_55B6 + 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_55B6: ; 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_55C6: ; 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:345Bp seg000:350Ap ... + +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_5646 + 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_5646 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_5646: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_5788 + db 4 dup(0), 4Ah, 56h + 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, 5652h + 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, 5541h + 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, 5788h + 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_57C0 + 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), 0ABh, 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, 56B9h + 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_56F2 + cmp ax, word ptr [bp+arg_4] + jz short loc_5770 + +loc_56F2: ; 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_5760 + 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_5760: ; 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_5770: ; 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_5788 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:564Ao + db 0Dh dup(0), 1, 0, 1, 0, 0ECh, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_57C0 db 4, 0, 10h, 20h, 0Ah, 0, 0D3h, 57h ; DATA XREF: seg000:551Do + ; seg000:56ABo + 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, 7, 3 + dw seg seg003 + 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_5819 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_582D + mov dx, ds + mov ax, 1172h + jmp short loc_583A +; --------------------------------------------------------------------------- + +loc_582D: ; CODE XREF: sub_5819+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_583A: ; CODE XREF: sub_5819+12j + pop di + pop si + pop bp + retf +sub_5819 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_583E proc far ; CODE XREF: sub_58DB+69p + ; sub_58DB+106p ... + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + cmp dx, word ptr [bp+arg_4+2] + jnz short loc_5856 + cmp ax, word ptr [bp+arg_4] + jz short loc_58D2 + +loc_5856: ; CODE XREF: sub_583E+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_58CA + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_58CA + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + or ax, es:[bx+2] + test al, 80h + jnz short loc_58CA + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+4] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_58AC: ; CODE XREF: sub_583E+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_58CE + +loc_58CA: ; CODE XREF: sub_583E+26j sub_583E+34j ... + xor ax, ax + jmp short loc_58D5 +; --------------------------------------------------------------------------- + +loc_58CE: ; CODE XREF: sub_583E+8Aj + or dx, dx + jnz short loc_58AC + +loc_58D2: ; CODE XREF: sub_583E+16j + mov ax, 1 + +loc_58D5: ; CODE XREF: sub_583E+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_583E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_58DB proc near ; CODE XREF: sub_58DB+9Bp + ; sub_58DB+135p ... + +var_A = dword ptr -0Ah +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+0Ch] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_58F6: ; CODE XREF: sub_58DB+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_598A + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_5983 + cmp [bp+arg_C], 0 + jz short loc_5932 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5932 + mov ax, 1 + jmp short loc_5934 +; --------------------------------------------------------------------------- + +loc_5932: ; CODE XREF: sub_58DB+41j sub_58DB+50j + xor ax, ax + +loc_5934: ; CODE XREF: sub_58DB+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_583E + add sp, 8 + or ax, ax + jz short loc_5957 + cmp [bp+var_6], 0 + jz short loc_5957 + jmp loc_5A1A +; --------------------------------------------------------------------------- + +loc_5957: ; CODE XREF: sub_58DB+71j sub_58DB+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5983 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_58DB + add sp, 0Eh + or ax, ax + jz short loc_5983 + jmp loc_5A1A +; --------------------------------------------------------------------------- + +loc_5983: ; CODE XREF: sub_58DB+3Bj sub_58DB+84j ... + add word ptr [bp+var_4], 8 + jmp loc_58F6 +; --------------------------------------------------------------------------- + +loc_598A: ; CODE XREF: sub_58DB+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_599D: ; CODE XREF: sub_58DB+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_5A26 + cmp [bp+arg_C], 0 + jz short loc_59CF + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_59CF + mov ax, 1 + jmp short loc_59D1 +; --------------------------------------------------------------------------- + +loc_59CF: ; CODE XREF: sub_58DB+DEj sub_58DB+EDj + xor ax, ax + +loc_59D1: ; CODE XREF: sub_58DB+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_583E + add sp, 8 + or ax, ax + jz short loc_59F1 + cmp [bp+var_6], 0 + jnz short loc_5A1A + +loc_59F1: ; CODE XREF: sub_58DB+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5A1F + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_58DB + add sp, 0Eh + or ax, ax + jz short loc_5A1F + +loc_5A1A: ; CODE XREF: sub_58DB+79j sub_58DB+A5j ... + mov ax, 1 + jmp short loc_5A28 +; --------------------------------------------------------------------------- + +loc_5A1F: ; CODE XREF: sub_58DB+11Ej + ; sub_58DB+13Dj + add word ptr [bp+var_4], 8 + jmp loc_599D +; --------------------------------------------------------------------------- + +loc_5A26: ; CODE XREF: sub_58DB+D8j + xor ax, ax + +loc_5A28: ; CODE XREF: sub_58DB+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_58DB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5A2E proc near ; CODE XREF: sub_5C37+1Dp sub_5C37+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_5A39: ; CODE XREF: sub_5A2E+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_5A4C + cmp ax, word ptr [bp+arg_4] + jnz short loc_5A4C + jmp loc_5B61 +; --------------------------------------------------------------------------- + +loc_5A4C: ; CODE XREF: sub_5A2E+14j sub_5A2E+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_5ADC + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_5A7F + jmp loc_5B22 +; --------------------------------------------------------------------------- + +loc_5A7F: ; CODE XREF: sub_5A2E+4Cj + or cx, cx + jz short loc_5A86 + jmp loc_5B9A +; --------------------------------------------------------------------------- + +loc_5A86: ; CODE XREF: sub_5A2E+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_5ABC + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_5AAA + jmp loc_5B9A +; --------------------------------------------------------------------------- + +loc_5AAA: ; CODE XREF: sub_5A2E+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_5B22 + +loc_5ABC: ; CODE XREF: sub_5A2E+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_5AD0 + jmp loc_5B9A +; --------------------------------------------------------------------------- + +loc_5AD0: ; CODE XREF: sub_5A2E+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_5AD9 + jmp loc_5B9A +; --------------------------------------------------------------------------- + +loc_5AD9: ; CODE XREF: sub_5A2E+A6j + jmp loc_5B61 +; --------------------------------------------------------------------------- + +loc_5ADC: ; CODE XREF: sub_5A2E+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_5B4A + les bx, [bp+arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+arg_4] + cmp dx, es:[bx+0Ch] + jnz short loc_5B01 + cmp ax, es:[bx+0Ah] + jz short loc_5B22 + +loc_5B01: ; CODE XREF: sub_5A2E+CBj + or cx, cx + jz short loc_5B08 + jmp loc_5B9A +; --------------------------------------------------------------------------- + +loc_5B08: ; CODE XREF: sub_5A2E+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_5B9A + +loc_5B22: ; CODE XREF: sub_5A2E+4Ej sub_5A2E+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_5A39 +; --------------------------------------------------------------------------- + +loc_5B4A: ; CODE XREF: sub_5A2E+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_583E + add sp, 8 + or ax, ax + jz short loc_5B66 + +loc_5B61: ; CODE XREF: sub_5A2E+1Bj + ; sub_5A2E:loc_5AD9j + mov ax, 1 + jmp short loc_5B9C +; --------------------------------------------------------------------------- + +loc_5B66: ; CODE XREF: sub_5A2E+131j + test byte ptr [bp+var_2], 2 + jz short loc_5B9A + test byte ptr [bp+var_4], 1 + jz short loc_5B9A + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_5B9A + mov ax, 1 + push ax + push [bp+arg_C] + push [bp+arg_A] + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_58DB + add sp, 0Eh + jmp short loc_5B9C +; --------------------------------------------------------------------------- + +loc_5B9A: ; CODE XREF: sub_5A2E+55j sub_5A2E+79j ... + xor ax, ax + +loc_5B9C: ; CODE XREF: sub_5A2E+136j + ; sub_5A2E+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_5A2E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5BA2 proc far ; CODE XREF: sub_6361+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_3C88 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+var_4] + or ax, [bp+var_2] + jnz short loc_5BF2 + cmp [bp+arg_0], 80h ; '€' + ja short loc_5BD4 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_5BD9 + +loc_5BD4: ; CODE XREF: sub_5BA2+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_5BD9: ; CODE XREF: sub_5BA2+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_5BF8 +; --------------------------------------------------------------------------- + +loc_5BF2: ; CODE XREF: sub_5BA2+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_5BF8: ; CODE XREF: sub_5BA2+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5BA2 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + cmp dx, [bp+8] + jnz short loc_5C26 + cmp ax, [bp+6] + jnz short loc_5C26 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_5C33 +; --------------------------------------------------------------------------- + +loc_5C26: ; CODE XREF: seg000:5C13j seg000:5C18j + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + +loc_5C33: ; CODE XREF: seg000:5C24j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5C37 proc near ; CODE XREF: sub_74C8+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_5A2E + add sp, 0Eh + or ax, ax + jz short loc_5C61 + jmp loc_5CFD +; --------------------------------------------------------------------------- + +loc_5C61: ; CODE XREF: sub_5C37+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_5CF1 + push [bp+arg_6] + push [bp+arg_4] + mov ax, 1 + push ax + les bx, [bp+arg_8] + push word ptr es:[bx+8] + push word ptr es:[bx+6] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5A2E + add sp, 0Eh + or ax, ax + jnz short loc_5CFD + les bx, [bp+arg_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+arg_8+2], dx + mov word ptr [bp+arg_8], ax + les bx, [bp+arg_8] + mov ax, es:[bx+2] + mov [bp+var_4], ax + test byte ptr [bp+var_4], 10h + jz short loc_5D34 + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_8+2] + push word ptr [bp+arg_8] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5A2E + add sp, 0Eh + or ax, ax + jnz short loc_5CFD + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_5D34 + +loc_5CF1: ; CODE XREF: sub_5C37+42j + test byte ptr [bp+var_4], 10h + jz short loc_5D34 + test [bp+arg_C], 1 + jz short loc_5D02 + +loc_5CFD: ; CODE XREF: sub_5C37+27j sub_5C37+67j ... + mov ax, 1 + jmp short loc_5D36 +; --------------------------------------------------------------------------- + +loc_5D02: ; CODE XREF: sub_5C37+C4j + test byte ptr [bp+var_2], 10h + jz short loc_5D34 + test byte ptr [bp+var_2+1], 20h + jz short loc_5D14 + test byte ptr [bp+var_4+1], 20h + jz short loc_5D34 + +loc_5D14: ; CODE XREF: sub_5C37+D5j + test byte ptr [bp+var_4], 40h + jz short loc_5D34 + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_5D30 + mov ax, 1 + jmp short loc_5D32 +; --------------------------------------------------------------------------- + +loc_5D30: ; CODE XREF: sub_5C37+F2j + xor ax, ax + +loc_5D32: ; CODE XREF: sub_5C37+F7j + jmp short loc_5D36 +; --------------------------------------------------------------------------- + +loc_5D34: ; CODE XREF: sub_5C37+88j sub_5C37+B8j ... + xor ax, ax + +loc_5D36: ; CODE XREF: sub_5C37+C9j + ; sub_5C37:loc_5D32j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5C37 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5D3C proc near ; CODE XREF: sub_6361+263p + ; sub_700D+1FDp + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = dword ptr 0Ch +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+var_2], ax + push ds + mov ds, [bp+var_2] + mov ax, [bp+arg_C] + and ax, 1 + mov [bp+var_4], ax + test byte ptr [bp+arg_C], 4 + jz short loc_5D67 + or [bp+var_4], 2 + +loc_5D67: ; CODE XREF: sub_5D3C+25j + test byte ptr [bp+arg_C], 2 + jz short loc_5D7B + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_5D7B + or [bp+var_4], 20h + +loc_5D7B: ; CODE XREF: sub_5D3C+2Fj sub_5D3C+39j + test byte ptr [bp+arg_C], 20h + jz short loc_5D85 + or [bp+var_4], 8 + +loc_5D85: ; CODE XREF: sub_5D3C+43j + test byte ptr [bp+arg_C], 80h + jz short loc_5D8F + or [bp+var_4], 10h + +loc_5D8F: ; CODE XREF: sub_5D3C+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_5D98 + jmp loc_5F1D +; --------------------------------------------------------------------------- + +loc_5D98: ; CODE XREF: sub_5D3C+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_5DA3 + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5DA3: ; CODE XREF: sub_5D3C+62j + add bx, bx + jmp cs:off_605A[bx] + +loc_5DAA: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:off_605Ao + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5DBC: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_6023 +; --------------------------------------------------------------------------- + +loc_5DCE: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5DF4 +; --------------------------------------------------------------------------- + +loc_5DE2: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_5DF4: ; CODE XREF: sub_5D3C+A4j + add sp, 0Ah + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5DFA: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E09: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E18: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5E3E +; --------------------------------------------------------------------------- + +loc_5E2C: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_5E3E: ; CODE XREF: sub_5D3C+EEj + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E41: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E51: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_5E59: ; CODE XREF: sub_5D3C+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E61: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_5E6F: ; CODE XREF: sub_5D3C+263j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5E85 +; --------------------------------------------------------------------------- + +loc_5E74: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_5E82: ; CODE XREF: sub_5D3C+272j + call [bp+arg_8] + +loc_5E85: ; CODE XREF: sub_5D3C+136j + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5E88: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5EA2 +; --------------------------------------------------------------------------- + +loc_5E96: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_5E9F: ; CODE XREF: sub_5D3C+205j + call [bp+arg_8] + +loc_5EA2: ; CODE XREF: sub_5D3C+158j + ; sub_5D3C+1FCj + pop cx + pop cx + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5EA7: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + pop ds + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5EBE: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_6023 +; --------------------------------------------------------------------------- + +loc_5ED5: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_5EDE: ; CODE XREF: sub_5D3C+234j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5EEF +; --------------------------------------------------------------------------- + +loc_5EE3: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_5EEC: ; CODE XREF: sub_5D3C+23Dj + call [bp+arg_8] + +loc_5EEF: ; CODE XREF: sub_5D3C+1A5j + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5EF2: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5F06: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+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_6023 +; --------------------------------------------------------------------------- + +loc_5F1A: ; CODE XREF: sub_5D3C+69j + ; sub_5D3C+1EEj + ; DATA XREF: ... + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5F1D: ; CODE XREF: sub_5D3C+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_5F28 + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5F28: ; CODE XREF: sub_5D3C+1E7j + add bx, bx + jmp cs:off_602A[bx] + +loc_5F2F: ; DATA XREF: seg000:off_602Ao + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_5EA2 +; --------------------------------------------------------------------------- + +loc_5F3B: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:602Co + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5E9F +; --------------------------------------------------------------------------- + +loc_5F44: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:602Eo + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_5F64 +; --------------------------------------------------------------------------- + +loc_5F55: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6030o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_8] + +loc_5F64: ; CODE XREF: sub_5D3C+217j + add sp, 8 + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5F6A: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6032o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5EDE +; --------------------------------------------------------------------------- + +loc_5F73: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6034o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_5EEC +; --------------------------------------------------------------------------- + +loc_5F7C: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:603Ao + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6023 +; --------------------------------------------------------------------------- + +loc_5F8A: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:603Co + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_5E59 +; --------------------------------------------------------------------------- + +loc_5F93: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6036o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_5E6F +; --------------------------------------------------------------------------- + +loc_5FA2: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6038o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_5E82 +; --------------------------------------------------------------------------- + +loc_5FB1: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:604Ao + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_5FBD: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:604Co + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_5FC9: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:604Eo + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + pop cx + pop ds + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_5FDB: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6050o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_5FED: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6052o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_5FF8: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6054o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_6003: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6056o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp short loc_6023 +; --------------------------------------------------------------------------- + +loc_6013: ; CODE XREF: sub_5D3C+1EEj + ; DATA XREF: seg000:6058o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop ds + jmp short $+2 + +loc_6023: ; CODE XREF: sub_5D3C+64j sub_5D3C+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_5D3C endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_602A dw offset loc_5F2F ; DATA XREF: sub_5D3C+1EEr + dw offset loc_5F3B + dw offset loc_5F44 + dw offset loc_5F55 + dw offset loc_5F6A + dw offset loc_5F73 + dw offset loc_5F93 + dw offset loc_5FA2 + dw offset loc_5F7C + dw offset loc_5F8A + dw offset loc_5F93 + dw offset loc_5FA2 + dw offset loc_6023 + dw offset loc_6023 + dw offset loc_6023 + dw offset loc_6023 + dw offset loc_5FB1 + dw offset loc_5FBD + dw offset loc_5FC9 + dw offset loc_5FDB + dw offset loc_5FED + dw offset loc_5FF8 + dw offset loc_6003 + dw offset loc_6013 +off_605A dw offset loc_5DAA ; DATA XREF: sub_5D3C+69r + dw offset loc_5DBC + dw offset loc_5DCE + dw offset loc_5DE2 + dw offset loc_5DFA + dw offset loc_5E09 + dw offset loc_5E18 + dw offset loc_5E2C + dw offset loc_5E41 + dw offset loc_5E51 + dw offset loc_5E61 + dw offset loc_5E74 + dw offset loc_5F1A + dw offset loc_5F1A + dw offset loc_5F1A + dw offset loc_5F1A + dw offset loc_5E88 + dw offset loc_5E96 + dw offset loc_5EA7 + dw offset loc_5EBE + dw offset loc_5ED5 + dw offset loc_5EE3 + dw offset loc_5EF2 + dw offset loc_5F06 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_608A proc near ; CODE XREF: sub_6361+2BCp + ; sub_6D19+2Bp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp [bp+arg_A], 0 + jz short loc_609D + mov ax, 2 + jmp short loc_609F +; --------------------------------------------------------------------------- + +loc_609D: ; CODE XREF: sub_608A+Cj + xor ax, ax + +loc_609F: ; CODE XREF: sub_608A+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_60C5 + or [bp+var_6], 2 + +loc_60C5: ; CODE XREF: sub_608A+35j + test byte ptr [bp+arg_8], 2 + jz short loc_60D9 + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_60D9 + or [bp+var_6], 20h + +loc_60D9: ; CODE XREF: sub_608A+3Fj sub_608A+49j + test byte ptr [bp+arg_8], 20h + jz short loc_60E3 + or [bp+var_6], 8 + +loc_60E3: ; CODE XREF: sub_608A+53j + test byte ptr [bp+arg_8], 80h + jz short loc_60ED + or [bp+var_6], 10h + +loc_60ED: ; CODE XREF: sub_608A+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_60F8 + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_60F8: ; CODE XREF: sub_608A+69j + add bx, bx + jmp cs:off_6212[bx] + +loc_60FF: ; DATA XREF: seg000:off_6212o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_610D: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6214o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_611B: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6216o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + add sp, 6 + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_612D: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6218o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + add sp, 6 + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_613F: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:621Ao + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_61A5 +; --------------------------------------------------------------------------- + +loc_614A: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:621Co + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_61A2 +; --------------------------------------------------------------------------- + +loc_6152: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:621Eo + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_616C +; --------------------------------------------------------------------------- + +loc_6160: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6220o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_616C: ; CODE XREF: sub_608A+D4j + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_616F: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6222o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_617D: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6224o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_620B +; --------------------------------------------------------------------------- + +loc_618B: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6226o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_61A5 +; --------------------------------------------------------------------------- + +loc_6199: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6228o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_61A2: ; CODE XREF: sub_608A+C6j + call [bp+arg_4] + +loc_61A5: ; CODE XREF: sub_608A+BEj + ; sub_608A+10Dj + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61A7: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6232o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61B3: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6234o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61BF: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6236o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop ds + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61CD: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6238o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61DB: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:623Ao + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61E6: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:623Co + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61F1: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:623Eo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_620B +; --------------------------------------------------------------------------- + +loc_61FE: ; CODE XREF: sub_608A+70j + ; DATA XREF: seg000:6240o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_620B: ; CODE XREF: sub_608A+6Bj sub_608A+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_608A endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_6212 dw offset loc_60FF ; DATA XREF: sub_608A+70r + dw offset loc_610D + dw offset loc_611B + dw offset loc_612D + dw offset loc_613F + dw offset loc_614A + dw offset loc_6152 + dw offset loc_6160 + dw offset loc_616F + dw offset loc_617D + dw offset loc_618B + dw offset loc_6199 + dw offset loc_620B + dw offset loc_620B + dw offset loc_620B + dw offset loc_620B + dw offset loc_61A7 + dw offset loc_61B3 + dw offset loc_61BF + dw offset loc_61CD + dw offset loc_61DB + dw offset loc_61E6 + dw offset loc_61F1 + dw offset loc_61FE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6242 proc near ; CODE XREF: sub_7E89+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_626D + or [bp+var_4], 2 + +loc_626D: ; CODE XREF: sub_6242+25j + test byte ptr [bp+arg_8], 2 + jz short loc_6277 + or [bp+var_4], 4 + +loc_6277: ; CODE XREF: sub_6242+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_6281 + or [bp+var_4], 8 + +loc_6281: ; CODE XREF: sub_6242+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_62F4 + add bx, bx + jmp cs:off_62FB[bx] + +loc_6290: ; DATA XREF: seg000:off_62FBo + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_6299: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:62FDo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_62A2: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:62FFo + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62B6 +; --------------------------------------------------------------------------- + +loc_62AD: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:6301o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_62B6: ; CODE XREF: sub_6242+69j + pop cx + pop cx + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_62BA: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:6303o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62C8 +; --------------------------------------------------------------------------- + +loc_62C2: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:6305o + push [bp+arg_0] + call [bp+arg_4] + +loc_62C8: ; CODE XREF: sub_6242+7Ej + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_62CA: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:630Bo + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_62D4: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:630Do + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_62F4 +; --------------------------------------------------------------------------- + +loc_62DE: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:6307o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_62F2 +; --------------------------------------------------------------------------- + +loc_62E9: ; CODE XREF: sub_6242+49j + ; DATA XREF: seg000:6309o ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_62F2: ; CODE XREF: sub_6242+A5j + jmp short $+2 + +loc_62F4: ; CODE XREF: sub_6242+45j sub_6242+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6242 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_62FB dw offset loc_6290 ; DATA XREF: sub_6242+49r + dw offset loc_6299 + dw offset loc_62A2 + dw offset loc_62AD + dw offset loc_62BA + dw offset loc_62C2 + dw offset loc_62DE + dw offset loc_62E9 + dw offset loc_62CA + dw offset loc_62D4 + dw offset loc_62DE + dw offset loc_62E9 + db 4 dup(0), 0D1h, 65h + dw seg seg000 + db 14h dup(0), 2Ah, 66h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 13h, 63h + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 2Bh, 63h + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_6361(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_6361 proc far ; 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, 6343h + 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_63ED +; --------------------------------------------------------------------------- + +loc_63CA: ; CODE XREF: sub_6361+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_63EA + les bx, [bp+var_34] + mov al, es:[bx] + les bx, [bp+var_38] + mov es:[bx], al + inc word ptr [bp+var_38] + +loc_63EA: ; CODE XREF: sub_6361+78j + inc word ptr [bp+var_34] + +loc_63ED: ; CODE XREF: sub_6361+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_63CA + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + les bx, [bp+var_22] + mov ax, es:[bx] + mov [bp+n], ax + les bx, [bp+var_22] + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_644A + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_644C +; --------------------------------------------------------------------------- + +loc_644A: ; CODE XREF: sub_6361+DEj + xor ax, ax + +loc_644C: ; CODE XREF: sub_6361+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_6466 + les bx, [bp+var_26] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + +loc_6466: ; CODE XREF: sub_6361+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_5BA2 + pop cx + mov word ptr [bp+var_30+2], dx + mov word ptr [bp+var_30], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + mov es:[bx+0Ch], ax + les bx, [bp+var_30] + mov ax, [bp+n] + mov es:[bx+0Eh], ax + les bx, [bp+var_30] + mov ax, [bp+var_2A] + mov es:[bx+14h], ax + les bx, [bp+var_30] + mov ax, [bp+var_2C] + mov es:[bx+16h], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_26+2] + mov ax, word ptr [bp+var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, [bp+var_30] + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, [bp+var_30] + mov word ptr es:[bx+24h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+18h], ds + les bx, [bp+var_30] + mov word ptr es:[bx+1Ch], seg seg000 + mov word ptr es:[bx+1Ah], 5BFEh + les bx, [bp+var_30] + mov ax, [bp+arg_14] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_10] + mov es:[bx+22h], ax + les bx, [bp+var_30] + mov byte ptr es:[bx+39h], 0 + les bx, [bp+var_30] + mov byte ptr es:[bx+38h], 1 + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_65F0 + 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_5D3C + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_65DB +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_65DB: ; CODE XREF: sub_6361+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_65F0: ; CODE XREF: sub_6361+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_6634 + test byte ptr [bp+var_2C], 2 + jz short loc_6634 + mov [bp+var_12], 12h + mov ax, 1 + push ax + les bx, [bp+var_22] + push word ptr es:[bx+22h] + les bx, [bp+var_22] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_608A + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6634 +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6634: ; CODE XREF: sub_6361+293j + ; sub_6361+299j ... + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+var_46], dx + mov [bp+var_48], ax + mov dx, [bp+arg_1C] + mov ax, [bp+arg_1A] + mov [bp+var_42], dx + mov [bp+var_44], ax + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov [bp+var_3E], dx + mov [bp+var_40], ax + push ss + lea ax, [bp+var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nop + push cs + call near ptr _RaiseException + add sp, 10h + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_6361 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:32EEp + ; xalloc::raise(void)+6Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], bp + mov bx, [bp+var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + xor ax, ax + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_18] ; int + push [bp+arg_16] ; int + push [bp+arg_14] ; int + push [bp+arg_12] ; int + push [bp+arg_10] ; int + push [bp+arg_E] ; int + push [bp+arg_C] ; int + push [bp+arg_A] ; int + push [bp+arg_8] ; int + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push [bp+arg_2] ; int + push [bp+arg_0] ; int + push cs + call near ptr sub_6361 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ThrowException$qnvt1t1t1uiuiuinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _ReThrowException(unsigned int, unsigned char *) +@_ReThrowException$quinuc proc far + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+var_A], bp + mov bx, [bp+var_A] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, word ptr [bp+var_8] + or ax, word ptr [bp+var_8+2] + jnz short loc_6724 + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_6724: ; 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_6770 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_6779 +; --------------------------------------------------------------------------- + +loc_6770: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_6779: ; 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_6361 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ReThrowException$quinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_6793 proc far ; CODE XREF: sub_6798+22p + push si + push di + pop di + pop si + retf +sub_6793 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6798 proc far ; 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_67B2 + inc [bp+var_4] + +loc_67B2: ; CODE XREF: sub_6798+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_6793 + jmp short loc_6800 +; --------------------------------------------------------------------------- + +loc_67BF: ; CODE XREF: sub_6798+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_67EA + mov ax, dx + jmp short loc_681E +; --------------------------------------------------------------------------- + +loc_67EA: ; CODE XREF: sub_6798+4Cj + cmp [bp+var_4], 0 + jz short loc_67F7 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_67F7: ; CODE XREF: sub_6798+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_6800: ; CODE XREF: sub_6798+25j + cmp [bp+var_2], 0FFFFh + jz short loc_680E + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_67BF + +loc_680E: ; CODE XREF: sub_6798+6Cj + cmp [bp+var_4], 0 + jz short loc_681B + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_681B: ; CODE XREF: sub_6798+7Aj + mov ax, 1 + +loc_681E: ; CODE XREF: sub_6798+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_6798 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Global_unwind proc far ; 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_684F + mov [bp+var_4A], 0 + mov [bp+var_4C], 26h ; '&' + mov [bp+var_46], 0 + mov [bp+var_48], 2 + mov [bp+var_3E], 0 + lea dx, [bp+var_4C] + +loc_684F: ; 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_6798 + add sp, 8 + pop di + pop si + mov sp, bp + pop bp + retf +__Global_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_686B proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_686B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_6361+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 6CE2 SIZE 0000000D BYTES + + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, sp + sub sp, 186h + lea ax, [bp+var_86] + push ax + push cs + call near ptr sub_686B + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_F51E, 3 + jnb short loc_6899 + jmp loc_694F +; --------------------------------------------------------------------------- + +loc_6899: ; 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_6998 +; --------------------------------------------------------------------------- + +loc_694F: ; 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_6998: ; 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_69C9 + cmp [bp+arg_0], 0FACEh + jnz short loc_69C9 + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_69D7 +; --------------------------------------------------------------------------- + +loc_69C9: ; 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_69D7: ; 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_6AA8 + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_6AA8: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_6AC0 + ja short loc_6AB6 + cmp [bp+arg_8], 0Fh + jbe short loc_6AC0 + +loc_6AB6: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_6AC0: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_6AF6 +; --------------------------------------------------------------------------- + +loc_6ACD: ; 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_6AF6: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_6ACD + jnz short loc_6B07 + cmp ax, [bp+arg_8] + jb short loc_6ACD + +loc_6B07: ; 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_6798 + add sp, 8 + or ax, ax + jnz short loc_6B52 + test byte ptr [bp+arg_4], 1 + jz short loc_6B72 + mov [bp+var_54], 0C000h + mov [bp+var_56], 25h ; '%' + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov [bp+var_50], dx + mov [bp+var_52], ax + mov [bp+var_4A], 0 + mov [bp+var_4C], 0 + mov [bp+var_4E], 0 + mov [bp+var_48], 0 + jmp short loc_6B07 +; --------------------------------------------------------------------------- + +loc_6B52: ; 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_6798 + add sp, 8 + or ax, ax + jz short loc_6B72 + jmp loc_6CDD +; --------------------------------------------------------------------------- + +loc_6B72: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_F51E, 3 + jnb short loc_6B7C + jmp loc_6C5C +; --------------------------------------------------------------------------- + +loc_6B7C: ; 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_6CE2 +; --------------------------------------------------------------------------- + +loc_6C5C: ; 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_6CE2 +; --------------------------------------------------------------------------- + +loc_6CDD: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_6CE2: ; 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), 51h, 6Dh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0EFh, 6Ch + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6D19 proc near ; CODE XREF: sub_6D69+58p sub_6D69+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, 6D07h + 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_608A + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6D5B +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6D5B: ; CODE XREF: sub_6D19+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_6D19 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6D69 proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_72B3+138p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + cmp byte ptr es:[bx+38h], 0 + jz short loc_6DE4 + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_6DDC + 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_6D19 + 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_6DDC: ; CODE XREF: sub_6D69+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_6DE4: ; CODE XREF: sub_6D69+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_6E3B + les bx, [bp+arg_0] + mov dx, es:[bx+34h] + mov ax, es:[bx+32h] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + test byte ptr es:[bx+2], 2 + jz short loc_6E33 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_6E33 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push ss + les bx, [bp+arg_0] + push word ptr es:[bx+36h] + call sub_6D19 + add sp, 0Ah + +loc_6E33: ; CODE XREF: sub_6D69+9Ej sub_6D69+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_6E3B: ; CODE XREF: sub_6D69+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_6D69 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _CatchCleanup(void) +@_CatchCleanup$qv proc far ; CODE XREF: ___call_terminate+69p + ; sub_6361+277p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_4] + mov ax, es:[bx+24h] + mov [bp+var_6], ax + mov bx, [bp+var_6] + les ax, ss:[bx+arg_0] + mov bx, [bp+var_6] + add ax, ss:[bx+arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+var_6] + mov ss:[bx+arg_6], ax + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + call sub_6D69 + pop cx + pop cx + push ds + les bx, [bp+var_4] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + les bx, [bp+var_4] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + pop di + pop si + mov sp, bp + pop bp + retf +@_CatchCleanup$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6EBE proc near ; CODE XREF: sub_6EBE+A0p sub_6F8A+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_6EC6: ; CODE XREF: sub_6EBE+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_6EE3 + xor ax, ax + jmp loc_6F84 +; --------------------------------------------------------------------------- + +loc_6EE3: ; CODE XREF: sub_6EBE+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_6F0F + les bx, [bp+var_8] + mov ax, es:[bx] + mov dx, word ptr [bp+var_8+2] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_6F0F: ; CODE XREF: sub_6EBE+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_583E + add sp, 8 + or ax, ax + jnz short loc_6F68 + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_6F7D + les bx, [bp+var_4] + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + add ax, es:[bx+0Ah] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_C] + or ax, [bp+var_A] + jz short loc_6F7D + lea ax, [bp+var_8] + push ax + push [bp+arg_8] + push [bp+arg_6] + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + call sub_6EBE + add sp, 0Ch + or ax, ax + jz short loc_6F7D + +loc_6F68: ; CODE XREF: sub_6EBE+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_6F84 +; --------------------------------------------------------------------------- + +loc_6F7D: ; CODE XREF: sub_6EBE+70j sub_6EBE+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_6EC6 +; --------------------------------------------------------------------------- + +loc_6F84: ; CODE XREF: sub_6EBE+22j sub_6EBE+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_6EBE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6F8A proc far ; CODE XREF: sub_700D+159p + ; sub_700D+1C2p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_6FFB + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + xor ax, ax + push ax + push [bp+var_2] + push [bp+var_4] + call sub_6EBE + add sp, 0Ch + or ax, ax + jnz short loc_6FFB + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ch] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + mov ax, 1 + push ax + push [bp+var_2] + push [bp+var_4] + call sub_6EBE + add sp, 0Ch + or ax, ax + jz short loc_7003 + +loc_6FFB: ; CODE XREF: sub_6F8A+Ej sub_6F8A+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_7007 +; --------------------------------------------------------------------------- + +loc_7003: ; CODE XREF: sub_6F8A+6Fj + xor dx, dx + xor ax, ax + +loc_7007: ; CODE XREF: sub_6F8A+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_6F8A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_700D proc near ; 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_703C + jmp loc_72AD +; --------------------------------------------------------------------------- + +loc_703C: ; CODE XREF: sub_700D+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_7049 + jmp loc_72AD +; --------------------------------------------------------------------------- + +loc_7049: ; CODE XREF: sub_700D+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_70BD + les bx, [bp+var_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov dx, es:[bx+2] + +loc_70BD: ; CODE XREF: sub_700D+96j + test cl, 10h + jz short loc_70E5 + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_70E5 + push [bp+n] ; n + xor ax, ax + push ax ; c + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; s + nop + push cs + call near ptr _memset + add sp, 8 + jmp loc_7210 +; --------------------------------------------------------------------------- + +loc_70E5: ; CODE XREF: sub_700D+B3j sub_700D+BDj + test dl, 1 + jnz short loc_70ED + jmp loc_7191 +; --------------------------------------------------------------------------- + +loc_70ED: ; CODE XREF: sub_700D+DBj + test cl, 30h + jnz short loc_70F5 + jmp loc_7191 +; --------------------------------------------------------------------------- + +loc_70F5: ; CODE XREF: sub_700D+E3j + test cl, 20h + jz short loc_70FC + jmp short loc_711F +; --------------------------------------------------------------------------- + +loc_70FC: ; CODE XREF: sub_700D+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_7126 + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_711F: ; CODE XREF: sub_700D+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_7126: ; CODE XREF: sub_700D+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_583E + add sp, 8 + or ax, ax + jnz short loc_7187 + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + mov [bp+var_16], dx + mov [bp+var_18], ax + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_6F8A + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + cmp dx, [bp+var_16] + jnz short loc_7182 + cmp ax, [bp+var_18] + jz short loc_7187 + +loc_7182: ; CODE XREF: sub_700D+16Ej + mov [bp+var_14], 1 + +loc_7187: ; CODE XREF: sub_700D+133j + ; sub_700D+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_725B +; --------------------------------------------------------------------------- + +loc_7191: ; CODE XREF: sub_700D+DDj sub_700D+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_7217 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push cs + call near ptr sub_583E + add sp, 8 + or ax, ax + jnz short loc_71E0 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_6F8A + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_71E0: ; CODE XREF: sub_700D+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_725E + les bx, [bp+arg_0] + push word ptr es:[bx+0Eh] + les bx, [bp+arg_0] + push word ptr es:[bx+0Ch] + push word ptr es:[bx+0Ah] + push word ptr [bp+src+2] + push word ptr [bp+src] + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] + call sub_5D3C + add sp, 0Eh + +loc_7210: ; CODE XREF: sub_700D+D5j + ; sub_700D+227j + mov [bp+var_14], 1 + jmp short loc_7277 +; --------------------------------------------------------------------------- + +loc_7217: ; CODE XREF: sub_700D+18Cj + test cl, 20h + jz short loc_7236 + push [bp+n] ; n + push ss + lea ax, [bp+src] + push ax ; src + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + jmp short loc_7210 +; --------------------------------------------------------------------------- + +loc_7236: ; CODE XREF: sub_700D+20Dj + test cl, 10h + jz short loc_725E + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_725E + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_10], ds + mov [bp+var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+var_12] + +loc_725B: ; CODE XREF: sub_700D+181j + push ax + jmp short loc_7267 +; --------------------------------------------------------------------------- + +loc_725E: ; CODE XREF: sub_700D+1DBj + ; sub_700D+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_7267: ; CODE XREF: sub_700D+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_7277: ; CODE XREF: sub_700D+208j + cmp [bp+var_14], 0 + jnz short loc_72AD + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_72A5 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_6D19 + add sp, 0Ah + +loc_72A5: ; CODE XREF: sub_700D+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_72AD: ; CODE XREF: sub_700D+2Cj sub_700D+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_700D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_72B3 proc near ; 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_7458 +; --------------------------------------------------------------------------- + +loc_730B: ; CODE XREF: sub_72B3+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_7346 + jmp loc_7455 +; --------------------------------------------------------------------------- + +loc_7346: ; CODE XREF: sub_72B3+8Ej + add bx, bx + jmp cs:off_7472[bx] + +loc_734D: ; DATA XREF: seg000:off_7472o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_10C66+2, dx + mov word ptr dword_10C66, ax + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 1 + push ds + pop es + assume es:dseg + push ds + mov ds, [bp+var_C] + push bp + mov bp, [bp+var_A] + call es:dword_10C66 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_7455 +; --------------------------------------------------------------------------- + +loc_7388: ; CODE XREF: sub_72B3+95j + ; DATA XREF: seg000:747Ao + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_73B7 +; --------------------------------------------------------------------------- + +loc_7397: ; CODE XREF: sub_72B3+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_73B1 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_73B1 + jmp short loc_73D1 +; --------------------------------------------------------------------------- + +loc_73B1: ; CODE XREF: sub_72B3+EEj sub_72B3+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_73B7: ; CODE XREF: sub_72B3+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_7397 + +loc_73D1: ; CODE XREF: sub_72B3+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_6D69 + pop cx + pop cx + push ds + les bx, [bp+var_16] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_16+2] + push word ptr [bp+var_16] + les bx, [bp+var_16] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + jmp short loc_7455 +; --------------------------------------------------------------------------- + +loc_740A: ; CODE XREF: sub_72B3+95j + ; DATA XREF: seg000:747Co + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1C], ax + add [bp+var_12], 2 + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1E], ds + mov [bp+var_20], ax + mov ax, word ptr [bp+var_4+2] + mov dx, [bp+var_20] + mov [bp+var_1E], ax + mov [bp+var_20], dx + push [bp+var_A] + push [bp+arg_0] + mov ax, [bp+var_1C] + add ax, [bp+var_E] + cwd + push dx + push ax + push [bp+var_1E] + push [bp+var_20] + call sub_7E89 + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_7455: ; CODE XREF: sub_72B3+90j sub_72B3+95j ... + mov ax, [bp+var_8] + +loc_7458: ; CODE XREF: sub_72B3+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_746C + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_746C + jmp loc_730B +; --------------------------------------------------------------------------- + +loc_746C: ; CODE XREF: sub_72B3+1ACj + ; sub_72B3+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_72B3 endp + +; --------------------------------------------------------------------------- +off_7472 dw offset loc_734D ; DATA XREF: sub_72B3+95r + dw offset loc_7455 + dw offset loc_7455 + dw offset loc_7455 + dw offset loc_7388 + dw offset loc_740A + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Local_unwind proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + push [bp+arg_0] + push [bp+var_2] + call sub_72B3 + pop cx + pop cx + pop di + pop si + mov sp, bp + pop bp + retf +__Local_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Return_unwind proc far + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + xor ax, ax + push ax + push [bp+var_2] + call sub_72B3 + pop cx + pop cx + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov ss:14h, ax + pop di + pop si + mov sp, bp + pop bp + retf +__Return_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_74C8 proc near ; 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_7536 +; --------------------------------------------------------------------------- + +loc_74E1: ; CODE XREF: sub_74C8+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_752A + xor ax, ax + push ax + les bx, [bp+arg_4] + push word ptr es:[bx+0Ch] + push [bp+var_6] + push [bp+var_8] + les bx, [bp+arg_4] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call sub_5C37 + add sp, 10h + or ax, ax + jz short loc_7532 + +loc_752A: ; CODE XREF: sub_74C8+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_7546 +; --------------------------------------------------------------------------- + +loc_7532: ; CODE XREF: sub_74C8+60j + add word ptr [bp+var_4], 10h + +loc_7536: ; CODE XREF: sub_74C8+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_74E1 + xor dx, dx + xor ax, ax + +loc_7546: ; CODE XREF: sub_74C8+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_74C8 endp + +; --------------------------------------------------------------------------- + db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__ExceptionHandler proc far ; 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_75E0 + jmp loc_7688 +; --------------------------------------------------------------------------- + +loc_75E0: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_72B3 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_75F9 + jmp loc_78BB +; --------------------------------------------------------------------------- + +loc_75F9: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_7603 + jmp loc_78BB +; --------------------------------------------------------------------------- + +loc_7603: ; 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_761E + jmp loc_78BB +; --------------------------------------------------------------------------- + +loc_761E: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_765C +; --------------------------------------------------------------------------- + +loc_7620: ; 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_5C37 + add sp, 10h + or ax, ax + jz short loc_7658 + jmp loc_78BB +; --------------------------------------------------------------------------- + +loc_7658: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_765C: ; CODE XREF: __ExceptionHandler:loc_761Ej + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7620 + mov ax, ss:14h + mov word ptr [bp+var_24+2], ax + mov bx, [bp+var_4] + mov ax, ss:[bx] + mov ss:14h, ax + nop + push cs + call near ptr ___call_unexpected +; --------------------------------------------------------------------------- + mov ax, word ptr [bp+var_24+2] + mov ss:14h, ax + jmp loc_78BB +; --------------------------------------------------------------------------- + +loc_7688: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_78AF +; --------------------------------------------------------------------------- + +loc_7692: ; 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_76C3 + jmp loc_78AC +; --------------------------------------------------------------------------- + +loc_76C3: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_78C4[bx] + +loc_76CA: ; DATA XREF: seg000:78CAo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_76D8 + jmp loc_78AC +; --------------------------------------------------------------------------- + +loc_76D8: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_76E2 + jmp loc_78AC +; --------------------------------------------------------------------------- + +loc_76E2: ; 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_74C8 + add sp, 8 + mov word ptr [bp+var_24+2], dx + mov word ptr [bp+var_24], ax + mov ax, word ptr [bp+var_24] + or ax, word ptr [bp+var_24+2] + jnz short loc_771C + jmp loc_78AC +; --------------------------------------------------------------------------- + +loc_771C: ; 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_7750: ; 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_72B3 + pop cx + pop cx + mov bx, [bp+var_4] + mov ax, [bp+var_2E] + mov ss:[bx+arg_6], ax + cmp word ptr [bp+var_20+2], 3 + jnz short loc_77A2 + push [bp+var_16] + push [bp+var_26] + push [bp+var_28] + push word ptr [bp+var_C+2] + push word ptr [bp+var_C] + push [bp+var_4] + push word ptr [bp+var_24+2] + push word ptr [bp+var_24] + call sub_700D + add sp, 10h + +loc_77A2: ; 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_78AC +; --------------------------------------------------------------------------- + +loc_77BB: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:78C6o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_77D0 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_77D0 + jmp loc_78AC +; --------------------------------------------------------------------------- + +loc_77D0: ; 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_10C6A+2, dx + mov word ptr dword_10C6A, ax + mov ax, ds + mov es, ax + assume es:dseg + push si + mov si, [bp+var_1C] + push ds + mov ds, [bp+var_1A] + push bp + mov bp, [bp+var_16] + call es:dword_10C6A + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_7867 +; --------------------------------------------------------------------------- + +loc_7832: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:78C8o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7846 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7846 + jmp short loc_78AC +; --------------------------------------------------------------------------- + +loc_7846: ; 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_7867: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_7885 + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_7881 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_7881: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_78BE +; --------------------------------------------------------------------------- + +loc_7885: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_788D + jmp short loc_78AC +; --------------------------------------------------------------------------- + +loc_788D: ; 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_7750 +; --------------------------------------------------------------------------- + +loc_78AC: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_78AF: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_78BB + jmp loc_7692 +; --------------------------------------------------------------------------- + +loc_78BB: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_78BE: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_78C4 dw offset loc_78AC ; DATA XREF: __ExceptionHandler+171r + dw offset loc_77BB + dw offset loc_7832 + dw offset loc_76CA + dw offset loc_78AC + dw offset loc_78AC + db 4 dup(0), 63h, 79h + dw seg seg000 + db 14h dup(0), 73h, 79h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0E8h, 78h + dw seg seg000 + dw 0 + db 4, 0, 6, 0, 3, 0, 0D0h, 78h + dw seg seg000 + db 6, 0, 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_791E proc far ; CODE XREF: sub_7A0B+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, 7900h + 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_608A + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_796C +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_796C: ; CODE XREF: sub_791E+43j + mov [bp+var_12], 0 + jmp short loc_797C +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_797C: ; CODE XREF: sub_791E+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_791E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_798A proc far ; CODE XREF: sub_7A0B+DCp + ; sub_7A0B+162p ... + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_C] + jmp short loc_79F9 +; --------------------------------------------------------------------------- + +loc_7997: ; CODE XREF: sub_798A+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_79BF + les bx, [bp+var_4] + mov ax, es:[bx] + mov dx, word ptr [bp+var_4+2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_79BF: ; CODE XREF: sub_798A+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_79F9 + push [bp+arg_10] + xor ax, ax + push ax + xor ax, ax + push ax + push cx + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + nop + push cs + call near ptr sub_7A0B + add sp, 10h + xor cx, cx + +loc_79F9: ; CODE XREF: sub_798A+Bj sub_798A+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_7997 + pop di + pop si + mov sp, bp + pop bp + retf +sub_798A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7A0B proc far ; CODE XREF: sub_798A+67p + ; sub_7A0B+25Ep ... + +var_2A = word ptr -2Ah +var_28 = word ptr -28h +var_26 = word ptr -26h +var_24 = word ptr -24h +var_22 = dword ptr -22h +var_1E = word ptr -1Eh +var_1C = word ptr -1Ch +var_1A = word ptr -1Ah +var_18 = dword ptr -18h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 2Ah + push si + push di + cmp [bp+arg_C], 0 + jz short loc_7A22 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_7A29 +; --------------------------------------------------------------------------- + +loc_7A22: ; CODE XREF: sub_7A0B+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_7A29: ; CODE XREF: sub_7A0B+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_7A4B + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_7A64 + jnz short loc_7A4B + cmp ax, [bp+var_1C] + jb short loc_7A64 + +loc_7A4B: ; CODE XREF: sub_7A0B+2Cj sub_7A0B+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_791E + add sp, 0Ah + jmp loc_7CD0 +; --------------------------------------------------------------------------- + +loc_7A64: ; CODE XREF: sub_7A0B+37j sub_7A0B+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_7AFD + +loc_7A8F: ; CODE XREF: sub_7A0B+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_7AFD + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7AF7 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7AF0 + jnz short loc_7AC6 + cmp bx, [bp+var_1C] + jb short loc_7AF0 + +loc_7AC6: ; CODE XREF: sub_7A0B+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_7AE0: ; CODE XREF: sub_7A0B+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_798A + add sp, 12h + jmp loc_7CD0 +; --------------------------------------------------------------------------- + +loc_7AF0: ; CODE XREF: sub_7A0B+B2j sub_7A0B+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7AF7: ; CODE XREF: sub_7A0B+A4j + add word ptr [bp+var_10], 8 + jmp short loc_7A8F +; --------------------------------------------------------------------------- + +loc_7AFD: ; CODE XREF: sub_7A0B+82j sub_7A0B+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_7B16: ; CODE XREF: sub_7A0B+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_7B8C + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7B86 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7B7F + jnz short loc_7B4D + cmp bx, [bp+var_1C] + jb short loc_7B7F + +loc_7B4D: ; CODE XREF: sub_7A0B+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_798A + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_7B7C + jmp loc_7CD0 +; --------------------------------------------------------------------------- + +loc_7B7C: ; CODE XREF: sub_7A0B+16Cj + jmp loc_7CB0 +; --------------------------------------------------------------------------- + +loc_7B7F: ; CODE XREF: sub_7A0B+139j + ; sub_7A0B+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7B86: ; CODE XREF: sub_7A0B+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_7B16 +; --------------------------------------------------------------------------- + +loc_7B8C: ; CODE XREF: sub_7A0B+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_7BA5: ; CODE XREF: sub_7A0B+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_7BDF + les bx, [bp+var_22] + mov ax, es:[bx+0Ah] + mov [bp+var_1E], ax + les bx, [bp+var_22] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_22+2], dx + mov word ptr [bp+var_22], ax + +loc_7BDF: ; CODE XREF: sub_7A0B+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_7C03 + jb short loc_7BF9 + cmp bx, [bp+var_1C] + jnb short loc_7C03 + +loc_7BF9: ; CODE XREF: sub_7A0B+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_7CC9 +; --------------------------------------------------------------------------- + +loc_7C03: ; CODE XREF: sub_7A0B+1E5j + ; sub_7A0B+1ECj ... + les bx, [bp+var_18] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+4] + mov [bp+var_24], dx + mov [bp+var_26], ax + les bx, [bp+var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+var_28], dx + mov [bp+var_2A], ax + cmp [bp+var_1E], 1 + jbe short loc_7C4F + push [bp+arg_E] + push [bp+var_1A] + push [bp+var_1C] + les bx, [bp+var_18] + push word ptr es:[bx+2] + push word ptr es:[bx] + push [bp+var_24] + push [bp+var_26] + nop + push cs + call near ptr sub_7CD6 + add sp, 0Eh + jmp short loc_7C6F +; --------------------------------------------------------------------------- + +loc_7C4F: ; CODE XREF: sub_7A0B+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_7A0B + add sp, 10h + +loc_7C6F: ; CODE XREF: sub_7A0B+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_7C88 + jmp loc_7C03 +; --------------------------------------------------------------------------- + +loc_7C88: ; CODE XREF: sub_7A0B+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_798A + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_7CD0 + +loc_7CB0: ; CODE XREF: sub_7A0B:loc_7B7Cj + push [bp+arg_E] + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + push word ptr [bp+var_10+2] + push word ptr [bp+var_10] + jmp loc_7AE0 +; --------------------------------------------------------------------------- + +loc_7CC9: ; CODE XREF: sub_7A0B+1F5j + add word ptr [bp+var_18], 6 + jmp loc_7BA5 +; --------------------------------------------------------------------------- + +loc_7CD0: ; CODE XREF: sub_7A0B+56j sub_7A0B+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_7A0B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7CD6 proc far ; CODE XREF: sub_7A0B+23Cp + ; sub_7E89+316p + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+0Ah] + mov [bp+var_6], ax + les bx, [bp+var_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+1Ah] + mov [bp+var_8], 0 + mov [bp+var_A], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jnz short loc_7D30 + mov bx, [bp+var_6] + xor cx, cx + mov dx, [bp+var_8] + mov ax, [bp+var_A] + call N_LXMUL@ + mov [bp+arg_A], dx + mov [bp+arg_8], ax + +loc_7D30: ; CODE XREF: sub_7CD6+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_7DC0 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_7DAD +; --------------------------------------------------------------------------- + +loc_7D8E: ; CODE XREF: sub_7CD6+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_7DAD: ; CODE XREF: sub_7CD6+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_7A0B + add sp, 10h + +loc_7DC0: ; CODE XREF: sub_7CD6+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_7D8E + pop di + pop si + mov sp, bp + pop bp + retf +sub_7CD6 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7DD8 proc far ; CODE XREF: sub_7E89+1B1p + ; sub_7E89+2E4p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_4] + mov bx, cx + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+8] + and ax, 50h + cmp ax, 50h ; 'P' + jnz short loc_7E7D + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_7E7D + les bx, [bp+var_4] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_4] + test byte ptr es:[bx+9], 10h + jz short loc_7E37 + les bx, [bp+var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + jmp short loc_7E40 +; --------------------------------------------------------------------------- + +loc_7E37: ; CODE XREF: sub_7DD8+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_7E40: ; CODE XREF: sub_7DD8+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_7E7D: ; CODE XREF: sub_7DD8+27j sub_7DD8+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_7DD8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7E89 proc near ; CODE XREF: sub_72B3+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_7E9F + jmp loc_828C +; --------------------------------------------------------------------------- + +loc_7E9F: ; CODE XREF: sub_7E89+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_7EF8 + les bx, [bp+arg_0] + les bx, es:[bx] + les bx, es:[bx+6] + mov ax, es:[bx+1Ah] + mov [bp+var_6], 0 + mov [bp+var_8], ax + +loc_7EF8: ; CODE XREF: sub_7E89+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_7F0F + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_828E +; --------------------------------------------------------------------------- + +loc_7F0F: ; CODE XREF: sub_7E89+77j + cmp [bp+var_6], 0 + jg short loc_7F41 + jnz short loc_7F1D + cmp [bp+var_8], 0 + ja short loc_7F41 + +loc_7F1D: ; CODE XREF: sub_7E89+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_7F2F + jmp loc_828C +; --------------------------------------------------------------------------- + +loc_7F2F: ; CODE XREF: sub_7E89+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_80A6 +; --------------------------------------------------------------------------- + +loc_7F41: ; CODE XREF: sub_7E89+8Aj sub_7E89+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_7F4D: ; CODE XREF: sub_7E89+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7F60 + sub word ptr [bp+var_C], 0Ah + jmp loc_80A6 +; --------------------------------------------------------------------------- + +loc_7F60: ; CODE XREF: sub_7E89+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_7F88 + jmp loc_8052 +; --------------------------------------------------------------------------- + +loc_7F88: ; CODE XREF: sub_7E89+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_7FAC + jmp loc_8052 +; --------------------------------------------------------------------------- + +loc_7FAC: ; CODE XREF: sub_7E89+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_7FB9 + jmp loc_8052 +; --------------------------------------------------------------------------- + +loc_7FB9: ; CODE XREF: sub_7E89+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_7FC6 + jmp loc_8052 +; --------------------------------------------------------------------------- + +loc_7FC6: ; CODE XREF: sub_7E89+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_7FDF + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_1C+2], ss + jmp short loc_7FED +; --------------------------------------------------------------------------- + +loc_7FDF: ; CODE XREF: sub_7E89+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_7FED: ; CODE XREF: sub_7E89+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_8015 + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_801E +; --------------------------------------------------------------------------- + +loc_8015: ; CODE XREF: sub_7E89+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_801E: ; CODE XREF: sub_7E89+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_802F + add word ptr [bp+var_1C], 4 + +loc_802F: ; CODE XREF: sub_7E89+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_7DD8 + add sp, 6 + mov word ptr [bp+var_1C+2], dx + mov word ptr [bp+var_1C], ax + mov dx, word ptr [bp+var_12+2] + mov ax, word ptr [bp+var_12] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_8052: ; CODE XREF: sub_7E89+FCj + ; sub_7E89+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8077 + les bx, [bp+var_16] + mov ax, es:[bx+0Ah] + mov [bp+var_18], ax + les bx, [bp+var_16] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_8077: ; CODE XREF: sub_7E89+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_8095 + jnz short loc_80A6 + cmp ax, [bp+var_8] + jnb short loc_80A6 + +loc_8095: ; CODE XREF: sub_7E89+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_7F4D +; --------------------------------------------------------------------------- + +loc_80A6: ; CODE XREF: sub_7E89+B5j sub_7E89+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_80D5 + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_16], ss + jmp short loc_80E3 +; --------------------------------------------------------------------------- + +loc_80D5: ; CODE XREF: sub_7E89+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_80E3: ; CODE XREF: sub_7E89+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_80EF + jmp loc_8179 +; --------------------------------------------------------------------------- + +loc_80EF: ; CODE XREF: sub_7E89+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_8121 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_812A +; --------------------------------------------------------------------------- + +loc_8121: ; CODE XREF: sub_7E89+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_812A: ; CODE XREF: sub_7E89+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_8148 + add [bp+var_18], 4 + +loc_8148: ; CODE XREF: sub_7E89+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_8179 + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_8179 + test byte ptr [bp+var_16+2], 8 + jz short loc_8179 + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_7DD8 + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_8179: ; CODE XREF: sub_7E89+263j + ; sub_7E89+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_81C7 + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_81A7 + push [bp+arg_A] + push [bp+var_6] + push [bp+var_8] + push word ptr [bp+var_12+2] + push word ptr [bp+var_12] + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_7CD6 + add sp, 0Eh + jmp short loc_81C7 +; --------------------------------------------------------------------------- + +loc_81A7: ; CODE XREF: sub_7E89+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_7A0B + add sp, 10h + +loc_81C7: ; CODE XREF: sub_7E89+2F4j + ; sub_7E89+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_81D5 + jmp loc_8273 +; --------------------------------------------------------------------------- + +loc_81D5: ; CODE XREF: sub_7E89+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_81E4 + sub word ptr [bp+driver], 4 + +loc_81E4: ; CODE XREF: sub_7E89+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8233 + les bx, [bp+var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_12+2], dx + mov word ptr [bp+var_12], ax + les bx, [bp+var_12] + mov ax, es:[bx+16h] + or ax, es:[bx+18h] + jz short loc_8220 + les bx, [bp+var_12] + push word ptr es:[bx+14h] + les bx, [bp+var_12] + push word ptr es:[bx+18h] + push word ptr es:[bx+16h] + jmp short loc_8252 +; --------------------------------------------------------------------------- + +loc_8220: ; CODE XREF: sub_7E89+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_8273 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_8271 +; --------------------------------------------------------------------------- + +loc_8233: ; CODE XREF: sub_7E89+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_8260 + les bx, [bp+var_12] + push word ptr es:[bx+12h] + les bx, [bp+var_12] + push word ptr es:[bx+10h] + push word ptr es:[bx+0Eh] + +loc_8252: ; CODE XREF: sub_7E89+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_6242 + add sp, 0Ah + jmp short loc_8273 +; --------------------------------------------------------------------------- + +loc_8260: ; CODE XREF: sub_7E89+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_8273 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_8271: ; CODE XREF: sub_7E89+3A8j + pop cx + pop cx + +loc_8273: ; CODE XREF: sub_7E89+349j + ; sub_7E89+39Bj ... + mov [bp+var_6], 0 + mov [bp+var_8], 0 + mov ax, word ptr [bp+var_C] + sub word ptr [bp+var_C], 0Ah + cmp ax, word ptr [bp+arg_0] + jbe short loc_828C + jmp loc_80A6 +; --------------------------------------------------------------------------- + +loc_828C: ; CODE XREF: sub_7E89+13j sub_7E89+A3j ... + xor ax, ax + +loc_828E: ; CODE XREF: sub_7E89+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7E89 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__CurrExcContext proc far + +s1 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, [bp+arg_0] + mov [bp+var_2], ax + cmp [bp+var_2], 0FFFFh + jz short loc_82D7 + mov bx, [bp+var_2] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + add ax, 0FFF8h + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + mov ax, 8 + push ax ; n + push ds + mov ax, 117Bh + push ax ; s2 + push word ptr [bp+s1+2] + push word ptr [bp+s1] ; s1 + nop + push cs + call near ptr _memcmp + add sp, 0Ah + or ax, ax + jz short loc_82DC + +loc_82D7: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_82E3 +; --------------------------------------------------------------------------- + +loc_82DC: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_82E3: ; 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_833F + mov ax, 8 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+arg_0+2], dx + mov word ptr [bp+arg_0], ax + or ax, dx + jz short loc_837D + +loc_833F: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 891Bh + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_2], 0 + mov [bp+src], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 88FDh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_837D: ; 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_83C8 + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 891Bh + test dl, 1 + jz short loc_83C8 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_83C8: ; 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_583E + add sp, 8 + pop di + pop si + pop bp + retf +@typeinfo@0$beql$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::operator!=(typeinfo const &)const +@typeinfo@0$bneq$xqmx8typeinfo proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) + add sp, 8 + neg ax + sbb ax, ax + inc ax + pop di + pop si + pop bp + retf +@typeinfo@0$bneq$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::before(typeinfo const &)const +@typeinfo@0before$xqmx8typeinfo proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_842C + xor ax, ax + jmp short loc_8485 +; --------------------------------------------------------------------------- + +loc_842C: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_843E + mov ax, 1 + jmp short loc_8485 +; --------------------------------------------------------------------------- + +loc_843E: ; 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_8483 + mov ax, 1 + jmp short loc_8485 +; --------------------------------------------------------------------------- + +loc_8483: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_8485: ; 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_5819 + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) +@__GetTypeInfo$qnvt1t1t1 proc far + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_84E7 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 287Eh + push ax ; src + push cs ; int + mov ax, 88E7h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_84E7: ; 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_8528 proc near ; CODE XREF: sub_8528+143p + ; sub_8528+1C4p ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_1C = dword ptr -1Ch +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h +arg_10 = word ptr 14h +arg_12 = word ptr 16h +arg_14 = word ptr 18h +arg_16 = word ptr 1Ah +arg_18 = word ptr 1Ch +arg_1A = word ptr 1Eh +arg_1C = word ptr 20h +arg_1E = word ptr 22h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+var_8], 0 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + mov [bp+var_E], 0 + mov ax, [bp+arg_14] + or ax, [bp+arg_16] + jz short loc_8563 + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push [bp+arg_16] + push [bp+arg_14] + push cs + call near ptr sub_583E + add sp, 8 + or ax, ax + jnz short loc_856D + +loc_8563: ; CODE XREF: sub_8528+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_8574 + +loc_856D: ; CODE XREF: sub_8528+39j + xor dx, dx + xor ax, ax + jmp loc_8768 +; --------------------------------------------------------------------------- + +loc_8574: ; CODE XREF: sub_8528+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_8586: ; CODE XREF: sub_8528+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_858C: ; CODE XREF: sub_8528+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_85A7 + jmp loc_8730 +; --------------------------------------------------------------------------- + +loc_85A7: ; CODE XREF: sub_8528+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_85B4 + jmp loc_8729 +; --------------------------------------------------------------------------- + +loc_85B4: ; CODE XREF: sub_8528+87j + cmp [bp+arg_1A], 0 + jz short loc_85CE + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_85CE + mov ax, 1 + jmp short loc_85D0 +; --------------------------------------------------------------------------- + +loc_85CE: ; CODE XREF: sub_8528+90j sub_8528+9Fj + xor ax, ax + +loc_85D0: ; CODE XREF: sub_8528+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_8617 + les bx, [bp+var_14] + mov ax, es:[bx] + mov dx, word ptr [bp+var_14+2] + mov word ptr [bp+var_14+2], dx + mov word ptr [bp+var_14], ax + mov dx, word ptr [bp+var_1C+2] + mov ax, word ptr [bp+var_1C] + mov [bp+var_16], dx + mov [bp+var_18], ax + +loc_8617: ; CODE XREF: sub_8528+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_583E + add sp, 8 + or ax, ax + jnz short loc_8699 + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_863B + jmp loc_8729 +; --------------------------------------------------------------------------- + +loc_863B: ; CODE XREF: sub_8528+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_8528 + add sp, 20h + mov [bp+var_1E], dx + mov [bp+var_20], ax + mov ax, [bp+var_20] + or ax, [bp+var_1E] + jnz short loc_8682 + jmp loc_8729 +; --------------------------------------------------------------------------- + +loc_8682: ; CODE XREF: sub_8528+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_86F6 +; --------------------------------------------------------------------------- + +loc_8699: ; CODE XREF: sub_8528+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_86BA + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_8729 + cmp ax, word ptr [bp+var_14] + jnz short loc_8729 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_8768 +; --------------------------------------------------------------------------- + +loc_86BA: ; CODE XREF: sub_8528+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_86F6 + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push [bp+arg_18] + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+arg_16] + push [bp+arg_14] + push [bp+arg_12] + push [bp+arg_10] + push word ptr [bp+var_1C+2] + push word ptr [bp+var_1C] + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + call sub_8528 + add sp, 20h + or ax, dx + jz short loc_8729 + +loc_86F6: ; CODE XREF: sub_8528+16Fj + ; sub_8528+198j + cmp [bp+var_E], 0 + jz short loc_8714 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_8714 + cmp ax, [bp+var_C] + jnz short loc_8714 + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_8729 +; --------------------------------------------------------------------------- + +loc_8714: ; CODE XREF: sub_8528+1D2j + ; sub_8528+1DDj ... + inc [bp+var_E] + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_10] + mov [bp+var_8], ax + +loc_8729: ; CODE XREF: sub_8528+89j + ; sub_8528+110j ... + add word ptr [bp+var_4], 8 + jmp loc_858C +; --------------------------------------------------------------------------- + +loc_8730: ; CODE XREF: sub_8528+7Cj + cmp [bp+var_6], 0 + jnz short loc_8749 + inc [bp+var_6] + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + jmp loc_8586 +; --------------------------------------------------------------------------- + +loc_8749: ; CODE XREF: sub_8528+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_8762 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_8762: ; CODE XREF: sub_8528+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_8768: ; CODE XREF: sub_8528+49j + ; sub_8528+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_8528 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) +@__DynamicCast$qnvt1t1t1i proc far + +var_16 = word ptr -16h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_8799 + jmp loc_889D +; --------------------------------------------------------------------------- + +loc_8799: ; 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_87EF + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_583E + add sp, 8 + or ax, ax + jz short loc_87F8 + +loc_87EF: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_88CD +; --------------------------------------------------------------------------- + +loc_87F8: ; 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_583E + add sp, 8 + or ax, ax + jnz short loc_8851 + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+var_16] + push ax + push [bp+var_2] + push [bp+var_4] + push [bp+arg_2] + push [bp+arg_0] + push [bp+var_6] + push [bp+var_8] + xor ax, ax + push ax + push ax + push [bp+var_A] + push [bp+var_C] + push [bp+var_E] + push [bp+var_10] + call sub_8528 + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jnz short loc_8895 + +loc_8851: ; 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_8528 + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jz short loc_889D + cmp [bp+var_16], 0 + jz short loc_889D + +loc_8895: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_88CD +; --------------------------------------------------------------------------- + +loc_889D: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_88C9 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 287Fh + push ax ; src + push cs ; int + mov ax, 88D3h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_88C9: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_88CD: ; 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, 1Fh, 89h + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 1Fh, 89h + dw seg seg000 + db 4 dup(0), 98h, 83h + dw seg seg000 + db 8 ; Method + db 0 + db 3 ; Destructor/SafeFunction + db 0 + db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 + db 0, 1, 0, 98h, 83h + dw seg seg000 + db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh + db 0Eh dup(0) + +; =============== 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_9399:loc_9504p + +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_8984 + 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_8984: ; 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_89AE +; --------------------------------------------------------------------------- + +loc_8992: ; 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_89AE: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8992 + push [bp+var_2] + nop + push cs + call near ptr sub_3C88 + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_89D4 + xor dx, dx + xor ax, ax + jmp loc_8A8A +; --------------------------------------------------------------------------- + +loc_89D4: ; 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_8A17 + 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_8A17: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8A65 + 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_8A59 +; --------------------------------------------------------------------------- + +loc_8A2D: ; 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_8A59: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8A2D + +loc_8A65: ; 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_8A8A: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_8B21 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_8B73 db 0 ; DATA XREF: __exec+50w +byte_8B74 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_8BF2 dw 0FFh ; DATA XREF: __exec+22Dr +word_8BF4 dw 0 ; DATA XREF: __exec+1D0w +word_8BF6 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_8DF2r ... +byte_8BF8 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_E466 + mov cs:word_8BF6, 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_8C1D + jmp loc_8E2B +; --------------------------------------------------------------------------- + +loc_8C1D: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_8B21, 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_8B73, al + +loc_8C4D: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_8C5E + cmp al, 9 + jz short loc_8C5E + cmp al, 0Dh + jz short loc_8C5E + inc si + jmp short loc_8C4D +; --------------------------------------------------------------------------- + +loc_8C5E: ; 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_8B74, 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_E46C, 3 + jnb short loc_8C7D + sub bx, 280h + +loc_8C7D: ; 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_8C92 + xor ax, ax + mov di, ax + jmp short loc_8CAF +; --------------------------------------------------------------------------- + +loc_8C92: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_8C9C: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_8C9C + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_8CAF: ; 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_E466 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_8CD7 + dec cs:byte_8BF8 + inc ax + sub [bp+var_4], ax + +loc_8CD7: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 8B23h + +loc_8CDF: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_8CDF + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 8A92h + 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_8D21 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_8D2D + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_8D1E + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_8D1E + jmp short loc_8D69 +; --------------------------------------------------------------------------- + +loc_8D1E: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_8D21: ; 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_8E2B +; --------------------------------------------------------------------------- + +loc_8D2D: ; 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_8D47: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_8D47 + 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_8D93 +; --------------------------------------------------------------------------- + +loc_8D69: ; 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_8D75: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_8D75 + 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_8D93: ; 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_8DA9 + jmp loc_8D21 +; --------------------------------------------------------------------------- + +loc_8DA9: ; 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_8DC0 + jmp loc_8D21 +; --------------------------------------------------------------------------- + +loc_8DC0: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_8BF4, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 8A92h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_8BF8, 0 + jnz short loc_8DF2 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_8E2B + jmp short loc_8DF6 +; --------------------------------------------------------------------------- + +loc_8DF2: ; CODE XREF: __exec+1EDj + mov ax, cs:word_8BF6 + +loc_8DF6: ; 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_8BF8, 0 + jnz short loc_8E25 + mov es, cs:word_8BF6 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_8E25: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:word_8BF2 +; --------------------------------------------------------------------------- + +loc_8E2B: ; 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+7FP _main:loc_9F2EP ... + +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, 8BF9h + push ax ; int + call sub_9399 + 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_3E70+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_8E70 + mov ax, 0FFFFh + jmp short loc_8E76 +; --------------------------------------------------------------------------- + +loc_8E70: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_8E76: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_E466 + xor di, di + push es + push word_E468 + nop + push cs + call near ptr sub_3C88 + pop bx + mov bx, ax + pop es + mov word ptr dword_F574, ax + mov word ptr dword_F574+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_8EA3 + nop + nop + jmp near ptr sub_2D32 +; --------------------------------------------------------------------------- + +loc_8EA3: ; CODE XREF: seg000:8E9Cj + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_8EBD + +loc_8EAE: ; CODE XREF: seg000:8EBBj + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_8EAE + +loc_8EBD: ; CODE XREF: seg000:8EACj + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_F574+2 + mov word_E462, ax + mov ax, word ptr dword_F574 + mov envp, ax + retn +; --------------------------------------------------------------------------- + +unknown_libname_2: ; BCC v4.x/5.x DOS runtime + push si + push di + pop di + pop si + retf +; --------------------------------------------------------------------------- + dd byte_D811 + db 4 dup(0), 0D7h, 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_8F2C + 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_8F2A + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8F2E +; --------------------------------------------------------------------------- + +loc_8F2A: ; CODE XREF: seg000:8F19j + jmp short loc_8F2E +; --------------------------------------------------------------------------- + +loc_8F2C: ; CODE XREF: seg000:8EF0j + xor ax, ax + +loc_8F2E: ; CODE XREF: seg000:8F28j + ; seg000:loc_8F2Aj + 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_D9B9 + dd byte_D96B + db 4 dup(0), 0B4h, 1 + dw seg seg003 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 37h, 8Fh + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 43h, 8Fh +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_8FAE + 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_8FAC + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8FB0 +; --------------------------------------------------------------------------- + +loc_8FAC: ; CODE XREF: seg000:8F9Bj + jmp short loc_8FB0 +; --------------------------------------------------------------------------- + +loc_8FAE: ; CODE XREF: seg000:8F72j + xor ax, ax + +loc_8FB0: ; CODE XREF: seg000:8FAAj + ; seg000:loc_8FACj + 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_8FFB + 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_8FF9 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_8FFD +; --------------------------------------------------------------------------- + +loc_8FF9: ; CODE XREF: seg000:8FE8j + jmp short loc_8FFD +; --------------------------------------------------------------------------- + +loc_8FFB: ; CODE XREF: seg000:8FBFj + xor ax, ax + +loc_8FFD: ; CODE XREF: seg000:8FF7j + ; seg000:loc_8FF9j + 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), 6, 90h + dw seg seg000 + db 0E2h, 0FFh, 0FCh, 0Bh + dw seg seg003 + dd 0 + dd byte_E362 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FCh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ah, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 10h, 90h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 18h, 90h, 6, 0, 5 + db 0, 1, 0, 30h, 90h, 0FCh, 0Bh + dw seg seg003 + db 4 dup(0), 0C2h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FCh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ah, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 54h, 90h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 5Ch, 90h, 6, 0, 5 + db 0, 1, 0, 74h, 90h, 0FCh, 0Bh + dw seg seg003 + dd 0 + dd byte_E362 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FCh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ah, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 98h, 90h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0A0h, 90h, 6, 0 + db 5, 0, 1, 0, 0B8h, 90h, 4 dup(0), 0DCh, 90h + dw seg seg000 + db 0E2h, 0FFh, 48h, 0Bh + dw seg seg003 + dd byte_E39C + db 4 dup(0), 0E6h, 90h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0F8h, 90h + dw seg seg000 + db 0E2h, 0FFh, 48h, 0Bh + dw seg seg003 + dd byte_E29A + db 4 dup(0), 2, 91h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 14h, 91h + dw seg seg000 + db 0E2h, 0FFh, 48h, 0Bh + dw seg seg003 + dd byte_E29A + db 4 dup(0), 1Eh, 91h + 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_91AC + 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_91AA + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_91AE +; --------------------------------------------------------------------------- + +loc_91AA: ; CODE XREF: seg000:9199j + jmp short loc_91AE +; --------------------------------------------------------------------------- + +loc_91AC: ; CODE XREF: seg000:9170j + xor ax, ax + +loc_91AE: ; CODE XREF: seg000:91A8j + ; seg000:loc_91AAj + 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_91F9 + 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_91F7 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_91FB +; --------------------------------------------------------------------------- + +loc_91F7: ; CODE XREF: seg000:91E6j + jmp short loc_91FB +; --------------------------------------------------------------------------- + +loc_91F9: ; CODE XREF: seg000:91BDj + xor ax, ax + +loc_91FB: ; CODE XREF: seg000:91F5j + ; seg000:loc_91F7j + 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_9246 + 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_9244 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9248 +; --------------------------------------------------------------------------- + +loc_9244: ; CODE XREF: seg000:9233j + jmp short loc_9248 +; --------------------------------------------------------------------------- + +loc_9246: ; CODE XREF: seg000:920Aj + xor ax, ax + +loc_9248: ; CODE XREF: seg000:9242j + ; seg000:loc_9244j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_924C proc far ; CODE XREF: sub_D197+7FP + +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_9286 + cmp ah, 0A0h ; ' ' + jb short loc_9268 + cmp ah, 0E0h ; 'à' + jb short loc_9286 + cmp ah, 0F0h ; 'ð' + jnb short loc_9286 + +loc_9268: ; CODE XREF: sub_924C+10j + cmp al, 40h ; '@' + jb short loc_9286 + cmp al, 0FDh ; 'ý' + jnb short loc_9286 + cmp al, 7Fh ; '' + jz short loc_9286 + cmp al, 80h ; '€' + adc al, 61h ; 'a' + jb short loc_927C + sub al, 0A2h ; '¢' + +loc_927C: ; CODE XREF: sub_924C+2Cj + rcl ah, 1 + and ah, 7Fh + add ax, 1F21h + jmp short loc_9288 +; --------------------------------------------------------------------------- + +loc_9286: ; CODE XREF: sub_924C+Bj sub_924C+15j ... + xor ax, ax + +loc_9288: ; CODE XREF: sub_924C+38j + pop di + pop si + pop bp + retf +sub_924C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_928C proc far ; CODE XREF: sub_9399+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_92FD +; --------------------------------------------------------------------------- + +loc_92A2: ; CODE XREF: sub_928C+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_4355 + pop cx + or ax, ax + jz short loc_92C1 + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_92FA + jmp short loc_9306 +; --------------------------------------------------------------------------- + +loc_92C1: ; CODE XREF: sub_928C+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_92E0 +; --------------------------------------------------------------------------- + +loc_92CF: ; CODE XREF: sub_928C+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_92E9 + inc word ptr [bp+var_8] + +loc_92E0: ; CODE XREF: sub_928C+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_92CF + +loc_92E9: ; CODE XREF: sub_928C+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_92FA + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_930A +; --------------------------------------------------------------------------- + +loc_92FA: ; CODE XREF: sub_928C+31j sub_928C+64j + inc word ptr [bp+var_4] + +loc_92FD: ; CODE XREF: sub_928C+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_92A2 + +loc_9306: ; CODE XREF: sub_928C+33j + xor dx, dx + xor ax, ax + +loc_930A: ; CODE XREF: sub_928C+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_928C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_9310(int, int, char *pathname, char *src, int) +sub_9310 proc far ; CODE XREF: sub_9399+7Fp sub_9399+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_9364 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 12F0h + 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_9391 + jmp short loc_938C +; --------------------------------------------------------------------------- + +loc_9364: ; CODE XREF: sub_9310+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_9391 + +loc_938C: ; CODE XREF: sub_9310+52j + mov ax, 1 + jmp short loc_9393 +; --------------------------------------------------------------------------- + +loc_9391: ; CODE XREF: sub_9310+50j sub_9310+7Aj + xor ax, ax + +loc_9393: ; CODE XREF: sub_9310+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_9310 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_9399(int, char *s, int, int, int, int, int) +sub_9399 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_93B3 + sub dx, 20h ; ' ' + +loc_93B3: ; CODE XREF: sub_9399+15j + cmp dx, 41h ; 'A' + jb short loc_93C7 + cmp dx, 5Ah ; 'Z' + ja short loc_93C7 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_93DD + +loc_93C7: ; CODE XREF: sub_9399+1Dj sub_9399+22j + push ds + mov ax, 12F5h + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_928C + add sp, 8 + or ax, dx + jz short loc_93E2 + +loc_93DD: ; CODE XREF: sub_9399+2Cj + mov [bp+arg_E], 0 + +loc_93E2: ; CODE XREF: sub_9399+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_5004 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_9441 + push [bp+arg_E] ; int + push ds + mov ax, 12F8h + 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_9310 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_9428 + jmp loc_94AC +; --------------------------------------------------------------------------- + +loc_9428: ; CODE XREF: sub_9399+8Aj + push ds + mov ax, 12F9h + 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_94AC + jmp short loc_94A7 +; --------------------------------------------------------------------------- + +loc_9441: ; CODE XREF: sub_9399+68j + push [bp+arg_E] ; int + push ds + mov ax, 12FEh + 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_9310 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_94AC + push [bp+arg_E] ; int + push ds + mov ax, 1303h + 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_9310 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_94AC + push [bp+arg_E] ; int + push ds + mov ax, 1308h + 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_9310 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_94AC + +loc_94A7: ; CODE XREF: sub_9399+A6j + mov [bp+var_1A], 1 + +loc_94AC: ; CODE XREF: sub_9399+8Cj sub_9399+A4j ... + cmp [bp+var_18], 0 + jz short loc_94CE + cmp [bp+var_1A], 0 + jz short loc_94D7 + push ds + mov ax, 130Dh + 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_94D7 + +loc_94CE: ; CODE XREF: sub_9399+117j + mov word_E46E, 2 + jmp loc_959D +; --------------------------------------------------------------------------- + +loc_94D7: ; CODE XREF: sub_9399+11Dj + ; sub_9399+133j + cmp [bp+var_1A], 0 + jz short loc_94F0 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 1315h + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_9504 +; --------------------------------------------------------------------------- + +loc_94F0: ; CODE XREF: sub_9399+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_9504: ; CODE XREF: sub_9399+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_951E + mov word_E46E, 8 + jmp loc_959D +; --------------------------------------------------------------------------- + +loc_951E: ; CODE XREF: sub_9399+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_9547 + mov word_E46E, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + jmp short loc_959D +; --------------------------------------------------------------------------- + +loc_9547: ; CODE XREF: sub_9399+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_955C + mov dx, word ptr dword_F574+2 + mov ax, word ptr dword_F574 + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_955C: ; CODE XREF: sub_9399+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + 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_9399+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_9576: ; CODE XREF: sub_9399+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_95A2 + mov word_E46E, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B55 + pop cx + pop cx + +loc_959D: ; CODE XREF: sub_9399+13Bj + ; sub_9399+182j ... + mov ax, 0FFFFh + jmp short loc_95ED +; --------------------------------------------------------------------------- + +loc_95A2: ; CODE XREF: sub_9399+1EFj + call off_F0B8 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_95C0 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_95C6 +; --------------------------------------------------------------------------- + +loc_95C0: ; CODE XREF: sub_9399+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_95C6: ; CODE XREF: sub_9399+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_3B55 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3B55 + add sp, 8 + mov ax, [bp+var_16] + +loc_95ED: ; CODE XREF: sub_9399+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_9399 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_95F3 proc near ; CODE XREF: _main+4p + +var_8 = byte ptr -8 +var_3 = word ptr -3 + + enter 8, 0 + push si + push ds + push offset aYume_cfg ; "YUME.CFG" + call sub_966 + push ss + lea ax, [bp+var_8] + push ax + push 8 + call sub_8B2 + call sub_846 + mov si, [bp+var_3] + mov word ptr dword_105DA+2, si + mov word ptr dword_105DA, 0 + mov ax, si + pop si + leave + retn +sub_95F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9624 proc near ; CODE XREF: _main+D1p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push ds + push offset aLogo0_rgb ; "logo0.rgb" + call sub_1A68 + call far ptr loc_17D0 + push 0 + push ds + push offset aLogo_cd2 ; "logo.cd2" + call sub_D114 + push 5 + push ds + push offset aLogo5_cdg ; "logo5.cdg" + push 0 + call sub_CF1E + les bx, dword_105DA + cmp byte ptr es:[bx+17h], 0 + jnz short loc_965E + mov al, byte_F7E3 + jmp short loc_9661 +; --------------------------------------------------------------------------- + +loc_965E: ; CODE XREF: sub_9624+33j + mov al, byte_F7E4 + +loc_9661: ; CODE XREF: sub_9624+38j + mov [bp+var_1], al + les bx, dword_105DA + cmp byte ptr es:[bx+17h], 0 + jnz short loc_969A + cmp byte ptr es:[bx+33h], 6 + jnz short loc_967C + mov [bp+var_2], 9 + jmp short loc_96B7 +; --------------------------------------------------------------------------- + +loc_967C: ; CODE XREF: sub_9624+50j + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 7 + jnz short loc_968D + mov [bp+var_2], 0Ah + jmp short loc_96B7 +; --------------------------------------------------------------------------- + +loc_968D: ; CODE XREF: sub_9624+61j + les bx, dword_105DA + cmp byte ptr es:[bx+17h], 0 + jnz short loc_96AA + jmp short loc_96A5 +; --------------------------------------------------------------------------- + +loc_969A: ; CODE XREF: sub_9624+49j + les bx, dword_105DA + cmp byte ptr es:[bx+17h], 0 + jnz short loc_96AA + +loc_96A5: ; CODE XREF: sub_9624+74j + mov al, byte_F7E4 + jmp short loc_96AD +; --------------------------------------------------------------------------- + +loc_96AA: ; CODE XREF: sub_9624+72j sub_9624+7Fj + mov al, byte_F7E3 + +loc_96AD: ; CODE XREF: sub_9624+84j + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_2], al + +loc_96B7: ; CODE XREF: sub_9624+56j sub_9624+67j + push 6 + push ds + mov al, [bp+var_1] + mov ah, 0 + cwd + sub ax, dx + mov bx, ax + sar bx, 1 + add bx, bx + push word ptr [bx+90h] + mov al, [bp+var_1] + mov ah, 0 + and ax, 1 + push ax + call sub_CFA8 + mov al, [bp+var_1] + mov ah, 0 + cwd + sub ax, dx + mov bx, ax + sar bx, 1 + shl bx, 2 + push large dword ptr [bx+0A2h] + call sub_966 + mov al, [bp+var_2] + mov ah, 0 + imul ax, 0B4h + cwde + push eax + push 0 + call sub_9A2 + push ds + push offset unk_F72C + push 3Ch ; '<' + call sub_8B2 + mov byte_F768, 0 + push ds + push offset unk_F769 + push 3Ch ; '<' + call sub_8B2 + mov byte_F7A5, 0 + push ds + push offset unk_F7A6 + push 3Ch ; '<' + call sub_8B2 + mov byte_F7E2, 0 + call sub_846 + leave + retn +sub_9624 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_973E proc near ; CODE XREF: sub_978D+CEp + push bp + mov bp, sp + push large 500110h + push 2Fh ; '/' + push ds + push offset unk_F72C + call sub_D197 + push large 500120h + push 2Fh ; '/' + push ds + push offset unk_F769 + call sub_D197 + push large 500130h + push 2Fh ; '/' + push ds + push offset unk_F7A6 + call sub_D197 + pop bp + retn +sub_973E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9776 proc near ; CODE XREF: sub_978D+B2p + ; _main:loc_9E89p ... + push bp + mov bp, sp + push si + xor si, si + jmp short loc_9785 +; --------------------------------------------------------------------------- + +loc_977E: ; CODE XREF: sub_9776+12j + push si + call sub_D130 + inc si + +loc_9785: ; CODE XREF: sub_9776+6j + cmp si, 20h ; ' ' + jl short loc_977E + pop si + pop bp + retn +sub_9776 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_978D proc near ; CODE XREF: _main+D4p + push bp + mov bp, sp + push si + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov word_E968, 0 + call far ptr loc_17D0 + call sub_1758 + push large 160012Ch + push 0 + call far ptr loc_D712 + push 0 + call sub_CEC2 + push 2 + call sub_536 + push large 60010h + call sub_D3FC + mov si, 1 + jmp short loc_97FC +; --------------------------------------------------------------------------- + +loc_97E8: ; CODE XREF: sub_978D+72j + push large 160012Ch + push si + call far ptr loc_D712 + push 6 + call sub_CB52 + inc si + +loc_97FC: ; CODE XREF: sub_978D+59j + cmp si, 5 + jl short loc_97E8 + push large 0A0040h + call sub_D3FC + mov word_E968, 0C8h ; 'È' + call far ptr loc_17D0 + push large 0E00040h + push 6 + call far ptr loc_D712 + push large 160012Ch + push 5 + call far ptr loc_D712 + push ds + push offset aLogo1_rgb ; "logo1.rgb" + call sub_1A68 + call far ptr loc_17D0 + call sub_9776 + push large 0B0004h + call sub_D3FC + push 1 + call sub_208A + push 8 + call sub_CB52 + call sub_973E + call sub_9887 + or ax, ax + jnz short loc_9868 + call sub_990C + +loc_9868: ; CODE XREF: sub_978D+D6j sub_978D+EEj + call sub_D5A2 + cmp word_100FC, 0 + jnz short loc_987D + push 1 + call sub_CB52 + jmp short loc_9868 +; --------------------------------------------------------------------------- + +loc_987D: ; CODE XREF: sub_978D+E5j + push 1 + call sub_57A + pop si + pop bp + retn +sub_978D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9887 proc near ; CODE XREF: sub_978D+D1p _main+ADp ... + +var_2 = word ptr -2 + + enter 2, 0 + les bx, dword_105DA + cmp byte ptr es:[bx+28h], 1 + jnz short loc_98A1 + les bx, dword_105DA + cmp byte ptr es:[bx+17h], 0 + jz short loc_98A6 + +loc_98A1: ; CODE XREF: sub_9887+Dj + mov ax, 1 + leave + retn +; --------------------------------------------------------------------------- + +loc_98A6: ; CODE XREF: sub_9887+18j + les bx, dword_105DA + mov al, es:[bx+33h] + mov ah, 0 + add bx, ax + mov al, es:[bx+29h] + mov bx, word ptr dword_105DA + mov es:[bx+0Dh], al + cmp byte ptr es:[bx+33h], 7 + jnz short loc_98CA + mov ax, 3 + leave + retn +; --------------------------------------------------------------------------- + +loc_98CA: ; CODE XREF: sub_9887+3Cj + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 8 + jnz short loc_98DA + mov ax, 4 + leave + retn +; --------------------------------------------------------------------------- + +loc_98DA: ; CODE XREF: sub_9887+4Cj + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 9 + jnz short loc_98EA + mov ax, 5 + leave + retn +; --------------------------------------------------------------------------- + +loc_98EA: ; CODE XREF: sub_9887+5Cj + les bx, dword_105DA + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_2], ax + cmp [bp+var_2], 7 + jl short loc_9908 + mov byte ptr es:[bx+0Dh], 1 + +loc_9908: ; CODE XREF: sub_9887+7Aj + xor ax, ax + leave + retn +sub_9887 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_990C proc near ; CODE XREF: sub_978D+D8p _main+196p ... + +var_1 = byte ptr -1 + + enter 2, 0 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_F7E3 + mov [bp+var_1], al + push 0 + push ds + mov ah, 0 + cwd + sub ax, dx + mov bx, ax + sar bx, 1 + add bx, bx + push word ptr [bx+90h] + mov al, [bp+var_1] + mov ah, 0 + and ax, 1 + push ax + call sub_CF1E + les bx, dword_105DA + mov al, es:[bx+0Dh] + add al, 0FFh + mov [bp+var_1], al + push 1 + push ds + mov ah, 0 + cwd + sub ax, dx + mov bx, ax + sar bx, 1 + add bx, bx + push word ptr [bx+90h] + mov al, [bp+var_1] + mov ah, 0 + and ax, 1 + push ax + call sub_CF1E + mov al, [bp+var_1] + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_1], al + mov byte_F7E5, 1 + les bx, dword_105DA + cmp byte ptr es:[bx+28h], 1 + jz short loc_9997 + mov bx, word_E504 + mov al, [bx+4] + add al, 4 + jmp short loc_99CB +; --------------------------------------------------------------------------- + +loc_9997: ; CODE XREF: sub_990C+7Ej + cmp [bp+var_1], 7 + jnz short loc_99A8 + mov bx, word_E504 + mov al, [bx+4] + add al, 2 + jmp short loc_99CB +; --------------------------------------------------------------------------- + +loc_99A8: ; CODE XREF: sub_990C+8Fj + cmp [bp+var_1], 8 + jnz short loc_99B7 + mov bx, word_E504 + inc byte ptr [bx+4] + jmp short loc_99F1 +; --------------------------------------------------------------------------- + +loc_99B7: ; CODE XREF: sub_990C+A0j + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 6 + jnz short loc_99D4 + mov bx, word_E504 + mov al, [bx+4] + add al, 3 + +loc_99CB: ; CODE XREF: sub_990C+89j sub_990C+9Aj + mov bx, word_E504 + mov [bx+4], al + jmp short loc_99F1 +; --------------------------------------------------------------------------- + +loc_99D4: ; CODE XREF: sub_990C+B4j + push 2 + push ds + push word_E502 + les bx, dword_105DA + mov al, es:[bx+33h] + mov ah, 0 + inc ax + push ax + call sub_CF1E + mov byte_F7E5, 0 + +loc_99F1: ; CODE XREF: sub_990C+A9j sub_990C+C6j + push 0 + push ds + push offset aStnx0_pi ; "stnx0.pi" + call sub_D4AB + push large 0 + push 0 + call sub_CD2F + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + push 0 + push ds + push word_E504 + call sub_D4AB + push large 0 + push 0 + call sub_CD2F + leave + retn +sub_990C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9A2C proc near ; CODE XREF: _main:loc_9E75p + ; _main+199p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov si, 3A3h + mov [bp+var_2], 3AAh + mov word_E968, 0 + call far ptr loc_17D0 + push 0 + call sub_CD0A + push 0 + call sub_EAC + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + push large 600060h + push 0 + call far ptr loc_C9D4 + push large 1600060h + push 1 + call far ptr loc_CA88 + cmp byte_F7E5, 0 + jnz short loc_9A8E + push large 180002Eh + push 2 + call far ptr loc_C9D4 + +loc_9A8E: ; CODE XREF: sub_9A2C+53j + push 0 + call sub_D130 + push 1 + call sub_D130 + push 2 + call sub_D130 + les bx, dword_105DA + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + add ax, ax + mov [bp+var_4], ax + push large 500124h + push 2Fh ; '/' + mov bx, [bp+var_4] + shl bx, 2 + push large dword ptr [bx+0CAh] + call sub_D197 + push large 800134h + push 2Fh ; '/' + mov bx, [bp+var_4] + shl bx, 2 + push large dword ptr [bx+0CEh] + call sub_D197 + les bx, dword_105DA + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + add ax, ax + mov [bp+var_4], ax + push large 1500124h + push 2Fh ; '/' + mov bx, [bp+var_4] + shl bx, 2 + push large dword ptr [bx+0CAh] + call sub_D197 + push large 1800134h + push 2Fh ; '/' + mov bx, [bp+var_4] + shl bx, 2 + push large dword ptr [bx+0CEh] + call sub_D197 + push 1 + call sub_536 + mov word_F83E, 0 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + push 0 + call sub_9D20 + push 1 + call sub_9D20 + push 0 + push ds + push offset aEn2_pi ; "EN2.pi" + call sub_D4AB + push large 118h + push 0 + call sub_CDB7 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + les bx, dword_105DA + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_4], ax + mov bx, [bp+var_4] + cmp bx, 8 + ja short loc_9BC2 + add bx, bx + jmp cs:off_9C9F[bx] + +loc_9B97: ; DATA XREF: seg001:off_9C9Fo + ; seg001:06B1o ... + push 0 + push ds + push offset aEnemy00_pi ; "ENEMY00.pi" + jmp short loc_9BBD +; --------------------------------------------------------------------------- + +loc_9B9F: ; CODE XREF: sub_9A2C+166j + ; DATA XREF: seg001:06B3o ... + push 0 + push ds + push offset aEnemy01_pi ; "ENEMY01.pi" + jmp short loc_9BBD +; --------------------------------------------------------------------------- + +loc_9BA7: ; CODE XREF: sub_9A2C+166j + ; DATA XREF: seg001:06B5o ... + push 0 + push ds + push offset aEnemy02_pi ; "ENEMY02.pi" + jmp short loc_9BBD +; --------------------------------------------------------------------------- + +loc_9BAF: ; CODE XREF: sub_9A2C+166j + ; DATA XREF: seg001:06BDo + push 0 + push ds + push offset aEnemy03_pi ; "ENEMY03.pi" + jmp short loc_9BBD +; --------------------------------------------------------------------------- + +loc_9BB7: ; CODE XREF: sub_9A2C+166j + ; DATA XREF: seg001:06BFo + push 0 + push ds + push offset aEnemy04_pi ; "ENEMY04.pi" + +loc_9BBD: ; CODE XREF: sub_9A2C+171j + ; sub_9A2C+179j ... + call sub_D4AB + +loc_9BC2: ; CODE XREF: sub_9A2C+162j + push large 130h + push 0 + call sub_CDB7 + les bx, dword_105DA + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_4], ax + cmp [bp+var_4], 0Ah + jl short loc_9BFB + mov bx, 0Ah + cwd + idiv bx + add al, [si] + mov [si], al + mov ax, [bp+var_4] + cwd + idiv bx + mov [bp+var_4], dx + +loc_9BFB: ; CODE XREF: sub_9A2C+1BAj + mov al, [si+1] + add al, byte ptr [bp+var_4] + mov [si+1], al + push 100h + call sub_CEC2 + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 6 + jz short loc_9C1E + push 600h + push ds + push si + jmp short loc_9C25 +; --------------------------------------------------------------------------- + +loc_9C1E: ; CODE XREF: sub_9A2C+1E9j + push 600h + push ds + push [bp+var_2] + +loc_9C25: ; CODE XREF: sub_9A2C+1F0j + call sub_C880 + add sp, 6 + push 0B00h + push ds + push offset aYume_efc ; "YUME.EFC" + call sub_C880 + add sp, 6 + mov word_100FC, 0 + +loc_9C42: ; CODE XREF: sub_9A2C+21Bj + cmp word_F83E, 20h ; ' ' + jbe short loc_9C42 + jmp short loc_9C50 +; --------------------------------------------------------------------------- + +loc_9C4B: ; CODE XREF: sub_9A2C+230j + call sub_D5A2 + +loc_9C50: ; CODE XREF: sub_9A2C+21Dj + cmp word_F83E, 60h ; '`' + ja short loc_9C5E + cmp word_100FC, 0 + jz short loc_9C4B + +loc_9C5E: ; CODE XREF: sub_9A2C+229j + push 1 + call sub_20CA + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + push 1 + call sub_208A + push large 200005h + call sub_1F32 + push 0 + call sub_CD0A + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + call sub_2820 + pop si + leave + retn +sub_9A2C endp + +; --------------------------------------------------------------------------- +off_9C9F dw offset loc_9B97 ; DATA XREF: sub_9A2C+166r + dw offset loc_9B97 + dw offset loc_9B9F + dw offset loc_9BA7 + dw offset loc_9B9F + dw offset loc_9BA7 + dw offset loc_9B97 + dw offset loc_9BAF + dw offset loc_9BB7 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9CB1 proc near ; CODE XREF: sub_9D20+54p + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov si, [bp+arg_4] + push 0 + push large [bp+arg_0] + call sub_D4AB + mov ax, si + imul ax, 140h + push ax + push large 0C80000h + call sub_CDB7 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + les bx, [bp+arg_0] + mov byte ptr es:[bx+2], 65h ; 'e' + mov byte ptr es:[bx+3], 78h ; 'x' + push 0 + push word ptr [bp+arg_0+2] + push bx + call sub_D4AB + mov ax, si + imul ax, 140h + push ax + push large 0D00000h + call sub_CDB7 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + pop si + pop bp + retn 6 +sub_9CB1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9D20 proc near ; CODE XREF: sub_9A2C+11Bp + ; sub_9A2C+120p + +var_E = byte ptr -0Eh +var_D = byte ptr -0Dh +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 0Eh, 0 + push si + push di + mov di, [bp+arg_0] + xor si, si + jmp short loc_9D35 +; --------------------------------------------------------------------------- + +loc_9D2D: ; CODE XREF: sub_9D20+18j + mov al, [si+116h] + mov [bp+si+var_E], al + inc si + +loc_9D35: ; CODE XREF: sub_9D20+Bj + cmp si, 0Ch + jl short loc_9D2D + les bx, dword_105DA + add bx, di + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + mov [bp+var_2], ax + cmp [bp+var_2], 0Ah + jl short loc_9D65 + mov bx, 0Ah + cwd + idiv bx + add al, [bp+var_E] + mov [bp+var_E], al + mov ax, [bp+var_2] + cwd + idiv bx + mov [bp+var_2], dx + +loc_9D65: ; CODE XREF: sub_9D20+2Ej + mov al, [bp+var_D] + add al, byte ptr [bp+var_2] + mov [bp+var_D], al + push di + push ss + lea ax, [bp+var_E] + push ax + call sub_9CB1 + pop di + pop si + leave + retn 2 +sub_9D20 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 + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +_argc = word ptr 6 +_argv = dword ptr 8 +_envp = dword ptr 0Ch + + enter 2, 0 + call sub_95F3 + or ax, ax + jz locret_9F8B + push ds + push offset aCOul ; "–²Žž‹ó1.dat" + call sub_CEE0 + call sub_276E + mov byte_10061, 0 + les bx, dword_105DA + cmp byte ptr es:[bx+15h], 0 + jz short loc_9DAD + call sub_C80C + +loc_9DAD: ; CODE XREF: _main+29j + call sub_C72 + push ds + push offset aMikoft_bft ; "MIKOFT.bft" + call sub_CB2 + push 0B00h + push ds + push offset aYume_efc ; "YUME.EFC" + call sub_C880 + add sp, 6 + call sub_CE3E + call sub_D784 + les bx, dword_105DA + cmp byte ptr es:[bx+35h], 0 + jz short loc_9E04 + call sub_B7D2 + call sub_1F20 + call sub_C96 + call sub_C990 + push large 0 + push ds + push offset path ; "op" + push ds + push offset path ; "op" + call _execl + add sp, 0Ch + +loc_9E04: ; CODE XREF: _main+60j + les bx, dword_105DA + mov al, es:[bx+0Ch] + add al, 0FFh + mov byte_F7E3, al + mov al, es:[bx+0Dh] + add al, 0FFh + mov byte_F7E4, al + cmp byte ptr es:[bx+33h], 0 + jz loc_9F85 + cmp byte ptr es:[bx+28h], 1 + jnz short loc_9E3F + call sub_9887 + mov [bp+var_1], al + cmp [bp+var_1], 4 + jz short loc_9E89 + cmp [bp+var_1], 5 + jnz short loc_9E3F + call sub_B972 + +loc_9E3F: ; CODE XREF: _main+ABj _main+BDj + push 600h + push ds + push offset aWin_m ; "win.m" + call sub_C880 + add sp, 6 + call sub_9624 + call sub_978D + push 100h + call sub_CEC2 + les bx, dword_105DA + cmp byte ptr es:[bx+28h], 1 + jnz loc_9F58 + call sub_9887 + mov [bp+var_1], al + cmp [bp+var_1], 0 + jnz short loc_9E7B + +loc_9E75: ; CODE XREF: _main+20Bj + call sub_9A2C + jmp loc_9F1E +; --------------------------------------------------------------------------- + +loc_9E7B: ; CODE XREF: _main+F6j + cmp [bp+var_1], 3 + jz short loc_9E89 + cmp [bp+var_1], 4 + jnz loc_9F38 + +loc_9E89: ; CODE XREF: _main+B7j _main+102j + call sub_9776 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + mov al, byte_F7E3 + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_2], al + cmp [bp+var_2], 0Ah + jb short loc_9EDC + les bx, off_E4B6 + mov al, es:[bx+1] + mov dl, [bp+var_2] + mov dh, 0 + mov bx, 0Ah + push ax + mov ax, dx + cwd + idiv bx + pop dx + add dl, al + mov bx, word ptr off_E4B6 + mov es:[bx+1], dl + mov al, [bp+var_2] + mov ah, 0 + mov bx, 0Ah + cwd + idiv bx + mov [bp+var_2], dl + +loc_9EDC: ; CODE XREF: _main+12Ej + les bx, off_E4B6 + mov al, [bp+var_2] + add es:[bx+2], al + cmp [bp+var_1], 4 + jnz short loc_9EF1 + inc byte ptr es:[bx+5] + +loc_9EF1: ; CODE XREF: _main+16Ej + 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_E72 + call sub_1758 + push large [off_E4B6] + call sub_A12E + call sub_AC6E + call sub_A174 + call sub_990C + call sub_9A2C + call sub_C96 + +loc_9F1E: ; CODE XREF: _main+FBj + call sub_D16F + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + +loc_9F2E: ; CODE XREF: _main+206j + call _execl + add sp, 0Ch + leave + retf +; --------------------------------------------------------------------------- + +loc_9F38: ; CODE XREF: _main+108j + call sub_9776 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + call sub_B7D2 + call sub_9F8D + or ax, ax + jnz short loc_9F85 + call sub_B92E + jmp short loc_9F69 +; --------------------------------------------------------------------------- + +loc_9F58: ; CODE XREF: _main+E8j + call sub_9776 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + +loc_9F69: ; CODE XREF: _main+1D9j + call sub_1F20 + call sub_C96 + call sub_C990 + push large 0 + push ds + push offset path ; "op" + push ds + push offset path ; "op" + jmp short loc_9F2E +; --------------------------------------------------------------------------- + +loc_9F85: ; CODE XREF: _main+A2j _main+1D4j + call sub_990C + jmp loc_9E75 +; --------------------------------------------------------------------------- + +locret_9F8B: ; CODE XREF: _main+9j + leave + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9F8D proc near ; CODE XREF: _main+1CFp + +var_6 = dword ptr -6 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov si, 1 + mov [bp+var_2], 0 + mov word ptr [bp+var_6+2], ds + mov word ptr [bp+var_6], 8D8h + xor di, di + jmp short loc_9FB3 +; --------------------------------------------------------------------------- + +loc_9FA7: ; CODE XREF: sub_9F8D+29j + les bx, dword_105DA + add bx, di + mov byte ptr es:[bx+18h], 0 + inc di + +loc_9FB3: ; CODE XREF: sub_9F8D+18j + cmp di, 10h + jl short loc_9FA7 + les bx, dword_105DA + cmp byte ptr es:[bx+36h], 0 + jnz short loc_9FC8 + xor ax, ax + jmp loc_A12A +; --------------------------------------------------------------------------- + +loc_9FC8: ; CODE XREF: sub_9F8D+34j + push large 0C00110h + push 0 + call far ptr loc_D712 + push large 1600110h + push 3 + call far ptr loc_D712 + les bx, dword_105DA + mov al, es:[bx+36h] + les bx, [bp+var_6] + add al, es:[bx] + mov es:[bx], al + push large 2400173h + push 2Fh ; '/' + push word ptr [bp+var_6+2] + push bx + call sub_D197 + push 1 + call sub_536 + +loc_A00B: ; CODE XREF: sub_9F8D+135j + call sub_D5A2 + test byte ptr word_100FC, 4 + jnz short loc_A01E + test byte ptr word_100FC, 8 + jz short loc_A056 + +loc_A01E: ; CODE XREF: sub_9F8D+88j + cmp [bp+var_2], 0 + jnz short loc_A05B + mov ax, 1 + sub ax, si + mov si, ax + push large 0C00110h + add ax, ax + mov dx, 2 + sub dx, ax + push dx + call far ptr loc_D712 + push large 1600110h + mov ax, si + add ax, ax + inc ax + push ax + call far ptr loc_D712 + mov [bp+var_2], 1 + jmp short loc_A05B +; --------------------------------------------------------------------------- + +loc_A056: ; CODE XREF: sub_9F8D+8Fj + mov [bp+var_2], 0 + +loc_A05B: ; CODE XREF: sub_9F8D+95j sub_9F8D+C7j + test byte ptr word_100FC+1, 20h + jnz short loc_A069 + test byte ptr word_100FC, 20h + jz short loc_A0B0 + +loc_A069: ; CODE XREF: sub_9F8D+D3j + cmp si, 1 + jnz short loc_A0C5 + push large 0C00000h + call sub_C36 + push large 2400173h + push large 2500183h + call sub_ACE + call sub_C60 + les bx, dword_105DA + dec byte ptr es:[bx+36h] + les bx, [bp+var_6] + dec byte ptr es:[bx] + push large 2400173h + push 2Fh ; '/' + push word ptr [bp+var_6+2] + push bx + call sub_D197 + jmp short loc_A0C5 +; --------------------------------------------------------------------------- + +loc_A0B0: ; CODE XREF: sub_9F8D+DAj + test byte ptr word_100FC+1, 10h + jz short loc_A0BB + xor si, si + jmp short loc_A0C5 +; --------------------------------------------------------------------------- + +loc_A0BB: ; CODE XREF: sub_9F8D+128j + push 1 + call sub_CB52 + jmp loc_A00B +; --------------------------------------------------------------------------- + +loc_A0C5: ; CODE XREF: sub_9F8D+DFj + ; sub_9F8D+121j ... + push 203h + call sub_CEC2 + push 1 + call sub_57A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + mov word_E968, 0 + call far ptr loc_17D0 + push 0 + push ds + push offset aOver_pi ; "over.pi" + call sub_D4AB + push 0 + call sub_CD0A + push large 0 + push 0 + call sub_CD2F + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + push 100h + call sub_CEC2 + les bx, dword_105DA + dec byte ptr es:[bx+33h] + mov byte ptr es:[bx+34h], 2 + mov ax, si + +loc_A12A: ; CODE XREF: sub_9F8D+38j + pop di + pop si + leave + retn +sub_9F8D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A12E proc near ; CODE XREF: _main+18Dp sub_B972+A1p ... + +arg_0 = dword ptr 4 + + push bp + mov bp, sp + push si + call sub_A174 + push large [bp+arg_0] + call sub_966 + or ax, ax + jnz short loc_A147 + mov ax, 1 + jmp short loc_A16F +; --------------------------------------------------------------------------- + +loc_A147: ; CODE XREF: sub_A12E+12j + call sub_9E4 + mov si, ax + push ax + call sub_21AE + mov word ptr dword_105C6+2, ax + mov word ptr dword_105C6, 0 + push ax + push word ptr dword_105C6 + push si + call sub_8B2 + call sub_846 + xor ax, ax + +loc_A16F: ; CODE XREF: sub_A12E+17j + pop si + pop bp + retn 4 +sub_A12E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A174 proc near ; CODE XREF: _main+193p sub_A12E+4p ... + push bp + mov bp, sp + cmp dword_105C6, 0 + jz short loc_A191 + push word ptr dword_105C6+2 + call sub_22B2 + mov dword_105C6, 0 + +loc_A191: ; CODE XREF: sub_A174+9j + pop bp + retn +sub_A174 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A193 proc near ; CODE XREF: sub_A1C7+1Ep sub_A23C+8Ap + push bp + mov bp, sp + call sub_724 + 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 + retn +sub_A193 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A1C7 proc near ; CODE XREF: sub_A23C+126p + ; sub_A64D+513p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + push di + mov ax, [bp+arg_2] + sar ax, 3 + mov dx, [bp+arg_0] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_0] + shl dx, 4 + add ax, dx + mov si, ax + call sub_A193 + xor di, di + jmp short loc_A225 +; --------------------------------------------------------------------------- + +loc_A1EC: ; CODE XREF: sub_A1C7+62j + mov [bp+var_2], 0 + jmp short loc_A21B +; --------------------------------------------------------------------------- + +loc_A1F3: ; CODE XREF: sub_A1C7+58j + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_10050 + add bx, si + mov ax, es:[bx] + mov [bp+var_4], ax + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov bx, word ptr dword_10050 + add bx, si + mov ax, [bp+var_4] + mov es:[bx], ax + add [bp+var_2], 2 + add si, 2 + +loc_A21B: ; CODE XREF: sub_A1C7+2Aj + cmp [bp+var_2], 28h ; '(' + jl short loc_A1F3 + inc di + add si, 28h ; '(' + +loc_A225: ; CODE XREF: sub_A1C7+23j + cmp di, 0C8h ; 'È' + jl short loc_A1EC + call sub_73A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + pop di + pop si + leave + retn 4 +sub_A1C7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A23C proc near ; CODE XREF: sub_A64D+4D3p + +var_8 = dword ptr -8 +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 +arg_6 = word ptr 0Ah + + enter 8, 0 + push si + push di + mov eax, dword_102FE + mov [bp+var_8], eax + cmp [bp+arg_2], 1 + jnz short loc_A257 + add word ptr [bp+var_8], 0A0h ; ' ' + jmp short loc_A26F +; --------------------------------------------------------------------------- + +loc_A257: ; CODE XREF: sub_A23C+12j + cmp [bp+arg_2], 2 + jnz short loc_A264 + add word ptr [bp+var_8], 0FA00h + jmp short loc_A26F +; --------------------------------------------------------------------------- + +loc_A264: ; CODE XREF: sub_A23C+1Fj + cmp [bp+arg_2], 3 + jnz short loc_A26F + add word ptr [bp+var_8], 0FAA0h + +loc_A26F: ; CODE XREF: sub_A23C+19j sub_A23C+26j ... + mov eax, [bp+var_8] + shr eax, 10h + mov dx, word ptr [bp+var_8] + shr dx, 4 + add ax, dx + mov dx, word ptr [bp+var_8] + and dx, 0Fh + mov word ptr [bp+var_8+2], ax + mov word ptr [bp+var_8], dx + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov ax, [bp+arg_6] + sar ax, 3 + mov dx, [bp+arg_4] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_4] + shl dx, 4 + add ax, dx + mov si, ax + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + xor di, di + jmp loc_A34E +; --------------------------------------------------------------------------- + +loc_A2B4: ; CODE XREF: sub_A23C+116j + push large 190h + push large [bp+var_8] + push 140h + call sub_2C6E + call sub_A193 + mov ax, 0FFh + mov dx, 4A2h + out dx, ax + mov ax, 3100h + mov dx, 4A4h + out dx, ax + mov ax, 0Fh + mov dx, 4AEh + out dx, ax + mov bx, [bp+arg_0] + shl bx, 3 + mov ax, di + and ax, 3 + add ax, ax + add bx, ax + mov ax, [bx+8E2h] + mov dx, 4A8h + out dx, ax + mov [bp+var_4], 7D00h + mov [bp+var_2], 0 + jmp short loc_A31E +; --------------------------------------------------------------------------- + +loc_A301: ; CODE XREF: sub_A23C+E6j + les bx, dword_10050 + add bx, [bp+var_4] + mov ax, es:[bx] + mov bx, word ptr dword_10050 + add bx, si + mov es:[bx], ax + inc [bp+var_2] + add si, 2 + add [bp+var_4], 2 + +loc_A31E: ; CODE XREF: sub_A23C+C3j + cmp [bp+var_2], 14h + jl short loc_A301 + call sub_73A + add si, 28h ; '(' + add word ptr [bp+var_8], 140h + mov eax, [bp+var_8] + shr eax, 10h + mov dx, word ptr [bp+var_8] + shr dx, 4 + add ax, dx + mov dx, word ptr [bp+var_8] + and dx, 0Fh + mov word ptr [bp+var_8+2], ax + mov word ptr [bp+var_8], dx + inc di + +loc_A34E: ; CODE XREF: sub_A23C+75j + cmp di, 0C8h ; 'È' + jl loc_A2B4 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push [bp+arg_6] + push [bp+arg_4] + call sub_A1C7 + pop di + pop si + leave + retn 8 +sub_A23C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A36B proc near ; CODE XREF: sub_A64D+3C8p + ; sub_AC6E+2Dp + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + call sub_A43C + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 3C00h + call sub_21AE + mov word ptr dword_105CA+2, ax + mov word ptr dword_105CA, 0 + xor si, si + mov di, 140h + mov [bp+var_4], 0 + jmp loc_A430 +; --------------------------------------------------------------------------- + +loc_A398: ; CODE XREF: sub_A36B+C9j + mov [bp+var_2], 50h ; 'P' + mov [bp+var_6], 0 + jmp loc_A424 +; --------------------------------------------------------------------------- + +loc_A3A5: ; CODE XREF: sub_A36B+BDj + mov ax, [bp+var_2] + sar ax, 3 + mov dx, di + shl dx, 6 + add ax, dx + mov dx, di + shl dx, 4 + add ax, dx + mov [bp+var_8], ax + les bx, dword_10050 + add bx, [bp+var_8] + mov ax, es:[bx] + mov dx, si + add dx, dx + les bx, dword_105CA + add bx, dx + mov es:[bx], ax + inc si + les bx, dword_10054 + add bx, [bp+var_8] + mov ax, es:[bx] + mov dx, si + add dx, dx + les bx, dword_105CA + add bx, dx + mov es:[bx], ax + inc si + les bx, dword_10058 + add bx, [bp+var_8] + mov ax, es:[bx] + mov dx, si + add dx, dx + les bx, dword_105CA + add bx, dx + mov es:[bx], ax + inc si + les bx, dword_1005C + add bx, [bp+var_8] + mov ax, es:[bx] + mov dx, si + add dx, dx + les bx, dword_105CA + add bx, dx + mov es:[bx], ax + inc si + add [bp+var_6], 2 + add [bp+var_2], 10h + +loc_A424: ; CODE XREF: sub_A36B+37j + cmp [bp+var_6], 3Ch ; '<' + jl loc_A3A5 + inc [bp+var_4] + inc di + +loc_A430: ; CODE XREF: sub_A36B+2Aj + cmp [bp+var_4], 40h ; '@' + jl loc_A398 + pop di + pop si + leave + retn +sub_A36B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A43C proc near ; CODE XREF: sub_A36B+6p sub_AC6E+135p + push bp + mov bp, sp + cmp dword_105CA, 0 + jz short loc_A459 + push word ptr dword_105CA+2 + call sub_22B2 + mov dword_105CA, 0 + +loc_A459: ; CODE XREF: sub_A43C+9j + pop bp + retn +sub_A43C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A45B proc near ; CODE XREF: sub_A5FC+43p sub_A5FC+4Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + xor cx, cx + mov si, 140h + mov [bp+var_4], 0 + jmp loc_A4FE +; --------------------------------------------------------------------------- + +loc_A46E: ; CODE XREF: sub_A45B+A7j + mov [bp+var_2], 50h ; 'P' + mov [bp+var_6], 0 + jmp short loc_A4F4 +; --------------------------------------------------------------------------- + +loc_A47A: ; CODE XREF: sub_A45B+9Dj + mov ax, [bp+var_2] + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + mov dx, si + shl dx, 4 + add ax, dx + mov di, ax + mov ax, cx + add ax, ax + les bx, dword_105CA + add bx, ax + mov ax, es:[bx] + les bx, dword_10050 + add bx, di + mov es:[bx], ax + inc cx + mov ax, cx + add ax, ax + les bx, dword_105CA + add bx, ax + mov ax, es:[bx] + les bx, dword_10054 + add bx, di + mov es:[bx], ax + inc cx + mov ax, cx + add ax, ax + les bx, dword_105CA + add bx, ax + mov ax, es:[bx] + les bx, dword_10058 + add bx, di + mov es:[bx], ax + inc cx + mov ax, cx + add ax, ax + les bx, dword_105CA + add bx, ax + mov ax, es:[bx] + les bx, dword_1005C + add bx, di + mov es:[bx], ax + inc cx + add [bp+var_6], 2 + add [bp+var_2], 10h + +loc_A4F4: ; CODE XREF: sub_A45B+1Dj + cmp [bp+var_6], 3Ch ; '<' + jl short loc_A47A + inc [bp+var_4] + inc si + +loc_A4FE: ; CODE XREF: sub_A45B+10j + cmp [bp+var_4], 40h ; '@' + jl loc_A46E + pop di + pop si + leave + retn +sub_A45B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A50A proc near ; CODE XREF: sub_A5D3+15p sub_A64D+63p ... + +var_2 = byte ptr -2 +var_1 = byte ptr -1 +arg_0 = dword ptr 4 + + enter 2, 0 + les bx, dword_105C6 + mov cl, es:[bx] + inc word ptr dword_105C6 + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+var_1], al + inc word ptr dword_105C6 + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+var_2], al + inc word ptr dword_105C6 + mov al, cl + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 2 + jnz short loc_A554 + les bx, [bp+arg_0] + mov ax, word_105D8 + mov es:[bx], ax + sub word ptr dword_105C6, 3 + leave + retn 4 +; --------------------------------------------------------------------------- + +loc_A554: ; CODE XREF: sub_A50A+36j + mov al, [bp+var_1] + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 2 + jnz short loc_A578 + mov al, cl + mov ah, 0 + add ax, 0FFD0h + les bx, [bp+arg_0] + mov es:[bx], ax + sub word ptr dword_105C6, 2 + leave + retn 4 +; --------------------------------------------------------------------------- + +loc_A578: ; CODE XREF: sub_A50A+56j + mov al, [bp+var_2] + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 2 + jnz short loc_A5A8 + mov al, cl + mov ah, 0 + add ax, 0FFD0h + imul ax, 0Ah + mov dl, [bp+var_1] + mov dh, 0 + add ax, dx + add ax, 0FFD0h + les bx, [bp+arg_0] + mov es:[bx], ax + dec word ptr dword_105C6 + leave + retn 4 +; --------------------------------------------------------------------------- + +loc_A5A8: ; CODE XREF: sub_A50A+7Aj + mov al, cl + mov ah, 0 + add ax, 0FFD0h + imul ax, 64h + mov dl, [bp+var_1] + mov dh, 0 + add dx, 0FFD0h + imul dx, 0Ah + add ax, dx + mov dl, [bp+var_2] + mov dh, 0 + add ax, dx + add ax, 0FFD0h + les bx, [bp+arg_0] + mov es:[bx], ax + leave + retn 4 +sub_A50A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5D3 proc near ; CODE XREF: sub_A64D+1A7p + ; sub_A64D+4C2p + +arg_0 = dword ptr 4 + + push bp + mov bp, sp + les bx, dword_105C6 + cmp byte ptr es:[bx], 2Ch ; ',' + jnz short loc_A5EF + inc word ptr dword_105C6 + push large [bp+arg_0] + call sub_A50A + pop bp + retn 4 +; --------------------------------------------------------------------------- + +loc_A5EF: ; CODE XREF: sub_A5D3+Bj + les bx, [bp+arg_0] + mov ax, word_105D8 + mov es:[bx], ax + pop bp + retn 4 +sub_A5D3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5FC proc near ; CODE XREF: sub_A64D+344p + ; sub_AC6E+EDp + push bp + mov bp, sp + add word_105D0, 10h + cmp word_105D0, 230h + jl short loc_A64B + add word_105D2, 10h + mov word_105D0, 90h ; '' + cmp word_105D2, 180h + jl short loc_A64B + cmp byte_105CE, 0 + jnz short loc_A62D + push 0 + call sub_D6C5 + +loc_A62D: ; CODE XREF: sub_A5FC+28j + mov word_105D0, 50h ; 'P' + mov word_105D2, 140h + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_A45B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_A45B + +loc_A64B: ; CODE XREF: sub_A5FC+Ej sub_A5FC+21j + pop bp + retn +sub_A5FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A64D proc near ; CODE XREF: sub_AC6E+83p + +var_16 = byte ptr -16h +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = byte ptr 4 + + enter 16h, 0 + push si + mov al, [bp+arg_0] + mov ah, 0 + push ax ; ch + call _tolower + pop cx + mov [bp+arg_0], al + mov ah, 0 + mov [bp+var_6], ax + mov cx, 10h ; switch 16 cases + mov bx, offset word_AC2E + +loc_A66C: ; CODE XREF: sub_A64D+2Aj + mov ax, cs:[bx] + cmp ax, [bp+var_6] + jz short loc_A67C + add bx, 2 + loop loc_A66C + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A67C: ; CODE XREF: sub_A64D+25j + jmp word ptr cs:[bx+20h] ; switch jump + +loc_A680: ; DATA XREF: seg001:165Eo + add word_105D2, 10h ; jumptable 0000A67C case 110 + mov word_105D0, 50h ; 'P' + cmp word_105D2, 180h + jl loc_AC1E ; default + +loc_A695: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 115 + mov al, es:[bx] + mov [bp+arg_0], al + cmp [bp+arg_0], 2Dh ; '-' + jz short loc_A6C4 + mov word_105D8, 0 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp byte_105CE, 0 + jnz short loc_A6C8 + push [bp+var_2] + call sub_D6C5 + jmp short loc_A6C8 +; --------------------------------------------------------------------------- + +loc_A6C4: ; CODE XREF: sub_A64D+56j + inc word ptr dword_105C6 + +loc_A6C8: ; CODE XREF: sub_A64D+6Bj sub_A64D+75j + mov word_105D0, 50h ; 'P' + mov word_105D2, 140h + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_A45B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_A45B + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A6E9: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov word_105D8, 0Fh ; jumptable 0000A67C case 99 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov al, byte ptr [bp+var_2] + mov byte_105D6, al + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A700: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov word_105D8, 2 ; jumptable 0000A67C case 98 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov bx, [bp+var_2] + cmp bx, 3 + ja loc_AC1E ; default + add bx, bx + jmp cs:off_AC26[bx] + +loc_A71F: ; DATA XREF: seg001:off_AC26o + mov byte_105D7, 0 + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A727: ; CODE XREF: sub_A64D+CDj + ; DATA XREF: seg001:1638o + mov byte_105D7, 10h + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A72F: ; CODE XREF: sub_A64D+CDj + ; DATA XREF: seg001:163Ao + mov byte_105D7, 20h ; ' ' + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A737: ; CODE XREF: sub_A64D+CDj + ; DATA XREF: seg001:163Co + mov byte_105D7, 30h ; '0' + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A73F: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 119 + mov al, es:[bx] + mov ah, 0 + push ax ; ch + call _tolower + pop cx + mov [bp+arg_0], al + cmp [bp+arg_0], 6Fh ; 'o' + jz short loc_A75E + cmp [bp+arg_0], 69h ; 'i' + jnz short loc_A78C + +loc_A75E: ; CODE XREF: sub_A64D+109j + inc word ptr dword_105C6 + mov word_105D8, 1 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp [bp+arg_0], 69h ; 'i' + jnz short loc_A781 + push [bp+var_2] + call sub_208A + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A781: ; CODE XREF: sub_A64D+127j + push [bp+var_2] + call sub_20CA + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A78C: ; CODE XREF: sub_A64D+10Fj + mov word_105D8, 40h ; '@' + cmp [bp+arg_0], 6Dh ; 'm' + jz short loc_A7CF + cmp [bp+arg_0], 6Bh ; 'k' + jnz short loc_A7A2 + inc word ptr dword_105C6 + +loc_A7A2: ; CODE XREF: sub_A64D+14Fj + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp byte_105CE, 0 + jnz loc_AC1E ; default + cmp [bp+arg_0], 6Bh ; 'k' + jz short loc_A7C4 + push [bp+var_2] + call sub_CB52 + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A7C4: ; CODE XREF: sub_A64D+16Aj + push [bp+var_2] + call sub_D47A + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A7CF: ; CODE XREF: sub_A64D+149j + inc word ptr dword_105C6 + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+arg_0], al + cmp [bp+arg_0], 6Bh ; 'k' + jnz short loc_A7E7 + inc word ptr dword_105C6 + +loc_A7E7: ; CODE XREF: sub_A64D+194j + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + push ss + lea ax, [bp+var_4] + push ax + call sub_A5D3 + cmp byte_105CE, 0 + jnz loc_AC1E ; default + cmp [bp+arg_0], 6Bh ; 'k' + jz short loc_A814 + push [bp+var_2] + push [bp+var_4] + call sub_D3FC + jmp loc_AB63 +; --------------------------------------------------------------------------- + +loc_A814: ; CODE XREF: sub_A64D+1B7j + push [bp+var_2] + push [bp+var_4] + call sub_D42D + jmp loc_AB63 +; --------------------------------------------------------------------------- + +loc_A822: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 118 + cmp byte ptr es:[bx], 70h ; 'p' + jz short loc_A843 + mov word_105D8, 1 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov ax, [bp+var_2] + mov word_105D4, ax + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A843: ; CODE XREF: sub_A64D+1DDj + inc word ptr dword_105C6 + mov word_105D8, 0 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov dx, 0A4h ; '¤' + mov al, byte ptr [bp+var_2] + out dx, al ; Interrupt Controller #2, 8259A + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A85F: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov word_105D8, 64h ; 'd' ; jumptable 0000A67C case 116 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp byte_105CE, 0 + jnz short loc_A87B + push 1 + call sub_CB52 + +loc_A87B: ; CODE XREF: sub_A64D+225j + mov ax, [bp+var_2] + mov word_E968, ax + call far ptr loc_17D0 + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A889: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 102 + mov al, es:[bx] + mov [bp+arg_0], al + cmp [bp+arg_0], 6Dh ; 'm' + jz short loc_A8D5 + cmp [bp+arg_0], 69h ; 'i' + jz short loc_A8A7 + cmp [bp+arg_0], 6Fh ; 'o' + jnz loc_AC1E ; default + +loc_A8A7: ; CODE XREF: sub_A64D+250j + inc word ptr dword_105C6 + mov word_105D8, 1 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp [bp+arg_0], 69h ; 'i' + jnz short loc_A8CA + push [bp+var_2] + call sub_536 + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A8CA: ; CODE XREF: sub_A64D+270j + push [bp+var_2] + call sub_57A + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A8D5: ; CODE XREF: sub_A64D+24Aj + inc word ptr dword_105C6 + mov word_105D8, 1 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov ax, [bp+var_2] + add ax, 200h + push ax + jmp loc_AB8B +; --------------------------------------------------------------------------- + +loc_A8F1: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 103 + cmp byte ptr es:[bx], 61h ; 'a' + jz short loc_A945 + mov word_105D8, 8 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov [bp+var_4], 0 + jmp short loc_A933 +; --------------------------------------------------------------------------- + +loc_A910: ; CODE XREF: sub_A64D+2ECj + test byte ptr [bp+var_4], 1 + jz short loc_A91A + push 4 + jmp short loc_A91D +; --------------------------------------------------------------------------- + +loc_A91A: ; CODE XREF: sub_A64D+2C7j + push 18Ch + +loc_A91D: ; CODE XREF: sub_A64D+2CBj + call sub_1700 + cmp byte_105CE, 0 + jnz short loc_A930 + push 1 + call sub_CB52 + +loc_A930: ; CODE XREF: sub_A64D+2DAj + inc [bp+var_4] + +loc_A933: ; CODE XREF: sub_A64D+2C1j + mov ax, [bp+var_4] + cmp ax, [bp+var_2] + jle short loc_A910 + push 0 + call sub_1700 + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A945: ; CODE XREF: sub_A64D+2ACj + inc word ptr dword_105C6 + mov word_105D8, 0 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push word_105D0 + push word_105D2 + mov ax, [bp+var_2] + dec ax + push ax + mov al, byte_105D6 + mov ah, 0 + push ax + call sub_F58 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push word_105D0 + push word_105D2 + push [bp+var_2] + mov al, byte_105D6 + mov ah, 0 + push ax + call sub_F58 + call sub_A5FC + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A997: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov word_105D8, 0 ; jumptable 0000A67C case 107 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + cmp byte_105CE, 0 + jnz loc_AC1E ; default + push 0 + call sub_D6C5 + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_A9B8: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov dx, 0A6h ; '¦' ; jumptable 0000A67C case 64 + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_A9D1: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 112 + mov al, es:[bx] + mov [bp+arg_0], al + inc word ptr dword_105C6 + cmp [bp+arg_0], 3Dh ; '=' + jz short loc_A9EB + cmp [bp+arg_0], 40h ; '@' + jnz short loc_AA1B + +loc_A9EB: ; CODE XREF: sub_A64D+396j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+arg_0], 3Dh ; '=' + jnz short loc_A9FE + push 0 + call sub_CD0A + +loc_A9FE: ; CODE XREF: sub_A64D+3A8j + push large 0 + push 0 + call sub_CD2F + push 0 + call sub_EAC + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_A36B + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AA1B: ; CODE XREF: sub_A64D+39Cj + cmp [bp+arg_0], 2Dh ; '-' + jnz short loc_AA32 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AA32: ; CODE XREF: sub_A64D+3D2j + cmp [bp+arg_0], 70h ; 'p' + jnz short loc_AA42 + push 0 + call sub_CD0A + jmp loc_AB90 +; --------------------------------------------------------------------------- + +loc_AA42: ; CODE XREF: sub_A64D+3E9j + cmp [bp+arg_0], 2Ch ; ',' + jz short loc_AA4F + dec word ptr dword_105C6 + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AA4F: ; CODE XREF: sub_A64D+3F9j + mov [bp+var_2], 0 + jmp short loc_AA84 +; --------------------------------------------------------------------------- + +loc_AA56: ; CODE XREF: sub_A64D+43Bj + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+arg_0], al + inc word ptr dword_105C6 + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 20h + jnz short loc_AA8A + cmp [bp+arg_0], 20h ; ' ' + jz short loc_AA8A + lea bx, [bp+var_16] + add bx, [bp+var_2] + mov al, [bp+arg_0] + mov ss:[bx], al + inc [bp+var_2] + +loc_AA84: ; CODE XREF: sub_A64D+407j + cmp [bp+var_2], 0Ch + jl short loc_AA56 + +loc_AA8A: ; CODE XREF: sub_A64D+420j + ; sub_A64D+426j + lea bx, [bp+var_16] + add bx, [bp+var_2] + mov byte ptr ss:[bx], 0 + push 0 + push ss + lea ax, [bp+var_16] + push ax + call sub_D4AB + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AAA3: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov word_105D8, 4 ; jumptable 0000A67C case 61 + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+arg_0], al + cmp [bp+arg_0], 3Dh ; '=' + jz short loc_AAF8 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+var_2], 4 + jge short loc_AAD5 + jmp short loc_AB44 +; --------------------------------------------------------------------------- + +loc_AAD5: ; CODE XREF: sub_A64D+484j + push large 0C00000h + call sub_C36 + push large 140040h + push large 3B0107h + call sub_B9E + call sub_C60 + jmp short loc_AB54 +; --------------------------------------------------------------------------- + +loc_AAF8: ; CODE XREF: sub_A64D+46Aj + inc word ptr dword_105C6 + push ss + lea ax, [bp+var_2] + push ax + call sub_A50A + mov word_105D8, 1 + push ss + lea ax, [bp+var_4] + push ax + call sub_A5D3 + xor si, si + jmp short loc_AB33 +; --------------------------------------------------------------------------- + +loc_AB16: ; CODE XREF: sub_A64D+4E9j + push large 0A00040h + push [bp+var_2] + push si + call sub_A23C + cmp byte_105CE, 0 + jnz short loc_AB32 + push [bp+var_4] + call sub_CB52 + +loc_AB32: ; CODE XREF: sub_A64D+4DBj + inc si + +loc_AB33: ; CODE XREF: sub_A64D+4C7j + cmp si, 4 + jl short loc_AB16 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + +loc_AB44: ; CODE XREF: sub_A64D+486j + push large 0A00040h + push 0 + push [bp+var_2] + call sub_D4F1 + +loc_AB54: ; CODE XREF: sub_A64D+4A9j + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 0A00040h + call sub_A1C7 + +loc_AB63: ; CODE XREF: sub_A64D+1C4j + ; sub_A64D+1D2j + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AB66: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + les bx, dword_105C6 ; jumptable 0000A67C case 109 + mov al, es:[bx] + mov [bp+arg_0], al + cmp [bp+arg_0], 24h ; '$' + jnz short loc_AB7F + inc word ptr dword_105C6 + push 100h + jmp short loc_AB8B +; --------------------------------------------------------------------------- + +loc_AB7F: ; CODE XREF: sub_A64D+527j + cmp [bp+arg_0], 2Ah ; '*' + jnz short loc_AB93 + inc word ptr dword_105C6 + +loc_AB89: ; CODE XREF: sub_A64D+5AFj + push 0 + +loc_AB8B: ; CODE XREF: sub_A64D+2A1j + ; sub_A64D+530j + call sub_CEC2 + +loc_AB90: ; CODE XREF: sub_A64D+131j + ; sub_A64D+13Cj ... + jmp loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AB93: ; CODE XREF: sub_A64D+536j + cmp [bp+arg_0], 2Ch ; ',' + jnz loc_AC1E ; default + inc word ptr dword_105C6 + mov [bp+var_2], 0 + jmp short loc_ABD4 +; --------------------------------------------------------------------------- + +loc_ABA6: ; CODE XREF: sub_A64D+58Bj + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+arg_0], al + inc word ptr dword_105C6 + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 20h + jnz short loc_ABDA + cmp [bp+arg_0], 20h ; ' ' + jz short loc_ABDA + lea bx, [bp+var_16] + add bx, [bp+var_2] + mov al, [bp+arg_0] + mov ss:[bx], al + inc [bp+var_2] + +loc_ABD4: ; CODE XREF: sub_A64D+557j + cmp [bp+var_2], 0Ch + jl short loc_ABA6 + +loc_ABDA: ; CODE XREF: sub_A64D+570j + ; sub_A64D+576j + lea bx, [bp+var_16] + add bx, [bp+var_2] + mov byte ptr ss:[bx], 0 + push 100h + call sub_CEC2 + push 600h + push ss + lea ax, [bp+var_16] + push ax + call sub_C880 + add sp, 6 + jmp short loc_AB89 +; --------------------------------------------------------------------------- + +loc_ABFE: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + push ss ; jumptable 0000A67C case 101 + lea ax, [bp+var_2] + push ax + call sub_A50A + call sub_CE3E + push [bp+var_2] + call sub_CE4A + call sub_CE86 + jmp short loc_AC1E ; default +; --------------------------------------------------------------------------- + +loc_AC1A: ; CODE XREF: sub_A64D:loc_A67Cj + ; DATA XREF: seg001:165Eo + mov al, 0FFh ; jumptable 0000A67C case 36 + jmp short loc_AC20 +; --------------------------------------------------------------------------- + +loc_AC1E: ; CODE XREF: sub_A64D+2Cj sub_A64D+44j ... + mov al, 0 ; default + +loc_AC20: ; CODE XREF: sub_A64D+5CFj + pop si + leave + retn 2 +sub_A64D endp + +; --------------------------------------------------------------------------- + db 0 +off_AC26 dw offset loc_A71F ; DATA XREF: sub_A64D+CDr + dw offset loc_A727 + dw offset loc_A72F + dw offset loc_A737 +word_AC2E dw 24h, 3Dh, 40h, 62h ; DATA XREF: sub_A64D+1Co + dw 63h, 65h, 66h, 67h ; value table for switch statement + dw 6Bh, 6Dh, 6Eh, 70h + dw 73h, 74h, 76h, 77h + dw offset loc_AC1A ; jump table for switch statement + dw offset loc_AAA3 + dw offset loc_A9B8 + dw offset loc_A700 + dw offset loc_A6E9 + dw offset loc_ABFE + dw offset loc_A889 + dw offset loc_A8F1 + dw offset loc_A997 + dw offset loc_AB66 + dw offset loc_A680 + dw offset loc_A9D1 + dw offset loc_A695 + dw offset loc_A85F + dw offset loc_A822 + dw offset loc_A73F + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AC6E proc near ; CODE XREF: _main+190p sub_B972+A4p ... + +var_6 = dword ptr -6 +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 6, 0 + push si + mov word ptr [bp+var_6+2], ds + mov word ptr [bp+var_6], 902h + mov word_105D0, 50h ; 'P' + mov word_105D2, 140h + mov word_105D4, 1 + mov byte_105D6, 0Fh + mov byte_105D7, 20h ; ' ' + mov [bp+var_2], 0 + call sub_A36B + mov byte_105CE, 0 + +loc_ACA3: ; CODE XREF: sub_AC6E+64j sub_AC6E+6Aj ... + call sub_D5A2 + test byte ptr word_100FC+1, 10h + jz short loc_ACB6 + mov byte_105CE, 1 + jmp short loc_ACBB +; --------------------------------------------------------------------------- + +loc_ACB6: ; CODE XREF: sub_AC6E+3Fj + mov byte_105CE, 0 + +loc_ACBB: ; CODE XREF: sub_AC6E+46j + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+var_1], al + inc word ptr dword_105C6 + mov ah, 0 + mov bx, ax + test byte ptr [bx+0F05h], 20h + jnz short loc_ACA3 + cmp [bp+var_1], 20h ; ' ' + jz short loc_ACA3 + cmp [bp+var_1], 5Ch ; '\' + jnz short loc_ACFB + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+var_1], al + inc word ptr dword_105C6 + push word ptr [bp+var_1] + call sub_A64D + cmp al, 0FFh + jnz short loc_ACA3 + jmp loc_ADA0 +; --------------------------------------------------------------------------- + +loc_ACFB: ; CODE XREF: sub_AC6E+70j + les bx, [bp+var_6] + mov al, [bp+var_1] + mov es:[bx], al + les bx, dword_105C6 + mov al, es:[bx] + mov [bp+var_1], al + les bx, [bp+var_6] + mov es:[bx+1], al + inc word ptr dword_105C6 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push word_105D0 + push word_105D2 + mov al, byte_105D6 + or al, byte_105D7 + mov ah, 0 + push ax + push word ptr [bp+var_6+2] + push bx + call sub_D197 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push word_105D0 + push word_105D2 + mov al, byte_105D6 + or al, byte_105D7 + mov ah, 0 + push ax + push large [bp+var_6] + call sub_D197 + call sub_A5FC + cmp byte_105CE, 0 + jnz loc_ACA3 + cmp word_100FC, 0 + jnz short loc_AD7A + push word_105D4 + call sub_CB52 + jmp loc_ACA3 +; --------------------------------------------------------------------------- + +loc_AD7A: ; CODE XREF: sub_AC6E+FEj + mov ax, word_105D4 + mov bx, 3 + cwd + idiv bx + mov si, ax + test [bp+var_2], 1 + jnz short loc_AD8F + or si, si + jz short loc_AD9A + +loc_AD8F: ; CODE XREF: sub_AC6E+11Bj + or si, si + jnz short loc_AD94 + inc si + +loc_AD94: ; CODE XREF: sub_AC6E+123j + push si + call sub_CB52 + +loc_AD9A: ; CODE XREF: sub_AC6E+11Fj + inc [bp+var_2] + jmp loc_ACA3 +; --------------------------------------------------------------------------- + +loc_ADA0: ; CODE XREF: sub_AC6E+8Aj + call sub_A45B + call sub_A43C + pop si + leave + retn +sub_AC6E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADA9 proc near ; CODE XREF: sub_ADE5+72p sub_AE8E+51p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov si, 21EEh + xor dx, dx + jmp short loc_ADD1 +; --------------------------------------------------------------------------- + +loc_ADB5: ; CODE XREF: sub_ADA9+2Cj + mov al, [si+1] + mov [bp+var_1], al + mov al, byte_106AB + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, byte_106AA + add al, [bp+var_1] + add al, [si] + mov [si], al + inc dx + inc si + +loc_ADD1: ; CODE XREF: sub_ADA9+Aj + cmp dx, 0CBh ; 'Ë' + jl short loc_ADB5 + mov al, byte_106AA + add al, byte_106AB + add al, [si] + mov [si], al + pop si + leave + retn +sub_ADA9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADE5 proc near ; CODE XREF: sub_AE8E:loc_AEE9p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 29h ; ')' + xor si, si + jmp short loc_AE26 +; --------------------------------------------------------------------------- + +loc_ADF3: ; CODE XREF: sub_ADE5+44j + xor di, di + jmp short loc_AE02 +; --------------------------------------------------------------------------- + +loc_ADF7: ; CODE XREF: sub_ADE5+20j + mov bx, si + shl bx, 3 + mov byte ptr [bx+di+21F0h], 2Ah ; '*' + inc di + +loc_AE02: ; CODE XREF: sub_ADE5+10j + cmp di, 8 + jl short loc_ADF7 + xor di, di + jmp short loc_AE16 +; --------------------------------------------------------------------------- + +loc_AE0B: ; CODE XREF: sub_ADE5+34j + mov bx, si + imul bx, 0Ah + mov byte ptr [bx+di+2242h], 20h ; ' ' + inc di + +loc_AE16: ; CODE XREF: sub_ADE5+24j + cmp di, 0Ah + jl short loc_AE0B + mov byte ptr [si+22A6h], 0 + mov byte ptr [si+22B0h], 21h ; '!' + inc si + +loc_AE26: ; CODE XREF: sub_ADE5+Cj + cmp si, 0Ah + jl short loc_ADF3 + mov byte_10636, 21h ; '!' + mov di, 1 + jmp short loc_AE45 +; --------------------------------------------------------------------------- + +loc_AE35: ; CODE XREF: sub_ADE5+63j + mov bx, di + imul bx, 0Ah + mov al, [bp+var_1] + mov [bx+2245h], al + inc di + dec [bp+var_1] + +loc_AE45: ; CODE XREF: sub_ADE5+4Ej + cmp di, 0Ah + jl short loc_AE35 + mov byte_10630, 12h + xor si, si + jmp short loc_AE5B +; --------------------------------------------------------------------------- + +loc_AE53: ; CODE XREF: sub_ADE5+79j + push si + call sub_AEF0 + call sub_ADA9 + inc si + +loc_AE5B: ; CODE XREF: sub_ADE5+6Cj + cmp si, 4 + jl short loc_AE53 + pop di + pop si + leave + retn +sub_ADE5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE64 proc near ; CODE XREF: sub_AE8E+54p + push bp + mov bp, sp + push si + xor cx, cx + mov si, 21F0h + xor dx, dx + jmp short loc_AE79 +; --------------------------------------------------------------------------- + +loc_AE71: ; CODE XREF: sub_AE64+19j + mov al, [si] + mov ah, 0 + add cx, ax + inc dx + inc si + +loc_AE79: ; CODE XREF: sub_AE64+Bj + cmp dx, 0CCh ; 'Ì' + jl short loc_AE71 + cmp word_105DE, cx + jz short loc_AE89 + mov al, 1 + jmp short loc_AE8B +; --------------------------------------------------------------------------- + +loc_AE89: ; CODE XREF: sub_AE64+1Fj + mov al, 0 + +loc_AE8B: ; CODE XREF: sub_AE64+23j + pop si + pop bp + retn +sub_AE64 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE8E proc near ; CODE XREF: sub_B7D2+31p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push ds + push word_ED66 + call sub_896 + or ax, ax + jnz short loc_AEB0 + push ds + push word_ED66 + call sub_856 + call sub_846 + jmp short loc_AEE9 +; --------------------------------------------------------------------------- + +loc_AEB0: ; CODE XREF: sub_AE8E+Fj + push ds + push word_ED66 + call sub_966 + mov ax, [bp+arg_0] + imul ax, 0CEh + movzx eax, ax + push eax + push 0 + call sub_9A2 + push ds + push offset word_105DE + push 0CEh ; 'Î' + call sub_8B2 + call sub_846 + call sub_ADA9 + call sub_AE64 + or al, al + jz short loc_AEEC + +loc_AEE9: ; CODE XREF: sub_AE8E+20j + call sub_ADE5 + +loc_AEEC: ; CODE XREF: sub_AE8E+59j + pop bp + retn 2 +sub_AE8E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AEF0 proc near ; CODE XREF: sub_ADE5+6Fp sub_B7D2+B9p + +var_4 = word ptr -4 +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov [bp+var_4], 0 + call sub_1A3E + mov byte_106AA, al + call sub_1A3E + mov byte_106AB, al + call sub_1A3E + mov byte_10631, al + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 63h ; 'c' + jnz short loc_AF2A + cmp byte ptr es:[bx+36h], 3 + jnz short loc_AF2A + mov byte_10630, 63h ; 'c' + +loc_AF2A: ; CODE XREF: sub_AEF0+2Cj sub_AEF0+33j + mov si, 21F0h + xor di, di + jmp short loc_AF3A +; --------------------------------------------------------------------------- + +loc_AF31: ; CODE XREF: sub_AEF0+4Ej + mov al, [si] + mov ah, 0 + add [bp+var_4], ax + inc di + inc si + +loc_AF3A: ; CODE XREF: sub_AEF0+3Fj + cmp di, 0CCh ; 'Ì' + jl short loc_AF31 + mov ax, [bp+var_4] + mov word_105DE, ax + mov si, 22BAh + dec si + mov al, byte_106AB + mov [bp+var_1], al + mov di, 0CBh ; 'Ë' + jmp short loc_AF73 +; --------------------------------------------------------------------------- + +loc_AF55: ; CODE XREF: sub_AEF0+85j + mov al, [si] + mov dl, byte_106AA + add dl, [bp+var_1] + sub al, dl + mov [si], al + mov al, [si] + mov [bp+var_1], al + mov al, byte_106AB + ror [bp+var_1], 3 + xor [bp+var_1], al + dec di + dec si + +loc_AF73: ; CODE XREF: sub_AEF0+63j + or di, di + jge short loc_AF55 + push ds + push word_ED66 + call sub_786 + mov ax, [bp+arg_0] + imul ax, 0CEh + movzx eax, ax + push eax + push 0 + call sub_9A2 + push ds + push offset word_105DE + push 0CEh ; 'Î' + call sub_9F2 + call sub_846 + pop di + pop si + leave + retn 2 +sub_AEF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AFAC proc near ; CODE XREF: sub_B7D2:loc_B81Fp + push bp + mov bp, sp + mov word_E968, 0 + call far ptr loc_17D0 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aRegib_pi ; "regib.pi" + call sub_D4AB + push 0 + call sub_CD0A + push large 0 + push 0 + call sub_CD2F + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + les bx, dword_105DA + mov al, es:[bx+0Bh] + mov bx, word_ED68 + add [bx+3], al + push 0 + push ds + push bx + push 0 + call sub_CF1E + push large 1400138h + push 0 + call far ptr loc_C9D4 + push 0 + call sub_D130 + push ds + push offset aRegi2_bft ; "regi2.bft" + call sub_24E2 + push ds + push offset aRegi1_bft ; "regi1.bft" + call sub_24E2 + push 1 + call sub_EAC + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + pop bp + retn +sub_AFAC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B03D proc near ; CODE XREF: sub_B7D2:loc_B819p + push bp + mov bp, sp + push si + push di + xor si, si + jmp short loc_B091 +; --------------------------------------------------------------------------- + +loc_B046: ; CODE XREF: sub_B03D+57j + mov cx, 7 + jmp short loc_B08C +; --------------------------------------------------------------------------- + +loc_B04B: ; CODE XREF: sub_B03D+51j + les bx, dword_105DA + add bx, cx + mov al, es:[bx+18h] + mov ah, 0 + add ax, 20h ; ' ' + mov bx, si + imul bx, 0Ah + add bx, cx + mov dl, [bx+2243h] + mov dh, 0 + cmp ax, dx + jg short loc_B0A1 + les bx, dword_105DA + add bx, cx + mov al, es:[bx+18h] + mov ah, 0 + add ax, 20h ; ' ' + mov bx, si + imul bx, 0Ah + add bx, cx + mov dl, [bx+2243h] + mov dh, 0 + cmp ax, dx + jl short loc_B090 + dec cx + +loc_B08C: ; CODE XREF: sub_B03D+Cj + or cx, cx + jge short loc_B04B + +loc_B090: ; CODE XREF: sub_B03D+4Cj + inc si + +loc_B091: ; CODE XREF: sub_B03D+7j + cmp si, 0Ah + jl short loc_B046 + cmp si, 0Ah + jnz short loc_B0A1 + mov ax, 0FFFFh + jmp loc_B183 +; --------------------------------------------------------------------------- + +loc_B0A1: ; CODE XREF: sub_B03D+2Cj sub_B03D+5Cj + cmp si, 9 + jge short loc_B100 + mov di, 8 + jmp short loc_B0FC +; --------------------------------------------------------------------------- + +loc_B0AB: ; CODE XREF: sub_B03D+C1j + xor cx, cx + jmp short loc_B0C6 +; --------------------------------------------------------------------------- + +loc_B0AF: ; CODE XREF: sub_B03D+8Cj + mov bx, di + shl bx, 3 + add bx, cx + mov al, [bx+21F0h] + mov bx, di + shl bx, 3 + add bx, cx + mov [bx+21F8h], al + inc cx + +loc_B0C6: ; CODE XREF: sub_B03D+70j + cmp cx, 8 + jl short loc_B0AF + xor cx, cx + jmp short loc_B0E6 +; --------------------------------------------------------------------------- + +loc_B0CF: ; CODE XREF: sub_B03D+ACj + mov bx, di + imul bx, 0Ah + add bx, cx + mov al, [bx+2242h] + mov bx, di + imul bx, 0Ah + add bx, cx + mov [bx+224Ch], al + inc cx + +loc_B0E6: ; CODE XREF: sub_B03D+90j + cmp cx, 0Ah + jl short loc_B0CF + mov al, [di+22B0h] + mov [di+22B1h], al + mov al, [di+22A6h] + mov [di+22A7h], al + dec di + +loc_B0FC: ; CODE XREF: sub_B03D+6Cj + cmp di, si + jge short loc_B0AB + +loc_B100: ; CODE XREF: sub_B03D+67j + xor cx, cx + jmp short loc_B111 +; --------------------------------------------------------------------------- + +loc_B104: ; CODE XREF: sub_B03D+D7j + mov bx, si + shl bx, 3 + add bx, cx + mov byte ptr [bx+21F0h], 0Eh + inc cx + +loc_B111: ; CODE XREF: sub_B03D+C5j + cmp cx, 8 + jl short loc_B104 + mov cx, 1 + jmp short loc_B133 +; --------------------------------------------------------------------------- + +loc_B11B: ; CODE XREF: sub_B03D+F9j + les bx, dword_105DA + add bx, cx + mov al, es:[bx+17h] + add al, 20h ; ' ' + mov bx, si + imul bx, 0Ah + add bx, cx + mov [bx+2242h], al + inc cx + +loc_B133: ; CODE XREF: sub_B03D+DCj + cmp cx, 9 + jl short loc_B11B + les bx, dword_105DA + mov al, 23h ; '#' + sub al, es:[bx+36h] + mov bx, si + imul bx, 0Ah + mov [bx+2242h], al + mov bx, word ptr dword_105DA + cmp byte ptr es:[bx+33h], 63h ; 'c' + jnz short loc_B15D + mov byte ptr [si+22B0h], 30h ; '0' + jmp short loc_B16B +; --------------------------------------------------------------------------- + +loc_B15D: ; CODE XREF: sub_B03D+117j + les bx, dword_105DA + mov al, es:[bx+33h] + add al, 20h ; ' ' + mov [si+22B0h], al + +loc_B16B: ; CODE XREF: sub_B03D+11Ej + les bx, dword_105DA + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + inc al + mov [si+22A6h], al + mov ax, si + +loc_B183: ; CODE XREF: sub_B03D+61j + pop di + pop si + pop bp + retn +sub_B03D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B187 proc near ; CODE XREF: sub_B7D2+73p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + mov [bp+var_2], 0 + mov di, 140h + jmp short loc_B1B5 +; --------------------------------------------------------------------------- + +loc_B197: ; CODE XREF: sub_B187+32j + mov si, 40h ; '@' + jmp short loc_B1AC +; --------------------------------------------------------------------------- + +loc_B19C: ; CODE XREF: sub_B187+29j + push si + push di + push [bp+var_2] + call sub_25BC + add si, 20h ; ' ' + inc [bp+var_2] + +loc_B1AC: ; CODE XREF: sub_B187+13j + cmp si, 240h + jl short loc_B19C + add di, 18h + +loc_B1B5: ; CODE XREF: sub_B187+Ej + cmp di, 170h + jle short loc_B197 + pop di + pop si + leave + retn +sub_B187 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B1BF proc near ; CODE XREF: sub_B46B+6Dp sub_B46B+B7p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + mov si, [bp+arg_2] + mov ax, si + mov bx, 10h + cwd + idiv bx + shl dx, 5 + add dx, 40h ; '@' + mov [bp+var_2], dx + mov ax, si + cwd + idiv bx + imul ax, 18h + add ax, 140h + mov [bp+var_4], ax + push [bp+var_2] + push ax + push si + push [bp+arg_0] + call sub_B2AD + pop si + leave + retn 4 +sub_B1BF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B1F6 proc near ; CODE XREF: sub_B46B+1BFp + ; sub_B46B+23Bp ... + +var_14 = dword ptr -14h +var_10 = dword ptr -10h +var_C = dword ptr -0Ch +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 14h, 0 + push si + mov si, [bp+arg_0] + mov ax, [bp+arg_2] + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + mov dx, si + shl dx, 4 + add ax, dx + mov cx, ax + mov [bp+var_4], 0 + jmp loc_B29F +; --------------------------------------------------------------------------- + +loc_B21F: ; CODE XREF: sub_B1F6+AEj + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_10050 + add bx, cx + mov eax, es:[bx] + mov [bp+var_14], eax + les bx, dword_10054 + add bx, cx + mov eax, es:[bx] + mov [bp+var_10], eax + les bx, dword_10058 + add bx, cx + mov eax, es:[bx] + mov [bp+var_C], eax + les bx, dword_1005C + add bx, cx + mov eax, es:[bx] + mov [bp+var_8], eax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_10050 + add bx, cx + mov eax, [bp+var_14] + mov es:[bx], eax + les bx, dword_10054 + add bx, cx + mov eax, [bp+var_10] + mov es:[bx], eax + les bx, dword_10058 + add bx, cx + mov eax, [bp+var_C] + mov es:[bx], eax + les bx, dword_1005C + add bx, cx + mov eax, [bp+var_8] + mov es:[bx], eax + add cx, 50h ; 'P' + inc [bp+var_4] + +loc_B29F: ; CODE XREF: sub_B1F6+26j + cmp [bp+var_4], 20h ; ' ' + jb loc_B21F + pop si + leave + retn 4 +sub_B1F6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2AD proc near ; CODE XREF: sub_B1BF+2Fp sub_B2EF+56p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_6] + mov si, [bp+arg_2] + cmp [bp+arg_0], 0 + jz short loc_B2C1 + add si, 31h ; '1' + +loc_B2C1: ; CODE XREF: sub_B2AD+Fj + push di + push [bp+arg_4] + push si + call sub_25BC + mov ax, [bp+arg_2] + mov bx, 10h + cwd + idiv bx + cmp dx, 0Eh + jnz short loc_B2E9 + lea ax, [di+20h] + push ax + push [bp+arg_4] + lea ax, [si+1] + push ax + call sub_25BC + +loc_B2E9: ; CODE XREF: sub_B2AD+2Aj + pop di + pop si + pop bp + retn 8 +sub_B2AD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2EF proc near ; CODE XREF: sub_B429+17p sub_B450+13p + +var_7 = byte ptr -7 +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 8, 0 + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_0] + cmp word_106AC, di + jnz short loc_B306 + mov ax, 1 + jmp short loc_B308 +; --------------------------------------------------------------------------- + +loc_B306: ; CODE XREF: sub_B2EF+10j + xor ax, ax + +loc_B308: ; CODE XREF: sub_B2EF+15j + mov [bp+var_6], ax + cmp word_106AC, di + jnz short loc_B315 + mov al, 0Fh + jmp short loc_B317 +; --------------------------------------------------------------------------- + +loc_B315: ; CODE XREF: sub_B2EF+20j + mov al, 4 + +loc_B317: ; CODE XREF: sub_B2EF+24j + mov [bp+var_7], al + cmp word_106AC, 0FFFFh + jnz short loc_B32A + mov [bp+var_6], 1 + mov [bp+var_7], 0Fh + +loc_B32A: ; CODE XREF: sub_B2EF+30j + cmp di, 9 + jz short loc_B339 + push si + push [bp+arg_2] + lea ax, [di+21h] + push ax + jmp short loc_B351 +; --------------------------------------------------------------------------- + +loc_B339: ; CODE XREF: sub_B2EF+3Ej + lea ax, [si-8] + push ax + push [bp+arg_2] + push 21h ; '!' + push [bp+var_6] + call sub_B2AD + lea ax, [si+8] + push ax + push [bp+arg_2] + push 20h ; ' ' + +loc_B351: ; CODE XREF: sub_B2EF+48j + push [bp+var_6] + call sub_B2AD + add si, 30h ; '0' + mov [bp+var_2], 7 + jmp short loc_B38F +; --------------------------------------------------------------------------- + +loc_B361: ; CODE XREF: sub_B2EF+A4j + mov bx, di + shl bx, 3 + add bx, [bp+var_2] + cmp byte ptr [bx+21F0h], 0Eh + jz short loc_B389 + push si + push [bp+arg_2] + mov bx, di + shl bx, 3 + add bx, [bp+var_2] + mov al, [bx+21F0h] + mov ah, 0 + push ax + push [bp+var_6] + call sub_B2AD + +loc_B389: ; CODE XREF: sub_B2EF+7Fj + dec [bp+var_2] + add si, 18h + +loc_B38F: ; CODE XREF: sub_B2EF+70j + cmp [bp+var_2], 0 + jge short loc_B361 + add si, 10h + mov [bp+var_4], 20h ; ' ' + mov [bp+var_2], 9 + jmp short loc_B3E0 +; --------------------------------------------------------------------------- + +loc_B3A4: ; CODE XREF: sub_B2EF+F5j + cmp [bp+var_4], 20h ; ' ' + jnz short loc_B3BB + mov bx, di + imul bx, 0Ah + add bx, [bp+var_2] + mov al, [bx+2242h] + mov ah, 0 + mov [bp+var_4], ax + +loc_B3BB: ; CODE XREF: sub_B2EF+B9j + cmp [bp+var_4], 20h ; ' ' + jz short loc_B3DA + push si + push [bp+arg_2] + mov bx, di + imul bx, 0Ah + add bx, [bp+var_2] + mov al, [bx+2242h] + mov ah, 0 + push ax + push [bp+var_6] + call sub_B2AD + +loc_B3DA: ; CODE XREF: sub_B2EF+D0j + dec [bp+var_2] + add si, 10h + +loc_B3E0: ; CODE XREF: sub_B2EF+B3j + cmp [bp+var_2], 0 + jge short loc_B3A4 + add si, 10h + push si + mov ax, [bp+arg_2] + add ax, 8 + push ax + mov al, [bp+var_7] + mov ah, 0 + or ax, 20h + push ax + mov al, [di+22A6h] + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+906h] + call sub_D197 + add si, 70h ; 'p' + push si + push [bp+arg_2] + mov al, [di+22B0h] + mov ah, 0 + push ax + push [bp+var_6] + call sub_B2AD + pop di + pop si + leave + retn 6 +sub_B2EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B429 proc near ; CODE XREF: sub_B7D2+57p + ; sub_B7D2:loc_B835p ... + push bp + mov bp, sp + push si + push di + push 0 + call sub_EAC + xor si, si + mov di, 68h ; 'h' + jmp short loc_B447 +; --------------------------------------------------------------------------- + +loc_B43C: ; CODE XREF: sub_B429+21j + push 18h + push di + push si + call sub_B2EF + inc si + add di, 14h + +loc_B447: ; CODE XREF: sub_B429+11j + cmp si, 0Ah + jl short loc_B43C + pop di + pop si + pop bp + retn +sub_B429 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B450 proc near ; CODE XREF: sub_B46B+2A2p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push 18h + mov ax, si + imul ax, 14h + add ax, 68h ; 'h' + push ax + push si + call sub_B2EF + pop si + pop bp + retn 2 +sub_B450 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B46B proc near ; CODE XREF: sub_B7D2+7Dp + +var_F = byte ptr -0Fh +var_E = byte ptr -0Eh +var_D = byte ptr -0Dh +var_C = byte ptr -0Ch +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 10h, 0 + push si + mov [bp+var_2], 0 + lea ax, [bp+var_A] + push ss + push ax + push ds + push offset unk_ED6A + mov cx, 8 + call SCOPY@ + mov [bp+var_B], 0 + mov [bp+var_C], 1 + mov [bp+var_D], 0 + mov [bp+var_E], 7 + mov [bp+var_F], 0 + mov ax, word_106AC + imul ax, 14h + add ax, 68h ; 'h' + mov si, ax + jmp loc_B743 +; --------------------------------------------------------------------------- + +loc_B4A8: ; CODE XREF: sub_B46B+2DCj + call sub_D5A2 + test byte ptr word_100FC, 1 + jz short loc_B4F2 + cmp [bp+var_A], 0 + jz short loc_B4CD + cmp [bp+var_A], 1Eh + jl short loc_B4ED + mov ax, [bp+var_A] + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_B4ED + +loc_B4CD: ; CODE XREF: sub_B46B+4Dj + cmp [bp+var_2], 2Dh ; '-' + jz short loc_B4ED + push [bp+var_2] + push 0 + call sub_B1BF + sub [bp+var_2], 10h + cmp [bp+var_2], 0 + jge short loc_B4E9 + add [bp+var_2], 30h ; '0' + +loc_B4E9: ; CODE XREF: sub_B46B+78j + mov [bp+var_C], 1 + +loc_B4ED: ; CODE XREF: sub_B46B+53j sub_B46B+60j ... + inc [bp+var_A] + jmp short loc_B4F7 +; --------------------------------------------------------------------------- + +loc_B4F2: ; CODE XREF: sub_B46B+47j + mov [bp+var_A], 0 + +loc_B4F7: ; CODE XREF: sub_B46B+85j + test byte ptr word_100FC, 2 + jz short loc_B53C + cmp [bp+var_8], 0 + jz short loc_B517 + cmp [bp+var_8], 1Eh + jl short loc_B537 + mov ax, [bp+var_8] + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_B537 + +loc_B517: ; CODE XREF: sub_B46B+97j + cmp [bp+var_2], 2Dh ; '-' + jz short loc_B537 + push [bp+var_2] + push 0 + call sub_B1BF + add [bp+var_2], 10h + cmp [bp+var_2], 30h ; '0' + jl short loc_B533 + sub [bp+var_2], 30h ; '0' + +loc_B533: ; CODE XREF: sub_B46B+C2j + mov [bp+var_C], 1 + +loc_B537: ; CODE XREF: sub_B46B+9Dj sub_B46B+AAj ... + inc [bp+var_8] + jmp short loc_B541 +; --------------------------------------------------------------------------- + +loc_B53C: ; CODE XREF: sub_B46B+91j + mov [bp+var_8], 0 + +loc_B541: ; CODE XREF: sub_B46B+CFj + test byte ptr word_100FC, 4 + jz short loc_B59A + cmp [bp+var_6], 0 + jz short loc_B561 + cmp [bp+var_6], 1Eh + jl short loc_B595 + mov ax, [bp+var_6] + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_B595 + +loc_B561: ; CODE XREF: sub_B46B+E1j + push [bp+var_2] + push 0 + call sub_B1BF + mov ax, [bp+var_2] + mov bx, 10h + cwd + idiv bx + or dx, dx + jnz short loc_B57C + add [bp+var_2], 0Eh + jmp short loc_B591 +; --------------------------------------------------------------------------- + +loc_B57C: ; CODE XREF: sub_B46B+109j + cmp [bp+var_2], 1Eh + jz short loc_B588 + cmp [bp+var_2], 0Eh + jnz short loc_B58E + +loc_B588: ; CODE XREF: sub_B46B+115j + sub [bp+var_2], 2 + jmp short loc_B591 +; --------------------------------------------------------------------------- + +loc_B58E: ; CODE XREF: sub_B46B+11Bj + dec [bp+var_2] + +loc_B591: ; CODE XREF: sub_B46B+10Fj + ; sub_B46B+121j + mov [bp+var_C], 1 + +loc_B595: ; CODE XREF: sub_B46B+E7j sub_B46B+F4j + inc [bp+var_6] + jmp short loc_B59F +; --------------------------------------------------------------------------- + +loc_B59A: ; CODE XREF: sub_B46B+DBj + mov [bp+var_6], 0 + +loc_B59F: ; CODE XREF: sub_B46B+12Dj + test byte ptr word_100FC, 8 + jz short loc_B5F9 + cmp [bp+var_4], 0 + jz short loc_B5BF + cmp [bp+var_4], 1Eh + jl short loc_B5F4 + mov ax, [bp+var_4] + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_B5F4 + +loc_B5BF: ; CODE XREF: sub_B46B+13Fj + push [bp+var_2] + push 0 + call sub_B1BF + mov ax, [bp+var_2] + mov bx, 10h + cwd + idiv bx + cmp dx, 0Eh + jnz short loc_B5DB + sub [bp+var_2], 0Eh + jmp short loc_B5F0 +; --------------------------------------------------------------------------- + +loc_B5DB: ; CODE XREF: sub_B46B+168j + cmp [bp+var_2], 0Ch + jz short loc_B5E7 + cmp [bp+var_2], 1Ch + jnz short loc_B5ED + +loc_B5E7: ; CODE XREF: sub_B46B+174j + add [bp+var_2], 2 + jmp short loc_B5F0 +; --------------------------------------------------------------------------- + +loc_B5ED: ; CODE XREF: sub_B46B+17Aj + inc [bp+var_2] + +loc_B5F0: ; CODE XREF: sub_B46B+16Ej + ; sub_B46B+180j + mov [bp+var_C], 1 + +loc_B5F4: ; CODE XREF: sub_B46B+145j + ; sub_B46B+152j + inc [bp+var_4] + jmp short loc_B5FE +; --------------------------------------------------------------------------- + +loc_B5F9: ; CODE XREF: sub_B46B+139j + mov [bp+var_4], 0 + +loc_B5FE: ; CODE XREF: sub_B46B+18Cj + test byte ptr word_100FC+1, 20h + jnz short loc_B60C + test byte ptr word_100FC, 20h + jz short loc_B683 + +loc_B60C: ; CODE XREF: sub_B46B+198j + cmp [bp+var_D], 0 + jnz short loc_B67D + cmp [bp+var_2], 1Eh + jnz short loc_B64B + mov al, [bp+var_E] + mov ah, 0 + mov dx, 7 + sub dx, ax + imul dx, 18h + add dx, 48h ; 'H' + push dx + push si + call sub_B1F6 + mov bx, word_106AC + shl bx, 3 + mov al, [bp+var_E] + mov ah, 0 + add bx, ax + mov byte ptr [bx+21F0h], 0Eh + cmp [bp+var_E], 7 + jnb short loc_B679 + inc [bp+var_E] + jmp short loc_B679 +; --------------------------------------------------------------------------- + +loc_B64B: ; CODE XREF: sub_B46B+1ABj + cmp [bp+var_2], 2Eh ; '.' + jnz short loc_B657 + mov [bp+var_B], 1 + jmp short loc_B679 +; --------------------------------------------------------------------------- + +loc_B657: ; CODE XREF: sub_B46B+1E4j + mov bx, word_106AC + shl bx, 3 + mov al, [bp+var_E] + mov ah, 0 + add bx, ax + mov al, byte ptr [bp+var_2] + mov [bx+21F0h], al + cmp [bp+var_E], 0 + jnz short loc_B676 + mov [bp+var_B], 1 + +loc_B676: ; CODE XREF: sub_B46B+205j + dec [bp+var_E] + +loc_B679: ; CODE XREF: sub_B46B+1D9j + ; sub_B46B+1DEj ... + mov [bp+var_C], 1 + +loc_B67D: ; CODE XREF: sub_B46B+1A5j + mov [bp+var_D], 1 + jmp short loc_B687 +; --------------------------------------------------------------------------- + +loc_B683: ; CODE XREF: sub_B46B+19Fj + mov [bp+var_D], 0 + +loc_B687: ; CODE XREF: sub_B46B+216j + test byte ptr word_100FC, 10h + jz short loc_B6CF + cmp [bp+var_F], 0 + jnz short loc_B6C9 + mov al, [bp+var_E] + mov ah, 0 + mov dx, 7 + sub dx, ax + imul dx, 18h + add dx, 48h ; 'H' + push dx + push si + call sub_B1F6 + mov bx, word_106AC + shl bx, 3 + mov al, [bp+var_E] + mov ah, 0 + add bx, ax + mov byte ptr [bx+21F0h], 0Eh + cmp [bp+var_E], 7 + jnb short loc_B6C5 + inc [bp+var_E] + +loc_B6C5: ; CODE XREF: sub_B46B+255j + mov [bp+var_C], 1 + +loc_B6C9: ; CODE XREF: sub_B46B+227j + mov [bp+var_F], 1 + jmp short loc_B6D3 +; --------------------------------------------------------------------------- + +loc_B6CF: ; CODE XREF: sub_B46B+221j + mov [bp+var_F], 0 + +loc_B6D3: ; CODE XREF: sub_B46B+262j + cmp [bp+var_C], 1 + jnz short loc_B73C + push [bp+var_2] + push 1 + call sub_B1BF + mov al, [bp+var_E] + mov ah, 0 + mov dx, 7 + sub dx, ax + imul dx, 18h + add dx, 48h ; 'H' + push dx + push si + call sub_B1F6 + mov bx, word_106AC + shl bx, 3 + mov al, [bp+var_E] + mov ah, 0 + add bx, ax + mov byte ptr [bx+21F0h], 0Eh + push word_106AC + call sub_B450 + mov ax, [bp+var_2] + mov bx, 10h + cwd + idiv bx + cmp dx, 0Eh + jz short loc_B738 + mov al, [bp+var_E] + mov ah, 0 + mov dx, 7 + sub dx, ax + imul dx, 18h + add dx, 48h ; 'H' + push dx + push si + push [bp+var_2] + push 0 + call sub_B2AD + +loc_B738: ; CODE XREF: sub_B46B+2B1j + mov [bp+var_C], 0 + +loc_B73C: ; CODE XREF: sub_B46B+26Cj + push 1 + call sub_CB52 + +loc_B743: ; CODE XREF: sub_B46B+3Aj + cmp [bp+var_B], 0 + jz loc_B4A8 + pop si + leave + retn +sub_B46B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B74E proc near ; CODE XREF: sub_B7D2+80p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + xor cx, cx + jmp short loc_B769 +; --------------------------------------------------------------------------- + +loc_B758: ; CODE XREF: sub_B74E+1Ej + mov bx, word_106AC + shl bx, 3 + add bx, cx + cmp byte ptr [bx+21F0h], 0Eh + jnz short loc_B7A2 + inc cx + +loc_B769: ; CODE XREF: sub_B74E+8j + cmp cx, 8 + jl short loc_B758 + +loc_B76E: ; CODE XREF: sub_B74E+7Ej + les bx, dword_105DA + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + shl ax, 3 + add ax, 92Eh + mov di, ax + mov cx, 7 + jmp short loc_B79C +; --------------------------------------------------------------------------- + +loc_B78B: ; CODE XREF: sub_B74E+50j + mov bx, word_106AC + shl bx, 3 + add bx, cx + mov al, [di] + mov [bx+21F0h], al + dec cx + inc di + +loc_B79C: ; CODE XREF: sub_B74E+3Bj + or cx, cx + jge short loc_B78B + jmp short loc_B7CE +; --------------------------------------------------------------------------- + +loc_B7A2: ; CODE XREF: sub_B74E+18j + mov bx, word_106AC + shl bx, 3 + mov al, [bx+21F0h] + mov [bp+var_1], al + xor cx, cx + jmp short loc_B7C7 +; --------------------------------------------------------------------------- + +loc_B7B4: ; CODE XREF: sub_B74E+7Cj + mov bx, word_106AC + shl bx, 3 + add bx, cx + mov al, [bx+21F0h] + cmp al, [bp+var_1] + jnz short loc_B7CE + inc cx + +loc_B7C7: ; CODE XREF: sub_B74E+64j + cmp cx, 8 + jl short loc_B7B4 + jmp short loc_B76E +; --------------------------------------------------------------------------- + +loc_B7CE: ; CODE XREF: sub_B74E+52j sub_B74E+76j + pop di + pop si + leave + retn +sub_B74E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B7D2 proc near ; CODE XREF: _main+62p _main+1CCp ... + push bp + mov bp, sp + les bx, dword_105DA + mov eax, es:[bx+10h] + mov dword_E9A6, eax + push 600h + push ds + push offset aScore_m ; "score.m" + call sub_C880 + add sp, 6 + push 0 + call sub_CEC2 + les bx, dword_105DA + mov al, es:[bx+0Bh] + mov ah, 0 + push ax + call sub_AE8E + les bx, dword_105DA + cmp byte ptr es:[bx+33h], 0FFh + jnz short loc_B819 + mov word_106AC, 0FFFFh + jmp short loc_B81F +; --------------------------------------------------------------------------- + +loc_B819: ; CODE XREF: sub_B7D2+3Dj + call sub_B03D + mov word_106AC, ax + +loc_B81F: ; CODE XREF: sub_B7D2+45j + call sub_AFAC + cmp word_106AC, 0FFFFh + jnz short loc_B835 + call sub_B429 + push 2 + call sub_536 + jmp short loc_B858 +; --------------------------------------------------------------------------- + +loc_B835: ; CODE XREF: sub_B7D2+55j + call sub_B429 + push 1 + call sub_EAC + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_B187 + push 2 + call sub_536 + call sub_B46B + call sub_B74E + call sub_B429 + +loc_B858: ; CODE XREF: sub_B7D2+61j + push 0 + call sub_D6C5 + les bx, dword_105DA + cmp byte ptr es:[bx+36h], 0 + jz short loc_B871 + cmp byte ptr es:[bx+33h], 63h ; 'c' + jnz short loc_B879 + +loc_B871: ; CODE XREF: sub_B7D2+96j + push 210h + call sub_CEC2 + +loc_B879: ; CODE XREF: sub_B7D2+9Dj + push 2 + call sub_57A + les bx, dword_105DA + mov al, es:[bx+0Bh] + mov ah, 0 + push ax + call sub_AEF0 + call sub_237E + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + mov word_E968, 0 + call far ptr loc_17D0 + les bx, dword_105DA + cmp byte ptr es:[bx+36h], 0 + jz short loc_B8F1 + cmp byte ptr es:[bx+33h], 63h ; 'c' + jz short loc_B8F1 + push 0 + push ds + push offset aConti_pi ; "conti.pi" + call sub_D4AB + push 0 + call sub_CD0A + push large 0 + push 0 + call sub_CD2F + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + push 0 + push ds + push offset aConti_cd2 ; "conti.cd2" + call sub_D02E + pop bp + retn +; --------------------------------------------------------------------------- + +loc_B8F1: ; CODE XREF: sub_B7D2+DFj sub_B7D2+E6j + push 0 + push ds + push offset aOver_pi_0 ; "over.pi" + call sub_D4AB + push 0 + call sub_CD0A + push large 0 + push 0 + call sub_CD2F + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + push 0FFh + call sub_C864 + pop cx + push 100h + call sub_CEC2 + pop bp + retn +sub_B7D2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B92E proc near ; CODE XREF: _main+1D6p + push bp + mov bp, sp + push 100h + call sub_CEC2 + push 600h + push ds + push offset aOver_m ; "over.m" + call sub_C880 + add sp, 6 + push 0 + call sub_CEC2 + push 1 + call sub_536 + push large 30040h + call sub_D3FC + push 1 + call sub_57A + push 100h + call sub_CEC2 + pop bp + retn +sub_B92E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B972 proc near ; CODE XREF: _main+BFp + +var_1 = byte ptr -1 + + enter 2, 0 + push 0 + call sub_D130 + push 1 + call sub_D130 + push 2 + call sub_D130 + push ds + push offset unk_10316 + push large [dword_102FE] + call sub_FEC + les bx, dword_105DA + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov [bp+var_1], al + cmp [bp+var_1], 0Ah + jl short loc_B9DD + les bx, off_EE4E + mov al, es:[bx+1] + push ax + mov al, [bp+var_1] + cbw + mov bx, 0Ah + cwd + idiv bx + pop dx + add dl, al + mov bx, word ptr off_EE4E + mov es:[bx+1], dl + mov al, [bp+var_1] + cbw + mov bx, 0Ah + cwd + idiv bx + mov [bp+var_1], dl + +loc_B9DD: ; CODE XREF: sub_B972+3Ej + les bx, off_EE4E + mov al, [bp+var_1] + add es:[bx+2], al + mov word_E968, 0 + call far ptr loc_17D0 + push 60h ; '`' + call sub_CB52 + 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_E72 + call sub_1758 + push large [off_EE4E] + call sub_A12E + call sub_AC6E + call sub_A174 + call sub_C40D + les bx, dword_105DA + mov byte ptr es:[bx+33h], 63h ; 'c' + call sub_B7D2 + les bx, dword_105DA + cmp byte ptr es:[bx+36h], 3 + jnz short loc_BA66 + cmp byte ptr es:[bx+0Ch], 0Fh + jnb short loc_BA66 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset a@99ed_txt ; "@99ED.TXT" + call sub_A12E + call sub_AC6E + call sub_A174 + +loc_BA66: ; CODE XREF: sub_B972+C2j sub_B972+C9j + call sub_1F20 + call sub_C96 + call sub_C990 + push large 0 + push ds + push offset aOp_0 ; "op" + push ds + push offset aOp_0 ; "op" + call _execl + add sp, 0Ch + leave + retn +sub_B972 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA8A proc near ; CODE XREF: sub_BC6F+22p + +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 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 + mov si, [bp+arg_0] + shl si, 4 + add si, 0A62h + mov ax, 0A800h + mov es, ax + assume es:nothing + mov cx, [bp+arg_4] + ; Hack (and cx, 7) + db 081h + db 0e1h + db 007h + db 000h + mov bx, 8 + +loc_BAC0: ; CODE XREF: sub_BA8A+44j + mov ax, [si] + ror ax, cl + or es:[di], ax + add di, 50h ; 'P' + add si, 2 + dec bx + jnz short loc_BAC0 + pop di + pop si + pop bp + retn 6 +sub_BA8A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BAD6 proc near ; CODE XREF: sub_BDF4+27p sub_BEC7+2Ep ... + +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 4, 0 + push si + push di + mov bx, [bp+arg_0] + shl bx, 4 + mov ax, [bx+1D10h] + mov [bp+var_2], ax + mov bx, [bp+arg_0] + shl bx, 4 + mov ax, [bx+1D12h] + mov [bp+var_4], ax + mov ax, [bp+var_2] + cwd + sub ax, dx + sar ax, 1 + sub [bp+arg_4], ax + mov ax, [bp+var_4] + cwd + sub ax, dx + sar ax, 1 + add ax, 0FFFEh + add [bp+arg_2], 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 + mov ax, 0E000h + mov es, ax + assume es:nothing + mov dx, [bp+var_2] + shr dx, 4 + mov si, 50h ; 'P' + sub si, dx + sub si, dx + xor ax, ax + mov cx, dx + rep stosw + add di, si + mov cx, dx + rep stosw + add di, si + mov cx, dx + rep stosw + pop di + pop si + leave + retn 6 +sub_BAD6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB51 proc near ; CODE XREF: sub_BDF4+8p sub_BEC7+8p ... + push bp + mov bp, sp + push di + mov ax, 0A800h + mov es, ax + assume es:nothing + xor ax, ax + mov di, ax + mov cx, 3E80h + rep stosw + pop di + pop bp + retn +sub_BB51 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB66 proc near ; CODE XREF: sub_C40D+206p + push bp + mov bp, sp + push si + mov si, 22C2h + xor ax, ax + jmp short loc_BB78 +; --------------------------------------------------------------------------- + +loc_BB71: ; CODE XREF: sub_BB66+15j + mov byte ptr [si], 0 + inc ax + add si, 10h + +loc_BB78: ; CODE XREF: sub_BB66+9j + cmp ax, 50h ; 'P' + jl short loc_BB71 + pop si + pop bp + retn +sub_BB66 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB80 proc near ; CODE XREF: sub_BCD5+3p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov si, 22C2h + xor di, di + jmp loc_BC1A +; --------------------------------------------------------------------------- + +loc_BB8E: ; CODE XREF: sub_BB80+A1j + cmp byte ptr [si], 0 + jnz loc_BC16 + mov ax, di + shl ax, 3 + cmp ax, word_10BB2 + jg short loc_BC16 + mov byte ptr [si], 1 + test di, 3 + jz short loc_BBBE + call sub_1A3E + mov bx, 2780h + cwd + idiv bx + mov [si+2], dx + mov word ptr [si+4], 0 + jmp short loc_BBD1 +; --------------------------------------------------------------------------- + +loc_BBBE: ; CODE XREF: sub_BB80+27j + mov word ptr [si+2], 2780h + call sub_1A3E + mov bx, 1880h + cwd + idiv bx + mov [si+4], dx + +loc_BBD1: ; CODE XREF: sub_BB80+3Cj + call sub_1A3E + mov bx, 20h ; ' ' + cwd + idiv bx + add dl, 50h ; 'P' + mov [bp+var_1], dl + call sub_1A3E + mov bx, 40h ; '@' + cwd + idiv bx + add dl, 30h ; '0' + mov [bp+var_2], dl + call sub_1A3E + and ax, 3 + mov [si+0Ah], ax + push ds + lea ax, [si+6] + push ax + push ds + lea ax, [si+8] + push ax + push word ptr [bp+var_1] + mov al, [bp+var_2] + mov ah, 0 + push ax + call sub_C8F0 + +loc_BC16: ; CODE XREF: sub_BB80+11j sub_BB80+1Ej + inc di + add si, 10h + +loc_BC1A: ; CODE XREF: sub_BB80+Bj + mov al, byte_106B0 + mov ah, 0 + cmp ax, di + jg loc_BB8E + pop di + pop si + leave + retn +sub_BB80 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC29 proc near ; CODE XREF: sub_BCD5+6p + push bp + mov bp, sp + push si + mov si, 22C2h + xor dx, dx + jmp short loc_BC63 +; --------------------------------------------------------------------------- + +loc_BC34: ; CODE XREF: sub_BC29+41j + cmp byte ptr [si], 0 + jz short loc_BC5F + mov byte ptr [si], 1 + mov ax, [si+6] + add [si+2], ax + mov ax, [si+8] + add [si+4], ax + cmp word ptr [si+2], 0 + jg short loc_BC53 + add word ptr [si+2], 2780h + +loc_BC53: ; CODE XREF: sub_BC29+23j + cmp word ptr [si+4], 1880h + jl short loc_BC5F + sub word ptr [si+4], 1880h + +loc_BC5F: ; CODE XREF: sub_BC29+Ej sub_BC29+2Fj + inc dx + add si, 10h + +loc_BC63: ; CODE XREF: sub_BC29+9j + mov al, byte_106B0 + mov ah, 0 + cmp ax, dx + jg short loc_BC34 + pop si + pop bp + retn +sub_BC29 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC6F proc near ; CODE XREF: sub_BCD5+9p + push bp + mov bp, sp + push si + push di + mov si, 22C2h + xor di, di + jmp short loc_BC98 +; --------------------------------------------------------------------------- + +loc_BC7B: ; CODE XREF: sub_BC6F+30j + cmp byte ptr [si], 0 + jz short loc_BC94 + mov ax, [si+2] + sar ax, 4 + push ax + mov ax, [si+4] + sar ax, 4 + push ax + push word ptr [si+0Ah] + call sub_BA8A + +loc_BC94: ; CODE XREF: sub_BC6F+Fj + inc di + add si, 10h + +loc_BC98: ; CODE XREF: sub_BC6F+Aj + mov al, byte_106B0 + mov ah, 0 + cmp ax, di + jg short loc_BC7B + pop di + pop si + pop bp + retn +sub_BC6F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BCA5 proc near ; CODE XREF: sub_BFB2+73p sub_BFB2+91p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + cmp byte_EC70, 0 + jnz short loc_BCB9 + mov ax, word_10BB2 + cmp ax, [bp+arg_0] + jle short loc_BCCF + jmp short loc_BCCA +; --------------------------------------------------------------------------- + +loc_BCB9: ; CODE XREF: sub_BCA5+8j + mov ah, 5 + 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 + cmp ax, [bp+arg_2] + jb short loc_BCCF + cmp word_10BB2, 0C0h ; 'À' + jle short loc_BCCF + +loc_BCCA: ; CODE XREF: sub_BCA5+12j + mov ax, 1 + jmp short loc_BCD1 +; --------------------------------------------------------------------------- + +loc_BCCF: ; CODE XREF: sub_BCA5+10j sub_BCA5+1Bj ... + xor ax, ax + +loc_BCD1: ; CODE XREF: sub_BCA5+28j + pop bp + retn 4 +sub_BCA5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BCD5 proc near ; CODE XREF: sub_BFB2+66p sub_BFB2+84p ... + push bp + mov bp, sp + call sub_BB80 + call sub_BC29 + call sub_BC6F + cmp byte_10BB6, 0 + jz short loc_BCFE + cmp word_F83E, 1 + jbe short loc_BCFE + mov byte_10BB5, 0 + mov byte_106B0, 32h ; '2' + mov byte_10BB6, 0 + +loc_BCFE: ; CODE XREF: sub_BCD5+11j sub_BCD5+18j ... + cmp word_F83E, 0 + jz short loc_BCFE + mov word_F83E, 0 + mov dx, 0A4h ; '¤' + mov al, byte_10BB4 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte_10BB4 + mov byte_10BB4, al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + pop bp + retn +sub_BCD5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BD21 proc near ; CODE XREF: sub_BDF4+ABp sub_BDF4+C5p ... + +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 +arg_6 = word ptr 0Ah + + enter 6, 0 + push si + push di + mov bx, [bp+arg_2] + shl bx, 4 + mov ax, [bx+1D10h] + mov [bp+var_4], ax + mov bx, [bp+arg_2] + shl bx, 4 + mov ax, [bx+1D12h] + mov [bp+var_6], ax + mov ax, [bp+var_4] + cwd + sub ax, dx + sar ax, 1 + sub [bp+arg_6], ax + mov ax, [bp+var_6] + cwd + sub ax, dx + sar ax, 1 + sub [bp+arg_4], ax + cmp byte_10BC7, 0 + jz short loc_BD65 + cmp byte_10BB5, 0 + jnz short loc_BD75 + +loc_BD65: ; CODE XREF: sub_BD21+3Bj + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + call far ptr loc_D712 + jmp short loc_BD83 +; --------------------------------------------------------------------------- + +loc_BD75: ; CODE XREF: sub_BD21+42j + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + call far ptr loc_C9D4 + +loc_BD83: ; CODE XREF: sub_BD21+52j + and [bp+arg_0], 7 + cmp [bp+arg_0], 0 + jz short loc_BDEE + mov bx, 10h + mov ax, [bp+var_4] + cwd + idiv bx + mov [bp+var_4], ax + mov ax, [bp+arg_4] + add [bp+var_6], ax + mov ax, [bp+arg_6] + sar ax, 3 + mov dx, [bp+arg_4] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_4] + shl dx, 4 + add ax, dx + mov [bp+var_2], ax + mov ax, 0E000h + mov es, ax + assume es:nothing + mov bx, [bp+arg_0] + shl bx, 3 + add bx, 0AA2h + mov dx, [bp+arg_4] + +loc_BDCA: ; CODE XREF: sub_BD21+CBj + mov si, dx + ; Hack (and si, 3) + db 081h + db 0e6h + db 003h + db 000h + shl si, 1 + mov ax, [bx+si] + not ax + mov di, [bp+var_2] + mov cx, [bp+var_4] + +loc_BDDC: ; CODE XREF: sub_BD21+C1j + and es:[di], ax + add di, 2 + loop loc_BDDC + add [bp+var_2], 50h ; 'P' + inc dx + cmp dx, [bp+var_6] + jb short loc_BDCA + +loc_BDEE: ; CODE XREF: sub_BD21+6Aj + pop di + pop si + leave + retn 8 +sub_BD21 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BDF4 proc near ; CODE XREF: sub_BFB2+63p sub_C097+46p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_0] + call sub_BB51 + mov ax, word_10BB2 + cmp ax, word_10BBE + jg loc_BEC1 + push 140h + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+27D8h] + push di + call sub_BAD6 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+27D8h] + cmp ax, word_10BC0 + jle short loc_BE66 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov dx, word_10BBC + mov bx, ax + sub [bx+27D8h], dx + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+27D8h] + cmp ax, word_10BC0 + jge short loc_BE66 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov dx, word_10BC0 + mov bx, ax + mov [bx+27D8h], dx + +loc_BE66: ; CODE XREF: sub_BDF4+3Bj sub_BDF4+5Fj + mov ax, word_10BBE + mov bx, 8 + cwd + idiv bx + push ax + mov ax, word_10BB2 + cwd + pop bx + idiv bx + mov dx, 7 + sub dx, ax + mov si, dx + or si, si + jge short loc_BE84 + xor si, si + +loc_BE84: ; CODE XREF: sub_BDF4+8Cj + cmp byte_10BB5, 0 + jz short loc_BEA7 + cmp byte_10BC6, 0 + jz short loc_BEA7 + push large 1F800C8h + mov al, byte_10BC6 + mov ah, 0 + push ax + push si + call sub_BD21 + mov byte_10BC7, 1 + +loc_BEA7: ; CODE XREF: sub_BDF4+95j sub_BDF4+9Cj + push 140h + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+27D8h] + push di + push si + call sub_BD21 + mov byte_10BC7, 0 + +loc_BEC1: ; CODE XREF: sub_BDF4+12j + pop di + pop si + pop bp + retn 2 +sub_BDF4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BEC7 proc near ; CODE XREF: sub_BFB2+81p sub_C097+94p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_0] + call sub_BB51 + cmp word_10BB2, 0A1h ; '¡' + jg loc_BF78 + cmp word_10BB2, 0A0h ; ' ' + jge short loc_BF57 + push 140h + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+27D8h] + push di + call sub_BAD6 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + dec word ptr [bx+27D8h] + mov ax, word_10BB2 + mov bx, 14h + cwd + idiv bx + mov si, ax + cmp si, 7 + jle short loc_BF18 + mov si, 7 + +loc_BF18: ; CODE XREF: sub_BEC7+4Cj + cmp byte_10BB5, 0 + jz short loc_BF3B + cmp byte_10BC6, 0 + jz short loc_BF3B + push large 1F800C8h + mov al, byte_10BC6 + mov ah, 0 + push ax + push si + call sub_BD21 + mov byte_10BC7, 1 + +loc_BF3B: ; CODE XREF: sub_BEC7+56j sub_BEC7+5Dj + push 140h + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+27D8h] + push di + push si + call sub_BD21 + mov byte_10BC7, 0 + jmp short loc_BF78 +; --------------------------------------------------------------------------- + +loc_BF57: ; CODE XREF: sub_BEC7+1Bj + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + +loc_BF78: ; CODE XREF: sub_BEC7+11j sub_BEC7+8Ej + pop di + pop si + pop bp + retn 2 +sub_BEC7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF7E proc near ; CODE XREF: sub_C40D+333p + ; sub_C40D+33Ep + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + cmp word_10BB2, 0A0h ; ' ' + jg short loc_BFAD + mov ax, word_10BB2 + mov bx, 14h + cwd + idiv bx + mov dx, 7 + sub dx, ax + mov si, dx + or si, si + jge short loc_BFA0 + xor si, si + +loc_BFA0: ; CODE XREF: sub_BF7E+1Ej + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push si + call sub_BD21 + +loc_BFAD: ; CODE XREF: sub_BF7E+Aj + pop si + pop bp + retn 6 +sub_BF7E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFB2 proc near ; CODE XREF: sub_C40D+288p + ; sub_C40D+2A4p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + mov si, [bp+arg_4] + cmp word_10BBC, 2 + jnz short loc_BFE3 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 108h + mov al, byte_10BB4 + mov ah, 0 + xor ax, 1 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 107h + jmp short loc_C00E +; --------------------------------------------------------------------------- + +loc_BFE3: ; CODE XREF: sub_BFB2+Cj + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov dx, 118h + sub dx, word_10BC4 + mov bx, ax + mov [bx+27D8h], dx + mov al, byte_10BB4 + mov ah, 0 + xor ax, 1 + add ax, ax + mov dx, 118h + sub dx, word_10BC4 + mov bx, ax + mov [bx+27D8h], dx + +loc_C00E: ; CODE XREF: sub_BFB2+2Fj + mov word_10BB2, 0 + +loc_C014: ; CODE XREF: sub_BFB2+78j + push si + call sub_BDF4 + call sub_BCD5 + inc word_10BB2 + push [bp+arg_2] + push 100h + call sub_BCA5 + or ax, ax + jz short loc_C014 + mov word_10BB2, 0 + +loc_C032: ; CODE XREF: sub_BFB2+96j + push si + call sub_BEC7 + call sub_BCD5 + inc word_10BB2 + push [bp+arg_0] + push 100h + call sub_BCA5 + or ax, ax + jz short loc_C032 + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + call sub_BCD5 + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + call sub_BCD5 + pop si + pop bp + retn 6 +sub_BFB2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C097 proc near ; CODE XREF: sub_C40D+2D7p + +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] + cmp word_10BBC, 2 + jnz short loc_C0C9 + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 108h + mov al, byte_10BB4 + mov ah, 0 + xor ax, 1 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 107h + jmp short loc_C0D6 +; --------------------------------------------------------------------------- + +loc_C0C9: ; CODE XREF: sub_C097+Dj + mov ax, 118h + sub ax, word_10BC4 + mov word_10BC8, ax + mov word_10BCA, ax + +loc_C0D6: ; CODE XREF: sub_C097+30j + mov word_10BB2, 0 + +loc_C0DC: ; CODE XREF: sub_C097+75j + push si + call sub_BDF4 + mov byte_10BC7, 1 + push 140h + push word_10BC2 + lea ax, [si-1] + push ax + push 0 + call sub_BD21 + mov byte_10BC7, 0 + call sub_BCD5 + inc word_10BB2 + push [bp+arg_2] + push 100h + call sub_BCA5 + or ax, ax + jz short loc_C0DC + mov word_10BB2, 0 + +loc_C114: ; CODE XREF: sub_C097+114j + cmp word_10BB2, 0A1h ; '¡' + jg short loc_C12A + push 140h + push word_10BC2 + lea ax, [si-1] + push ax + call sub_BAD6 + +loc_C12A: ; CODE XREF: sub_C097+83j + push si + call sub_BEC7 + cmp word_10BB2, 0A1h ; '¡' + jg short loc_C199 + mov ax, word_10BB2 + dec ax + mov bx, 14h + cwd + idiv bx + mov di, ax + cmp di, 7 + jle short loc_C14A + mov di, 7 + +loc_C14A: ; CODE XREF: sub_C097+AEj + cmp byte_10BB4, 0 + jnz short loc_C155 + dec word_10BC2 + +loc_C155: ; CODE XREF: sub_C097+B8j + mov byte_10BC7, 1 + cmp word_10BB2, 0A0h ; ' ' + jge short loc_C173 + push 140h + push word_10BC2 + lea ax, [si-1] + push ax + push di + call sub_BD21 + jmp short loc_C194 +; --------------------------------------------------------------------------- + +loc_C173: ; CODE XREF: sub_C097+C9j + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + +loc_C194: ; CODE XREF: sub_C097+DAj + mov byte_10BC7, 0 + +loc_C199: ; CODE XREF: sub_C097+9Dj + call sub_BCD5 + inc word_10BB2 + push [bp+arg_0] + push 100h + call sub_BCA5 + or ax, ax + jz loc_C114 + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + call sub_BCD5 + push large 0C00000h + call sub_C36 + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + call sub_BCD5 + pop di + pop si + pop bp + retn 6 +sub_C097 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C1FD proc near ; CODE XREF: sub_C40D+2BBp + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + cmp word_10BBC, 2 + jnz short loc_C22A + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 108h + mov al, byte_10BB4 + mov ah, 0 + xor ax, 1 + add ax, ax + mov bx, ax + mov word ptr [bx+27D8h], 107h + jmp short loc_C237 +; --------------------------------------------------------------------------- + +loc_C22A: ; CODE XREF: sub_C1FD+8j + mov ax, 118h + sub ax, word_10BC4 + mov word_10BC8, ax + mov word_10BCA, ax + +loc_C237: ; CODE XREF: sub_C1FD+2Bj + mov word_10BB2, 0 + +loc_C23D: ; CODE XREF: sub_C1FD+58j + push [bp+arg_4] + call sub_BDF4 + call sub_BCD5 + inc word_10BB2 + push [bp+arg_2] + push 100h + call sub_BCA5 + or ax, ax + jz short loc_C23D + mov word_10BB2, 0 + +loc_C25D: ; CODE XREF: sub_C1FD+75j + call sub_BB51 + call sub_BCD5 + inc word_10BB2 + push [bp+arg_0] + push 100h + call sub_BCA5 + or ax, ax + jz short loc_C25D + mov al, byte_10BB4 + mov ah, 0 + add ax, ax + mov bx, ax + mov ax, [bx+27D8h] + mov word_10BC2, ax + pop bp + retn 6 +sub_C1FD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C288 proc near ; CODE XREF: sub_C40D+35Fp + ; sub_C40D+369p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + push large 16000AEh + push 2Fh ; '/' + mov al, byte_10BD7 + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+0AE2h] + call sub_D197 + push large 16800C7h + push 2Fh ; '/' + mov al, byte_10BD6 + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+0B06h] + call sub_D197 + mov si, 198h + mov [bp+var_4], 0 + mov [bp+var_2], 8 + jmp short loc_C319 +; --------------------------------------------------------------------------- + +loc_C2D5: ; CODE XREF: sub_C288+95j + mov bx, [bp+var_2] + mov al, [bx+27DCh] + mov ah, 0 + mov di, ax + cmp [bp+var_4], 0 + jnz short loc_C2F7 + or di, di + jz short loc_C2F7 + mov ax, [bp+var_2] + shl ax, 3 + sub si, ax + mov [bp+var_4], 1 + +loc_C2F7: ; CODE XREF: sub_C288+5Cj sub_C288+60j + cmp [bp+var_4], 0 + jz short loc_C316 + push si + push large 0E0002Fh + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + add si, 10h + +loc_C316: ; CODE XREF: sub_C288+73j + dec [bp+var_2] + +loc_C319: ; CODE XREF: sub_C288+4Bj + cmp [bp+var_2], 0 + jg short loc_C2D5 + mov al, byte_10BCC + mov ah, 0 + mov di, ax + push si + push large 0E0002Fh + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + push large 19800F8h + push 2Fh ; '/' + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + mov al, byte_10BD8 + mov ah, 0 + mov bx, 64h ; 'd' + cwd + idiv bx + mov di, ax + mov si, 198h + mov [bp+var_4], 0 + or di, di + jz short loc_C38D + sub si, 10h + mov [bp+var_4], 1 + push si + push large 123002Fh + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + add si, 10h + +loc_C38D: ; CODE XREF: sub_C288+E2j + mov al, byte_10BD8 + mov ah, 0 + mov bx, 64h ; 'd' + cwd + idiv bx + mov bx, 0Ah + mov ax, dx + cwd + idiv bx + mov di, ax + or di, di + jz short loc_C3B4 + cmp [bp+var_4], 0 + jnz short loc_C3B4 + mov [bp+var_4], 1 + sub si, 8 + +loc_C3B4: ; CODE XREF: sub_C288+11Cj + ; sub_C288+122j + cmp [bp+var_4], 0 + jz short loc_C3D3 + push si + push large 123002Fh + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + add si, 10h + +loc_C3D3: ; CODE XREF: sub_C288+130j + mov al, byte_10BD8 + mov ah, 0 + mov bx, 0Ah + cwd + idiv bx + mov di, dx + push si + push large 123002Fh + mov bx, di + shl bx, 2 + push large dword ptr [bx+0B16h] + call sub_D197 + lea ax, [si+10h] + push ax + push large 123002Fh + push ds + push offset aU_ ; "“_" + call sub_D197 + pop di + pop si + leave + retn +sub_C288 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C40D proc near ; CODE XREF: sub_B972+AAp + push bp + mov bp, sp + push si + push di + push 210h + call sub_CEC2 + push 4 + call sub_57A + push 0FFh + call sub_C864 + pop cx + push 100h + call sub_CEC2 + mov byte_106B0, 50h ; 'P' + mov si, 1 + jmp short loc_C44B +; --------------------------------------------------------------------------- + +loc_C43C: ; CODE XREF: sub_C40D+41j + les bx, dword_105DA + assume es:nothing + add bx, si + mov al, es:[bx+17h] + mov [si+27DCh], al + inc si + +loc_C44B: ; CODE XREF: sub_C40D+2Dj + cmp si, 9 + jl short loc_C43C + les bx, dword_105DA + mov al, 3 + sub al, es:[bx+36h] + mov byte_10BCC, al + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov byte_10BD7, al + mov al, es:[bx+0Bh] + mov byte_10BD6, al + mov al, es:[bx+38h] + mov byte_10BD8, al + mov al, byte_10BD3 + mov ah, 0 + cmp ax, 3 + jz short loc_C48B + cmp ax, 4 + jz short loc_C49E + jmp short loc_C4B1 +; --------------------------------------------------------------------------- + +loc_C48B: ; CODE XREF: sub_C40D+75j + mov al, byte_10BD2 + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, byte_10BD8 + add al, 2 + mov byte_10BD8, al + +loc_C49E: ; CODE XREF: sub_C40D+7Aj + mov al, byte_10BD2 + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + add al, byte_10BD8 + add al, 7 + mov byte_10BD8, al + +loc_C4B1: ; CODE XREF: sub_C40D+7Cj + cmp byte_10BD3, 5 + jb short loc_C4C0 + mov al, byte_10BD8 + add al, 0Fh + mov byte_10BD8, al + +loc_C4C0: ; CODE XREF: sub_C40D+A9j + cmp byte_10BD4, 0 + jz short loc_C4CC + mov byte_10BD8, 64h ; 'd' + +loc_C4CC: ; CODE XREF: sub_C40D+B8j + cmp byte_10BD8, 64h ; 'd' + jbe short loc_C4D8 + mov byte_10BD8, 64h ; 'd' + +loc_C4D8: ; CODE XREF: sub_C40D+C4j + push 600h + push ds + push offset aEd_m ; "ed.m" + call sub_C880 + add sp, 6 + mov word_E968, 0 + call far ptr loc_17D0 + push ds + push offset aEdbk1_rgb ; "edbk1.rgb" + call sub_1A68 + call far ptr loc_17D0 + push large 0C00008h + call sub_C36 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push large 4F018Fh + call sub_B9E + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push large 4F018Fh + call sub_B9E + push large 0C00000h + call sub_C36 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 10008h + push large 4E0187h + call sub_B9E + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 10008h + push large 4E0187h + call sub_B9E + call sub_C60 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aStf1_cdg ; "stf1.cdg" + push 0 + call sub_CFA8 + push 1 + push ds + push offset aStf11_cdg ; "stf11.cdg" + push 0 + call sub_CFA8 + push 2 + push ds + push offset aStf3_cdg ; "stf3.cdg" + push 0 + call sub_CF1E + push 3 + push ds + push offset aStf4_cdg ; "stf4.cdg" + push 0 + call sub_CF1E + push 4 + push ds + push offset aStf5_cdg ; "stf5.cdg" + push 0 + call sub_CFA8 + push 5 + push ds + push offset aStf6_cdg ; "stf6.cdg" + push 0 + call sub_CFA8 + push 6 + push ds + push offset aStf7_cdg ; "stf7.cdg" + push 0 + call sub_CFA8 + push 7 + push ds + push offset aStf8_cdg ; "stf8.cdg" + push 0 + call sub_CFA8 + push 8 + push ds + push offset aStf9_cdg ; "stf9.cdg" + push 0 + call sub_CFA8 + push 9 + push ds + push offset aStf10_cdg ; "stf10.cdg" + push 0 + call sub_CFA8 + push 0Ah + push ds + push offset aStf2_cdg ; "stf2.cdg" + push 0 + call sub_CFA8 + push 0Bh + push ds + push offset aStf12_cdg ; "stf12.cdg" + push 0 + call sub_CFA8 + call sub_BB66 + mov word_10BB2, 0 + les bx, dword_105DA + mov eax, es:[bx+10h] + mov dword_E9A6, eax + mov byte_10BB4, 0 + mov word_E968, 64h ; 'd' + call far ptr loc_17D0 + push 0 + call sub_CEC2 + mov byte_10BB6, 1 + mov byte_10BB5, 1 + push 1 + call sub_CB52 + mov word_F83E, 0 + +loc_C657: ; CODE XREF: sub_C40D+25Fj + call sub_BB51 + call sub_BCD5 + inc word_10BB2 + push large 40100h + call sub_BCA5 + or ax, ax + jz short loc_C657 + mov byte_10BC7, 0 + mov word_10BC4, 0 + mov word_10BC0, 0C8h ; 'È' + mov word_10BBC, 2 + mov word_10BBE, 41h ; 'A' + mov byte_10BC6, 0 + push large 8 + push 0Ah + call sub_BFB2 + mov word_10BBC, 1 + mov word_10BBE, 0A1h ; '¡' + mov byte_10BB6, 0 + push large 10010h + push 14h + call sub_BFB2 + mov word_10BC4, 20h ; ' ' + mov word_10BC0, 0A8h ; '¨' + push large 20016h + push 18h + call sub_C1FD + mov byte_10BC6, 7 + mov word_10BC0, 0D8h ; 'Ø' + mov word_10BC4, 0FFF0h + push large 30020h + push 22h ; '"' + call sub_C097 + mov byte_10BC6, 0 + mov word_10BC0, 0C8h ; 'È' + mov word_10BC4, 0 + push large 40024h + push 26h ; '&' + call sub_BFB2 + push large 0B002Ah + push 2Ch ; ',' + call sub_BFB2 + push large 50030h + push 32h ; '2' + call sub_BFB2 + push large 60036h + push 38h ; '8' + call sub_BFB2 + push large 0A003Ch + push 3Eh ; '>' + call sub_BFB2 + mov word_10BB2, 0 + +loc_C735: ; CODE XREF: sub_C40D+353j + call sub_BB51 + push large 1400080h + push 8 + call sub_BF7E + push large 0C000F0h + push 9 + call sub_BF7E + call sub_BCD5 + inc word_10BB2 + push large 420100h + call sub_BCA5 + or ax, ax + jz short loc_C735 + mov al, 1 + sub al, byte_10BB4 + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + call sub_C288 + mov dx, 0A6h ; '¦' + mov al, byte_10BB4 + out dx, al ; Interrupt Controller #2, 8259A + call sub_C288 + mov word_10BB2, 0 + xor di, di + +loc_C781: ; CODE XREF: sub_C40D+395j + ; sub_C40D+39Aj ... + call sub_D5A2 + call sub_BB51 + call sub_BCD5 + inc word_10BB2 + or di, di + jz short loc_C7AB + mov word_E968, di + call far ptr loc_17D0 + test byte ptr word_10BB2, 1 + jz short loc_C781 + dec di + or di, di + jnz short loc_C781 + jmp short loc_C7CD +; --------------------------------------------------------------------------- + +loc_C7AB: ; CODE XREF: sub_C40D+385j + cmp word_100FC, 0 + jz short loc_C781 + cmp word_10BB2, 100h + jle short loc_C781 + push 208h + call sub_CEC2 + mov di, 64h ; 'd' + mov word_10BB2, 0 + jmp short loc_C781 +; --------------------------------------------------------------------------- + +loc_C7CD: ; CODE XREF: sub_C40D+39Cj + xor si, si + jmp short loc_C7D8 +; --------------------------------------------------------------------------- + +loc_C7D1: ; CODE XREF: sub_C40D+3CEj + push si + call sub_D130 + inc si + +loc_C7D8: ; CODE XREF: sub_C40D+3C2j + cmp si, 20h ; ' ' + jl short loc_C7D1 + pop di + pop si + pop bp + retn +sub_C40D endp + +seg001 ends + +; =========================================================================== + +; Segment type: Pure code +seg002 segment byte public 'CODE' use16 + assume cs:seg002 + ;org 1 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7E2 proc far ; CODE XREF: sub_CEE0+18p + push bp + mov bp, sp + mov dword_10050, 0A8000000h + mov dword_10054, 0B0000000h + mov dword_10058, 0B8000000h + mov dword_1005C, 0E0000000h + pop bp + retf +sub_C7E2 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_C80C proc far ; CODE XREF: _main+2BP + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_C81E + inc bx + mov byte_10060, 1 + jmp short loc_C822 +; --------------------------------------------------------------------------- + +loc_C81E: ; CODE XREF: sub_C80C+8j + mov bl, byte_10061 + +loc_C822: ; CODE XREF: sub_C80C+10j + mov byte_EC70, bl + mov ax, bx + retf +sub_C80C endp + +; --------------------------------------------------------------------------- + nop + mov byte_10062, 60h ; '`' + mov byte_10061, 0 + mov byte_10060, 0 + mov byte_10063, 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_C860 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_C860 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_C860 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_C860: ; CODE XREF: seg002:006Cj seg002:0073j ... + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C864 proc far ; CODE XREF: sub_B7D2+14CP + ; sub_C40D+17P + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + +loc_C867: ; CODE XREF: sub_C864+17j + mov ah, 8 + cmp byte_10061, 1 + jz short loc_C874 + int 60h + jmp short loc_C876 +; --------------------------------------------------------------------------- + +loc_C874: ; CODE XREF: sub_C864+Aj + int 61h ; reserved for user interrupt + +loc_C876: ; CODE XREF: sub_C864+Ej + cmp al, [bp+arg_0] + jz short loc_C87D + jmp short loc_C867 +; --------------------------------------------------------------------------- + +loc_C87D: ; CODE XREF: sub_C864+15j + pop bp + retf +sub_C864 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C880 proc far ; CODE XREF: sub_9A2C:loc_9C25P + ; sub_9A2C+208P ... + +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_C88A: ; CODE XREF: sub_C880+17j + les bx, [bp+arg_0] + add bx, si + mov al, es:[bx] + mov [si+1C74h], al + inc si + loop loc_C88A + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_C8C1 + cmp byte_10061, 0 + jz short loc_C8C1 + xor bx, bx + +loc_C8AA: ; CODE XREF: sub_C880+30j + inc bx + cmp byte ptr [bx+1C74h], 0 + jnz short loc_C8AA + mov byte ptr [bx+1C74h], 6Dh ; 'm' + mov byte ptr [bx+1C75h], 64h ; 'd' + mov byte ptr [bx+1C76h], 0 + +loc_C8C1: ; CODE XREF: sub_C880+1Fj sub_C880+26j + mov dx, 1C74h + 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_C8DE + cmp byte_10061, 0 + jz short loc_C8DE + int 61h ; reserved for user interrupt + jmp short loc_C8E0 +; --------------------------------------------------------------------------- + +loc_C8DE: ; CODE XREF: sub_C880+51j sub_C880+58j + int 60h + +loc_C8E0: ; CODE XREF: sub_C880+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_C880 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C8F0 proc far ; CODE XREF: sub_BB80+91P + +arg_0 = word ptr 6 +arg_2 = byte ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = dword ptr 0Eh + + push bp + mov bp, sp + push si + mov dl, [bp+arg_2] + mov si, [bp+arg_0] + movsx eax, si + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+63Ah] + movsx ecx, word ptr [bx+5BAh] + imul eax, edx + sar eax, 8 + les bx, [bp+arg_8] + mov es:[bx], ax + movsx eax, si + imul eax, ecx + sar eax, 8 + les bx, [bp+arg_4] + mov es:[bx], ax + pop si + pop bp + retf 0Ch +sub_C8F0 endp + +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + mov si, [bp+6] + mov ax, [bp+12h] + sub ax, [bp+16h] + push ax + mov ax, [bp+14h] + sub ax, [bp+18h] + push ax + call sub_175E + add al, [bp+10h] + mov dl, al + movsx eax, si + mov dh, 0 + add dx, dx + mov bx, dx + movsx edx, word ptr [bx+63Ah] + movsx ecx, word ptr [bx+5BAh] + imul eax, edx + sar eax, 8 + les bx, [bp+0Ch] + mov es:[bx], ax + movsx eax, si + imul eax, ecx + sar eax, 8 + les bx, [bp+8] + mov es:[bx], ax + pop si + pop bp + retf 14h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C990 proc far ; CODE XREF: _main+6FP _main+1F6P ... + push bp + mov bp, sp + call sub_2912 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E72 + 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_201C + call sub_235A + call sub_1F20 + call sub_17CA + call sub_75A + pop bp + retf +sub_C990 endp + +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_C9D4: ; CODE XREF: sub_9A2C+3CP sub_9A2C+5DP ... + push bp + mov bp, sp + push si + push di + push large 0C00000h + call sub_C36 + mov si, [bp+6] + shl si, 4 + add si, 1D0Eh + mov ax, [si+0Eh] + mov cs:word_CA4C, ax + mov ax, [bp+0Ah] + sar ax, 3 + add ax, [si+6] + mov di, ax + mov cs:word_CA45, ax + mov ax, [si+8] + mov cs:word_CA37, ax + mov cs:word_CA51, ax + shl ax, 2 + add ax, 50h ; 'P' + mov cs:word_CA33, ax + jmp short $+2 + mov ax, [bp+8] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + push ds + mov ax, [si+0Ch] + mov ds, ax + xor si, si +; --------------------------------------------------------------------------- + db 0BAh +word_CA33 dw 1234h ; DATA XREF: seg002:0235w + db 0FCh, 0B9h +word_CA37 dw 1234h ; DATA XREF: seg002:0227w + db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 32h, 0C0h, 0E6h + db 7Ch, 0BBh +word_CA45 dw 1234h ; DATA XREF: seg002:0220w + db 8Bh, 0FBh, 33h, 0F6h, 0B8h +word_CA4C dw 1234h ; DATA XREF: seg002:0211w + db 8Eh, 0D8h, 0B9h +word_CA51 dw 1234h ; DATA XREF: seg002:022Bw + db 66h, 8Bh, 4, 66h, 26h, 9, 5, 83h, 0C6h, 4, 83h, 0C7h + db 4, 0E2h, 0F1h, 2Bh, 0FAh, 79h, 0EAh, 8Bh, 0FBh, 8Ch + db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0DCh, 3Dh + db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0D0h, 1Fh + db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h +; --------------------------------------------------------------------------- + +loc_CA88: ; CODE XREF: sub_9A2C+49P + push bp + mov bp, sp + push si + push di + push large 0C00000h + call sub_C36 + mov si, [bp+6] + shl si, 4 + add si, 1D0Eh + mov ax, [bp+0Ah] + sar ax, 3 + add ax, [si+6] + mov bx, [si+8] + shl bx, 2 + add ax, bx + dec ax + mov di, ax + mov cs:word_CB09, ax + mov cs:word_CB31, ax + mov cs:word_CAF3, bx + mov cs:word_CB1F, bx + mov ax, 50h ; 'P' + sub ax, bx + mov cs:word_CAEF, ax + mov cs:word_CB1B, ax + jmp short $+2 + mov ax, [bp+8] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + mov bx, 20D6h + mov fs, word ptr [si+0Ch] + xor si, si +; --------------------------------------------------------------------------- + db 0BAh +word_CAEF dw 1234h ; DATA XREF: seg002:02EDw +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- + db 0B9h +word_CAF3 dw 1234h ; DATA XREF: seg002:02DEw + db 64h, 8Ah, 4, 0D7h, 26h, 88h, 5, 46h, 4Fh, 0E2h, 0F5h + db 2Bh, 0FAh, 79h, 0EEh, 32h, 0C0h, 0E6h, 7Ch, 0BFh +word_CB09 dw 1234h ; DATA XREF: seg002:02D6w + db 8Bh, 76h, 6, 0C1h, 0E6h, 4, 81h, 0C6h, 0Eh, 1Dh, 8Eh + db 64h, 0Eh, 33h, 0F6h, 0BAh +word_CB1B dw 1234h ; DATA XREF: seg002:02F1w +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- + db 0B9h +word_CB1F dw 4D2h ; DATA XREF: seg002:02E3w + db 64h, 8Ah, 4, 0D7h, 26h, 8, 5, 46h, 4Fh, 0E2h, 0F5h + db 2Bh, 0FAh, 79h, 0EEh, 0BFh +word_CB31 dw 1234h ; DATA XREF: seg002:02DAw + db 8Ch, 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0DFh + db 3Dh, 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0D3h + db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB52 proc far ; CODE XREF: sub_978D+69P sub_978D+C9P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_F83E, 0 + +loc_CB5B: ; CODE XREF: sub_CB52+Fj + mov ax, word_F83E + cmp ax, [bp+arg_0] + jb short loc_CB5B + pop bp + retf 2 +sub_CB52 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_CB68 proc far ; CODE XREF: sub_D5A2+5p seg002:0DEBp ... + xor ax, ax + mov word_100F8, ax + mov word_100FA, ax + mov word_100FC, ax + mov word_F80A, ax + jmp short $+2 + mov bl, 2 + xor ax, ax + mov es, ax + assume es:seg000 + +loc_CB7E: ; CODE XREF: sub_CB68+19Dj + mov ah, byte ptr es:loc_52F+2 + test ah, 4 + jz short loc_CB8D + or word_100FC, 1 + +loc_CB8D: ; CODE XREF: sub_CB68+1Ej + test ah, 20h + jz short loc_CB97 + or word_100FC, 2 + +loc_CB97: ; CODE XREF: sub_CB68+28j + test ah, 8 + jz short loc_CBA6 + or word_100FA, 20h + or word_100FC, 4 + +loc_CBA6: ; CODE XREF: sub_CB68+32j + test ah, 10h + jz short loc_CBB5 + or word_100FA, 10h + or word_100FC, 8 + +loc_CBB5: ; CODE XREF: sub_CB68+41j + mov ah, byte ptr es:locret_533 + test ah, 1 + jz short loc_CBC9 + or word_100FA, 8 + or word_100FC, 8 + +loc_CBC9: ; CODE XREF: sub_CB68+55j + test ah, 4 + jz short loc_CBDA + or word_100FA, 200h + or word_100FC, 200h + +loc_CBDA: ; CODE XREF: sub_CB68+64j + test ah, 8 + jz short loc_CBE9 + or word_100FA, 2 + or word_100FC, 2 + +loc_CBE9: ; CODE XREF: sub_CB68+75j + test ah, 10h + jz short loc_CBFA + or word_100FA, 800h + or word_100FC, 800h + +loc_CBFA: ; CODE XREF: sub_CB68+84j + mov ah, byte ptr es:loc_532 + test ah, 40h + jz short loc_CC0E + or word_100FA, 4 + or word_100FC, 4 + +loc_CC0E: ; CODE XREF: sub_CB68+9Aj + test ah, 4 + jz short loc_CC1F + or word_100FA, 100h + or word_100FC, 100h + +loc_CC1F: ; CODE XREF: sub_CB68+A9j + test ah, 8 + jz short loc_CC2E + or word_100FA, 1 + or word_100FC, 1 + +loc_CC2E: ; CODE XREF: sub_CB68+BAj + test ah, 10h + jz short loc_CC3F + or word_100FA, 400h + or word_100FC, 400h + +loc_CC3F: ; CODE XREF: sub_CB68+C9j + mov ah, byte ptr es:loc_52F + test ah, 2 + jz short loc_CC53 + or word_100F8, 20h + or word_100FC, 20h + +loc_CC53: ; CODE XREF: sub_CB68+DFj + test ah, 4 + jz short loc_CC62 + or word_100F8, 10h + or word_100FC, 10h + +loc_CC62: ; CODE XREF: sub_CB68+EEj + test ah, 10h + jz short loc_CC6D + or word_100F8, 200h + +loc_CC6D: ; CODE XREF: sub_CB68+FDj + test ah, 20h + jz short loc_CC77 + or word_100F8, 2 + +loc_CC77: ; CODE XREF: sub_CB68+108j + test ah, 40h + jz short loc_CC82 + or word_100F8, 800h + +loc_CC82: ; CODE XREF: sub_CB68+112j + mov ah, byte ptr es:loc_52E + test ah, 1 + jz short loc_CC91 + or word_100F8, 4 + +loc_CC91: ; CODE XREF: sub_CB68+122j + test ah, 4 + jz short loc_CC9B + or word_100F8, 8 + +loc_CC9B: ; CODE XREF: sub_CB68+12Cj + mov ah, byte ptr es:locret_52A+2 + test ah, 8 + jz short loc_CCAB + or word_100F8, 100h + +loc_CCAB: ; CODE XREF: sub_CB68+13Bj + test ah, 10h + jz short loc_CCB5 + or word_100F8, 1 + +loc_CCB5: ; CODE XREF: sub_CB68+146j + test ah, 20h + jz short loc_CCC0 + or word_100F8, 400h + +loc_CCC0: ; CODE XREF: sub_CB68+150j + test ah, 1 + jz short loc_CCCB + or word_100FC, 4000h + +loc_CCCB: ; CODE XREF: sub_CB68+15Bj + mov ah, byte ptr es:locret_52A + test ah, 1 + jz short loc_CCDB + or word_100FC, 1000h + +loc_CCDB: ; CODE XREF: sub_CB68+16Bj + mov ah, byte ptr es:loc_52D + test ah, 10h + jz short loc_CCEB + or word_100FC, 2000h + +loc_CCEB: ; CODE XREF: sub_CB68+17Bj + mov ah, byte ptr es:loc_52F+1 + test ah, 10h + jz short loc_CCFA + or word_100FC, 20h + +loc_CCFA: ; CODE XREF: sub_CB68+18Bj + dec bl + jz short locret_CD08 + mov cx, 400h + +loc_CD01: ; CODE XREF: sub_CB68+19Bj + out 5Fh, al + loop loc_CD01 + jmp loc_CB7E +; --------------------------------------------------------------------------- + +locret_CD08: ; CODE XREF: sub_CB68+194j + retf +sub_CB68 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CD0A proc far ; CODE XREF: sub_9A2C+1AP + ; sub_9A2C+258P ... + +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, 1F3Eh + push ax ; src + push ds + push offset unk_F80E ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_17D0 + pop bp + retf 2 +sub_CD0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CD2F proc far ; CODE XREF: sub_990C+F5P + ; sub_990C+119P ... + +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_0] + mov bx, di + shl bx, 2 + mov ax, [bx+1F10h] + mov dx, [bx+1F0Eh] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_CDA3 +; --------------------------------------------------------------------------- + +loc_CD55: ; CODE XREF: sub_CD2F+80j + push [bp+arg_4] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+1F3Ah] + call sub_1632 + inc si + cmp si, 190h + jl short loc_CD76 + sub si, 190h + +loc_CD76: ; CODE XREF: sub_CD2F+41j + mov bx, di + imul bx, 48h + mov ax, [bx+1F3Ah] + 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_CDA3: ; CODE XREF: sub_CD2F+24j + mov bx, di + imul bx, 48h + mov ax, [bx+1F3Ch] + cmp ax, [bp+var_6] + ja short loc_CD55 + pop di + pop si + leave + retf 6 +sub_CD2F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CDB7 proc far ; CODE XREF: sub_9A2C+136P + ; sub_9A2C+19EP ... + +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_0] + mov bx, di + shl bx, 2 + mov ax, [bx+1F10h] + mov dx, [bx+1F0Eh] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_CE2A +; --------------------------------------------------------------------------- + +loc_CDDD: ; CODE XREF: sub_CDB7+7Fj + push [bp+arg_4] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+1F3Ah] + call sub_1632 + inc si + cmp si, 190h + jl short loc_CDFE + sub si, 190h + +loc_CDFE: ; CODE XREF: sub_CDB7+41j + mov bx, di + imul bx, 48h + mov ax, [bx+1F3Ah] + 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 + add [bp+var_6], 2 + +loc_CE2A: ; CODE XREF: sub_CDB7+24j + mov bx, di + imul bx, 48h + mov ax, [bx+1F3Ch] + cmp ax, [bp+var_6] + ja short loc_CDDD + pop di + pop si + leave + retf 6 +sub_CDB7 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_CE3E proc far ; CODE XREF: _main+4DP sub_A64D+5B9P + mov byte_EC7D, 0 + mov byte_EC7C, 0FFh + retf +sub_CE3E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CE4A proc far ; CODE XREF: sub_A64D+5C1P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov dx, [bp+arg_0] + cmp byte_10060, 0 + jz short loc_CE82 + cmp byte_EC7C, 0FFh + jnz short loc_CE66 + mov byte_EC7C, dl + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_CE66: ; CODE XREF: sub_CE4A+12j + mov al, byte_EC7C + mov ah, 0 + mov bx, ax + mov al, [bx+896h] + mov bx, dx + cmp al, [bx+896h] + ja short loc_CE82 + mov byte_EC7C, dl + mov byte_EC7D, 0 + +loc_CE82: ; CODE XREF: sub_CE4A+Bj sub_CE4A+2Dj + pop bp + retf 2 +sub_CE4A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_CE86 proc far ; CODE XREF: sub_A64D+5C6P + cmp byte_10060, 0 + jz short locret_CEC1 + cmp byte_EC7C, 0FFh + jz short locret_CEC1 + cmp byte_EC7D, 0 + jnz short loc_CEA2 + mov ah, 0Ch + mov al, byte_EC7C + int 60h ; - Banyan VINES, 3com - GET STATION ADDRESS + ; Return: AL = status, 00h successful, ES:SI -> 6-byte station address + ; 02h semaphore service is unavailable + +loc_CEA2: ; CODE XREF: sub_CE86+13j + inc byte_EC7D + mov al, byte_EC7C + mov ah, 0 + mov bx, ax + mov al, [bx+8B7h] + cmp al, byte_EC7D + jnb short locret_CEC1 + mov byte_EC7D, 0 + mov byte_EC7C, 0FFh + +locret_CEC1: ; CODE XREF: sub_CE86+5j sub_CE86+Cj ... + retf +sub_CE86 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CEC2 proc far ; CODE XREF: sub_978D+3FP + ; sub_9A2C+1DBP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_EC70, 0 + jz short loc_CEDC + mov ax, [bp+arg_0] + cmp byte_10061, 1 + jz short loc_CEDA + int 60h + jmp short loc_CEDC +; --------------------------------------------------------------------------- + +loc_CEDA: ; CODE XREF: sub_CEC2+12j + int 61h ; reserved for user interrupt + +loc_CEDC: ; CODE XREF: sub_CEC2+8j sub_CEC2+16j + pop bp + retf 2 +sub_CEC2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CEE0 proc far ; CODE XREF: _main+11P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push 4650h + call sub_213E + or ax, ax + jz short loc_CEF6 + mov ax, 1 + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_CEF6: ; CODE XREF: sub_CEE0+Dj + nop + push cs + call near ptr sub_C7E2 + call sub_1F6E + call sub_75A + call sub_E24 + call sub_2AAE + push large [bp+arg_0] + call sub_2856 + xor ax, ax + pop bp + retf 4 +sub_CEE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CF1E proc far ; CODE XREF: sub_9624+25P sub_990C+31P ... + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 4, 0 + push si + push di + mov di, [bp+arg_6] + push di + nop + push cs + call near ptr sub_D130 + mov ax, di + shl ax, 4 + add ax, 1D0Eh + mov si, ax + push large [bp+arg_2] + call sub_966 + push ds + push si + push 10h + call sub_8B2 + mov ax, [si] + imul ax, 5 + movzx eax, ax + mov [bp+var_4], eax + movsx eax, [bp+arg_0] + imul eax, [bp+var_4] + push eax + push 1 + call sub_9A2 + push word ptr [si] + call sub_21AE + mov [si+0Ch], ax + push word ptr [si+0Ch] + push 0 + push word ptr [si] + call sub_8B2 + mov ax, [si] + shl ax, 2 + push ax + call sub_21AE + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8B2 + call sub_846 + pop di + pop si + leave + retf 8 +sub_CF1E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CFA8 proc far ; CODE XREF: sub_9624+B1P + ; sub_C40D+172P ... + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 4, 0 + push si + push di + mov di, [bp+arg_6] + push di + nop + push cs + call near ptr sub_D130 + mov ax, di + shl ax, 4 + add ax, 1D0Eh + mov si, ax + push large [bp+arg_2] + call sub_966 + push ds + push si + push 10h + call sub_8B2 + mov ax, [si] + imul ax, 5 + movzx eax, ax + mov [bp+var_4], eax + movsx eax, [bp+arg_0] + imul eax, [bp+var_4] + push eax + push 1 + call sub_9A2 + movzx eax, word ptr [si] + push eax + push 1 + call sub_9A2 + mov word ptr [si+0Ch], 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_21AE + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8B2 + call sub_846 + pop di + pop si + leave + retf 8 +sub_CFA8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D02E proc far ; CODE XREF: sub_B7D2+118P + ; sub_D114+10p + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + push di + push large [bp+arg_0] + call sub_966 + push [bp+arg_4] + nop + push cs + call near ptr sub_D130 + mov ax, [bp+arg_4] + shl ax, 4 + add ax, 1D0Eh + mov si, ax + push ds + push ax + push 10h + call sub_8B2 + mov di, si + mov [bp+var_2], 1 + jmp short loc_D071 +; --------------------------------------------------------------------------- + +loc_D062: ; CODE XREF: sub_D02E+4Bj + mov ax, [bp+arg_4] + add ax, [bp+var_2] + push ax + nop + push cs + call near ptr sub_D130 + inc [bp+var_2] + +loc_D071: ; CODE XREF: sub_D02E+32j + mov al, [di+0Ah] + mov ah, 0 + cmp ax, [bp+var_2] + jg short loc_D062 + mov [bp+var_2], 0 + jmp short loc_D0FD +; --------------------------------------------------------------------------- + +loc_D082: ; CODE XREF: sub_D02E+D7j + mov ax, [di] + mov [si], ax + mov ax, [di+2] + mov [si+2], ax + mov ax, [di+4] + mov [si+4], ax + mov ax, [di+6] + mov [si+6], ax + mov ax, [di+8] + mov [si+8], ax + mov al, [di+0Ah] + mov [si+0Ah], al + mov byte ptr [si+0Bh], 0 + cmp byte_EC84, 0 + jnz short loc_D0C7 + push word ptr [si] + call sub_21AE + mov [si+0Ch], ax + push word ptr [si+0Ch] + push 0 + push word ptr [si] + call sub_8B2 + jmp short loc_D0D9 +; --------------------------------------------------------------------------- + +loc_D0C7: ; CODE XREF: sub_D02E+7Fj + mov word ptr [si+0Ch], 0 + movzx eax, word ptr [si] + push eax + push 1 + call sub_9A2 + +loc_D0D9: ; CODE XREF: sub_D02E+97j + mov ax, [si] + shl ax, 2 + push ax + call sub_21AE + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8B2 + inc [bp+var_2] + add si, 10h + +loc_D0FD: ; CODE XREF: sub_D02E+52j + mov al, [di+0Ah] + mov ah, 0 + cmp ax, [bp+var_2] + jg loc_D082 + call sub_846 + pop di + pop si + leave + retf 6 +sub_D02E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D114 proc far ; CODE XREF: sub_9624+18P + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + mov byte_EC84, 1 + push [bp+arg_4] + push large [bp+arg_0] + push cs + call near ptr sub_D02E + mov byte_EC84, 0 + pop bp + retf 6 +sub_D114 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D130 proc far ; CODE XREF: sub_9776+9P sub_9A2C+64P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + shl ax, 4 + add ax, 1D0Eh + mov di, ax + xor si, si + jmp short loc_D164 +; --------------------------------------------------------------------------- + +loc_D144: ; CODE XREF: sub_D130+37j + mov bx, si + add bx, bx + cmp word ptr [bx+di+0Ch], 0 + jz short loc_D163 + mov bx, si + add bx, bx + push word ptr [bx+di+0Ch] + call sub_22B2 + mov bx, si + add bx, bx + mov word ptr [bx+di+0Ch], 0 + +loc_D163: ; CODE XREF: sub_D130+1Cj + inc si + +loc_D164: ; CODE XREF: sub_D130+12j + cmp si, 2 + jl short loc_D144 + pop di + pop si + pop bp + retf 2 +sub_D130 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D16F proc far ; CODE XREF: _main:loc_9F1EP + push bp + mov bp, sp + call sub_2912 + 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_201C + call sub_235A + call sub_17CA + call sub_75A + pop bp + retf +sub_D16F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D197 proc far ; CODE XREF: sub_973E+FP sub_973E+20P ... + +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 = dword ptr 6 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + + enter 32h, 0 + push si + push di + mov di, [bp+arg_8] + 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 ; 'À' + mov ax, [bp+arg_4] + and ax, 0Fh + push ax + call sub_C36 + mov dx, 68h ; 'h' + mov al, 0Bh + out dx, al + jmp loc_D3E0 +; --------------------------------------------------------------------------- + +loc_D1D0: ; CODE XREF: sub_D197+250j + mov ax, [bp+arg_6] + 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_0] + assume es:nothing + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+11EFh], 4 + jz short loc_D225 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + cbw + shl ax, 8 + mov dl, es:[bx+1] + mov dh, 0 + add ax, dx + push ax + call sub_924C + pop cx + mov [bp+var_2], ax + add word ptr [bp+arg_0], 2 + jmp short loc_D26B +; --------------------------------------------------------------------------- + +loc_D225: ; CODE XREF: sub_D197+6Aj + les bx, [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+11EFh], 3 + jz short loc_D243 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + add ax, 2980h + jmp short loc_D25E +; --------------------------------------------------------------------------- + +loc_D243: ; CODE XREF: sub_D197+9Dj + les bx, [bp+arg_0] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0F05h], 5Eh + jz short loc_D263 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + add ax, 2900h + +loc_D25E: ; CODE XREF: sub_D197+AAj + mov [bp+var_2], ax + jmp short loc_D268 +; --------------------------------------------------------------------------- + +loc_D263: ; CODE XREF: sub_D197+BAj + mov [bp+var_2], 2B21h + +loc_D268: ; CODE XREF: sub_D197+CAj + inc word ptr [bp+arg_0] + +loc_D26B: ; CODE XREF: sub_D197+8Cj + 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_D2CC + cmp [bp+var_2], 2B7Eh + ja short loc_D2CC + cmp di, 278h + jg loc_D3EB + mov [bp+var_12], 0 + jmp short loc_D2BF +; --------------------------------------------------------------------------- + +loc_D29D: ; CODE XREF: sub_D197+12Cj + 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_D2BF: ; CODE XREF: sub_D197+104j + cmp [bp+var_12], 10h + jl short loc_D29D + mov [bp+var_A], 0 + jmp short loc_D322 +; --------------------------------------------------------------------------- + +loc_D2CC: ; CODE XREF: sub_D197+EEj sub_D197+F5j + cmp di, 270h + jg loc_D3EB + mov [bp+var_12], 0 + jmp short loc_D317 +; --------------------------------------------------------------------------- + +loc_D2DB: ; CODE XREF: sub_D197+184j + 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_D317: ; CODE XREF: sub_D197+142j + cmp [bp+var_12], 10h + jl short loc_D2DB + mov [bp+var_A], 1 + +loc_D322: ; CODE XREF: sub_D197+133j + mov [bp+var_12], 0 + jmp loc_D3C7 +; --------------------------------------------------------------------------- + +loc_D32A: ; CODE XREF: sub_D197+234j + 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_D34E + cmp ax, 2 + jz short loc_D364 + cmp ax, 3 + jz short loc_D35A + jmp short loc_D37A +; --------------------------------------------------------------------------- + +loc_D34E: ; CODE XREF: sub_D197+1A9j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + jmp short loc_D37A +; --------------------------------------------------------------------------- + +loc_D35A: ; CODE XREF: sub_D197+1B3j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + +loc_D364: ; CODE XREF: sub_D197+1AEj + 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_D37A: ; CODE XREF: sub_D197+1B5j + ; sub_D197+1C1j + cmp [bp+var_C], 0 + jz short loc_D3AD + 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_D3C0 +; --------------------------------------------------------------------------- + +loc_D3AD: ; CODE XREF: sub_D197+1E7j + 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_D3C0: ; CODE XREF: sub_D197+214j + add word ptr [bp+var_8], 50h ; 'P' + inc [bp+var_12] + +loc_D3C7: ; CODE XREF: sub_D197+190j + cmp [bp+var_12], 10h + jl loc_D32A + cmp [bp+var_A], 0 + jz short loc_D3D8 + add di, 8 + +loc_D3D8: ; CODE XREF: sub_D197+23Cj + mov ax, [bp+var_10] + add ax, 8 + add di, ax + +loc_D3E0: ; CODE XREF: sub_D197+36j + les bx, [bp+arg_0] + cmp byte ptr es:[bx], 0 + jnz loc_D1D0 + +loc_D3EB: ; CODE XREF: sub_D197+FBj + ; sub_D197+139j + mov dx, 68h ; 'h' + mov al, 0Ah + out dx, al + call sub_C60 + pop di + pop si + leave + retf 0Ah +sub_D197 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D3FC proc far ; CODE XREF: sub_978D+51P sub_978D+7AP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + cmp byte_EC70, 0 + jnz short loc_D412 + push [bp+arg_0] + nop + push cs + call near ptr sub_CB52 + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_D412: ; CODE XREF: sub_D3FC+8j sub_D3FC+2Bj + mov ah, 5 + cmp byte_10061, 1 + jz short loc_D41F + 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_D424 +; --------------------------------------------------------------------------- + +loc_D41F: ; CODE XREF: sub_D3FC+1Dj + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_D424: ; CODE XREF: sub_D3FC+21j + cmp ax, [bp+arg_2] + jb short loc_D412 + pop bp + retf 4 +sub_D3FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D42D proc far ; CODE XREF: sub_A64D+1CDP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + cmp byte_EC70, 0 + jnz short loc_D443 + push [bp+arg_0] + nop + push cs + call near ptr sub_D47A + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_D443: ; CODE XREF: sub_D42D+8j sub_D42D+45j + mov ah, 5 + cmp byte_10061, 1 + jz short loc_D450 + 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_D455 +; --------------------------------------------------------------------------- + +loc_D450: ; CODE XREF: sub_D42D+1Dj + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_D455: ; CODE XREF: sub_D42D+21j + nop + push cs + call near ptr sub_D5A2 + test byte ptr word_100FC, 20h + jnz short loc_D468 + test byte ptr word_100FC+1, 20h + jz short loc_D46F + +loc_D468: ; CODE XREF: sub_D42D+32j + mov ax, 1 + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_D46F: ; CODE XREF: sub_D42D+39j + cmp ax, [bp+arg_2] + jb short loc_D443 + xor ax, ax + pop bp + retf 4 +sub_D42D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D47A proc far ; CODE XREF: sub_A64D+17AP sub_D42D+Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_F83E, 0 + +loc_D483: ; CODE XREF: sub_D47A+29j + nop + push cs + call near ptr sub_D5A2 + test byte ptr word_100FC, 20h + jnz short loc_D496 + test byte ptr word_100FC+1, 20h + jz short loc_D49D + +loc_D496: ; CODE XREF: sub_D47A+13j + mov ax, 1 + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_D49D: ; CODE XREF: sub_D47A+1Aj + mov ax, word_F83E + cmp ax, [bp+arg_0] + jb short loc_D483 + xor ax, ax + pop bp + retf 2 +sub_D47A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D4AB proc far ; CODE XREF: sub_990C+EBP + ; sub_990C+10FP ... + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + mov si, [bp+arg_4] + mov ax, si + imul ax, 48h + add ax, 1F26h + push ds + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+1F0Eh] + call sub_FEC + push large [bp+arg_0] + mov ax, si + imul ax, 48h + add ax, 1F26h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 1F0Eh + push ds + push ax + call sub_1044 + mov [bp+var_2], ax + pop si + leave + retf 6 +sub_D4AB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D4F1 proc far ; CODE XREF: sub_A64D+502P + +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 + + enter 6, 0 + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_0] + mov bx, [bp+arg_2] + shl bx, 2 + mov ax, [bx+1F10h] + mov dx, [bx+1F0Eh] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + cmp di, 1 + jnz short loc_D51D + add word ptr [bp+var_4], 0A0h ; ' ' + jmp short loc_D533 +; --------------------------------------------------------------------------- + +loc_D51D: ; CODE XREF: sub_D4F1+23j + cmp di, 2 + jnz short loc_D529 + add word ptr [bp+var_4], 0FA00h + jmp short loc_D533 +; --------------------------------------------------------------------------- + +loc_D529: ; CODE XREF: sub_D4F1+2Fj + cmp di, 3 + jnz short loc_D533 + add word ptr [bp+var_4], 0FAA0h + +loc_D533: ; CODE XREF: sub_D4F1+2Aj sub_D4F1+36j ... + 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 + mov [bp+var_6], 0 + jmp short loc_D595 +; --------------------------------------------------------------------------- + +loc_D556: ; CODE XREF: sub_D4F1+A9j + push [bp+arg_6] + push si + push large [bp+var_4] + push 140h + call sub_1632 + inc si + cmp si, 190h + jl short loc_D571 + sub si, 190h + +loc_D571: ; CODE XREF: sub_D4F1+7Aj + add word ptr [bp+var_4], 140h + 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_D595: ; CODE XREF: sub_D4F1+63j + cmp [bp+var_6], 0C8h ; 'È' + jl short loc_D556 + pop di + pop si + leave + retf 8 +sub_D4F1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D5A2 proc far ; CODE XREF: sub_978D:loc_9868P + ; sub_9A2C:loc_9C4BP ... + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + cmp word_E960, 0 + jz short loc_D5BD + call sub_2AEA + mov ax, word_F80A + or word_100FC, ax + +loc_D5BD: ; CODE XREF: sub_D5A2+Dj + mov ax, word_100F8 + or word_100FC, ax + pop bp + retf +sub_D5A2 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + cmp word_E960, 0 + jz short loc_D5F0 + call sub_2AEA + mov ax, word_F80A + mov word_100F8, ax + mov ax, word_100FC + mov word_100FA, ax + +loc_D5F0: ; CODE XREF: seg002:0DFDj + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + cmp word_E960, 0 + jz short loc_D612 + call sub_2AEA + mov ax, word_F80A + mov word_100FA, ax + mov ax, word_100FC + mov word_100F8, ax + +loc_D612: ; CODE XREF: seg002:0E1Fj + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + mov ax, word_100FC + or word_100F8, ax + cmp word_E960, 0 + jz short loc_D636 + call sub_2AEA + mov ax, word_F80A + or word_100F8, ax + +loc_D636: ; CODE XREF: seg002:0E48j + mov word_100FA, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + mov ax, word_100FC + or ax, word_100F8 + mov word_100FA, ax + cmp word_E960, 0 + jz short loc_D663 + call sub_2AEA + mov ax, word_F80A + or word_100FA, ax + +loc_D663: ; CODE XREF: seg002:0E75j + mov word_100F8, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + test byte ptr word_100FC+1, 10h + jnz short loc_D681 + test byte ptr word_100FC+1, 20h + jz short loc_D687 + +loc_D681: ; CODE XREF: seg002:0E98j + mov word_100FC, 1000h + +loc_D687: ; CODE XREF: seg002:0E9Fj + mov word_100F8, 0 + mov word_100FA, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_CB68 + cmp word_E960, 0 + jz short loc_D6B0 + call sub_2AEA + mov ax, word_F80A + or word_100FC, ax + +loc_D6B0: ; CODE XREF: seg002:0EC2j + mov ax, word_100F8 + or word_100FC, ax + mov word_100F8, 0 + mov word_100FA, 0 + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6C5 proc far ; CODE XREF: sub_A5FC+2CP sub_A64D+70P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + xor di, di + +loc_D6CF: ; CODE XREF: sub_D6C5+1Cj + push cs + call near ptr sub_D5A2 + cmp word_100FC, 0 + jz short loc_D6E3 + push 1 + nop + push cs + call near ptr sub_CB52 + jmp short loc_D6CF +; --------------------------------------------------------------------------- + +loc_D6E3: ; CODE XREF: sub_D6C5+13j + or si, si + jnz short loc_D707 + mov si, 270Fh + jmp short loc_D707 +; --------------------------------------------------------------------------- + +loc_D6EC: ; CODE XREF: sub_D6C5+44j + push cs + call near ptr sub_D5A2 + cmp word_100FC, 0 + jnz short loc_D70B + inc di + push 1 + nop + push cs + call near ptr sub_CB52 + cmp si, 270Fh + jnz short loc_D707 + xor di, di + +loc_D707: ; CODE XREF: sub_D6C5+20j sub_D6C5+25j ... + cmp di, si + jl short loc_D6EC + +loc_D70B: ; CODE XREF: sub_D6C5+30j + pop di + pop si + pop bp + retf 2 +sub_D6C5 endp + +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_D712: ; CODE XREF: sub_978D+38P sub_978D+62P ... + push bp + mov bp, sp + push si + push di + mov si, [bp+6] + shl si, 4 + add si, 1D0Eh + mov ax, [bp+0Ah] + sar ax, 3 + add ax, [si+6] + mov di, ax + mov ax, [si+8] + mov cs:word_D759, ax + jmp short $+2 + shl ax, 2 + add ax, 50h ; 'P' + mov dx, ax + mov ax, [bp+8] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + push ds + mov ax, [si+0Eh] + mov ds, ax + xor si, si + mov bx, di + cld + nop +; --------------------------------------------------------------------------- + db 0B9h +word_D759 dw 1234h ; DATA XREF: seg002:0F4Fw + db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch + db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh + db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh + db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h + +; =============== S U B R O U T I N E ======================================= + + +sub_D784 proc far ; CODE XREF: _main+52P + push di + xor ax, ax + mov di, 20D6h + xor dl, dl + jmp short loc_D799 +; --------------------------------------------------------------------------- + +loc_D78E: ; CODE XREF: sub_D784+1Aj + xor dl, dl + mov cx, 8 + +loc_D793: ; CODE XREF: sub_D784+13j + rol al, 1 + rcr dl, 1 + loop loc_D793 + +loc_D799: ; CODE XREF: sub_D784+8j + mov [di], dl + inc di + inc al + jnz short loc_D78E + pop di + retf +sub_D784 endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 2 + 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, 8EDFh + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_D7D1 + 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_D7EB + +loc_D7D1: ; 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_D7EB: ; 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_D811 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:8ED7o + db 0Dh dup(0), 2, 0, 2, 0, 0E5h, 8Eh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0B3h, 0 + dw seg seg003 + 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, 0ECh, 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, 8F51h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_D8BA + 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_D92E + +loc_D8BA: ; 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_D91E + 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_D8F0 + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_D8F2 +; --------------------------------------------------------------------------- + +loc_D8F0: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_D8F2: ; 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_D91E: ; 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_D92E: ; 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, 93h, 2 + dw seg seg003 +aTstringref db 'TStringRef *',0 +byte_D96B db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:8F3Bo + db 0Dh dup(0), 2, 0, 2, 0, 67h, 8Fh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_D9FB + db 2 dup(0), 3, 0Dh dup(0) +byte_D9B9 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:8F37o + db 0Dh dup(0), 2, 0, 2, 0, 0B4h, 8Fh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Bh, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_D9FB db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0205o + db 0Dh dup(0), 1, 0, 1, 0, 0ECh, 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, 0AAh, 6 + dw seg seg003 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0D9h, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh) + db 1, 0, 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h + db 72h, 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, 900Ah + 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_DB1F + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_DB0C + 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_DE4A + add sp, 6 + +loc_DB0C: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_DB1F + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_DB1F: ; 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, 903Eh + 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_DB5A + mov ax, 1 + jmp short loc_DB5C +; --------------------------------------------------------------------------- + +loc_DB5A: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_DB5C: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_DBDD + 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, 9130h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 1194h + 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, 0BFCh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_DBDD: ; 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, 9082h + 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_DC18 + mov ax, 1 + jmp short loc_DC1A +; --------------------------------------------------------------------------- + +loc_DC18: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_DC1A: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_DC9B + 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, 9130h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 11B2h + 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, 0BFCh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_DC9B: ; 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, 90C6h + 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_DCD3 + mov ax, 1 + jmp short loc_DCD5 +; --------------------------------------------------------------------------- + +loc_DCD3: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_DCD5: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_DD56 + 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, 9130h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 11D0h + 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, 0BFCh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_DD56: ; 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_DD88 + 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_DD88 + jmp loc_DE2E +; --------------------------------------------------------------------------- + +loc_DD88: ; 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_DFE2 + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_3C88 + 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_DDE2 + push ds + mov ax, 0EEAh + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_DDE2: ; 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_DE2E: ; 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_DE4A(void (*driver)(void), char) +sub_DE4A 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, 90E0h + 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_DE9C + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3B55 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_DE9C + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_DE9C: ; CODE XREF: sub_DE4A+2Bj sub_DE4A+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_DE4A 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, 90F2h + 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_DFE2 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_F582 + jbe short loc_DF0A + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3DEF + 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_DF0A: ; CODE XREF: seg003:0741j + 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, 90FCh + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_DFE2 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_F582 + jbe short loc_DF72 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3DEF + 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_DF72: ; CODE XREF: seg003:07A9j + 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_DF80 proc far ; CODE XREF: seg003:08C1p + +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, 910Eh + 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_3DEF + 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_DFD4 + push ds + mov ax, 0EEAh + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_DFD4: ; CODE XREF: sub_DF80+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_DF80 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_DFE2 proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg003:072Cp ... + +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, 9118h + call ___InitExceptBlocks + mov ax, word_F57E + mov [bp+var_20], ax + mov cx, word_F580 + 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_DFE2 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, 912Ah + 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_DFE2 + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_E069 + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_DF80 + add sp, 6 + jmp short loc_E0D8 +; --------------------------------------------------------------------------- + +loc_E069: ; CODE XREF: seg003:08B7j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_F582 + jbe short loc_E0D8 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_E0D8 + mov ax, [bp-26h] + inc ax + push ax + call sub_3C88 + 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_E0AA + push ds + mov ax, 0EEAh + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_E0AA: ; CODE XREF: seg003:08FCj + cmp word ptr [bp+0Ah], 0 + jz short loc_E0CC + 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_E0CC: ; CODE XREF: seg003:090Ej + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_E0E9 +; --------------------------------------------------------------------------- + +loc_E0D8: ; CODE XREF: seg003:08C7j seg003:08D7j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_E0E9: ; CODE XREF: seg003:0936j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_E106 + cmp ax, [bp-22h] + jnz short loc_E106 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_E138 + +loc_E106: ; CODE XREF: seg003:0957j seg003:095Cj + 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_E138: ; CODE XREF: seg003:0964j + cmp word ptr [bp+12h], 0 + jz short loc_E17C + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_E163 + 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_E17C +; --------------------------------------------------------------------------- + +loc_E163: ; CODE XREF: seg003:09A4j + 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_E17C: ; CODE XREF: seg003:099Cj seg003:09C1j + 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_E1AE + cmp ax, [bp-22h] + jz short loc_E1D1 + +loc_E1AE: ; CODE XREF: seg003:0A07j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3B55 + 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_E1D1: ; CODE XREF: seg003:0A0Cj + 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_F578 + mov [bp-2], ax + mov ax, [bp+6] + mov word_F578, 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_F57A + mov [bp-2], ax + mov ax, [bp+6] + mov word_F57A, 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_F57C + mov [bp-2], ax + mov ax, [bp+6] + mov word_F57C, 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_F57E + mov [bp-2], ax + mov ax, [bp+6] + mov word_F57E, 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_F580 + mov [bp-2], ax + mov ax, [bp+6] + mov word_F580, ax + cmp word_F580, 0 + jnz short loc_E274 + mov word_F580, 1 + +loc_E274: ; CODE XREF: seg003:0ACCj + 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_F582 + mov [bp-2], ax + mov ax, [bp+6] + mov word_F582, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_E29A db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9106o seg000:9122o + db 0Dh dup(0), 2, 0, 2, 0, 65h, 91h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_E32A + 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, 0B2h, 91h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 8Ah, 0Bh + dw seg seg003 + dw 0 + db 3, 0Dh dup(0) +byte_E32A db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0B34o seg003:0C36o + db 0Dh dup(0), 1, 0, 1, 0, 0ECh, 55h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_E362 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:9018o seg000:90A0o + db 0Dh dup(0), 1, 0, 1, 0, 7, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_E39C db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:90EAo + db 0Dh dup(0), 2, 0, 2, 0, 0FFh, 91h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0 + dd byte_E32A + db 0 + db 0 + db 3, 13h dup(0) +seg003 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_E3F0 dw 0 ; DATA XREF: sub_48A+7r sub_3A84+20r ... +word_E3F2 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +word_E3F4 dw 554Eh ; DATA XREF: sub_48A+20w sub_3AF5+Cr ... +word_E3F6 dw 4C4Ch ; DATA XREF: sub_48A+Br sub_3AF5+2r ... +off_E3F8 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_3A21+24r ... + db 48h ; H + db 45h ; E +off_E3FC dw offset sub_4B43 ; DATA XREF: sub_5D3C+77r sub_5D3C+A1r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_E44A dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_E44E dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_E452 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_E456 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_E45E dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:8ECEw +word_E462 dw 0 ; DATA XREF: start+127r seg000:8EC8w +word_E464 dw 0 ; DATA XREF: start+46w +word_E466 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_E468 dw 0 ; DATA XREF: start+55w seg000:8E83r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_E46C dw 0 ; DATA XREF: start+16w start+C7r ... +word_E46E dw 0 ; DATA XREF: __IOERROR:loc_3210w + ; seg000:4188w ... + db 0FFh + db 0FFh + db 80h ; € + db 28h ; ( +word_E474 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_E476 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_E478 dw 0 ; DATA XREF: sub_3E70+6Ew __sbrk+12r ... +word_E47A dw 0 ; DATA XREF: start+8Bw sub_3E70+6Aw ... +word_E47C dw 0 ; DATA XREF: sub_3E70+7Ew __brk+1Cr ... +word_E47E dw 0 ; DATA XREF: start+21w start+F5w ... + db 22h ; " + db 1 + db 2Bh ; + + db 1 + db 34h ; 4 + db 1 + db 3Dh ; = + db 1 + db 46h ; F + db 1 + db 4Fh ; O + db 1 + db 58h ; X + db 1 + db 61h ; a + db 1 + db 6Ah ; j + db 1 + dd a@00tx_txt ; "@00TX.TXT" + dd a@01tx_txt ; "@01TX.TXT" + dd a@02tx_txt ; "@02TX.TXT" + dd a@03tx_txt ; "@03TX.TXT" + dd a@04tx_txt ; "@04TX.TXT" + dd a@05tx_txt ; "@05TX.TXT" + dd a@06tx_txt ; "@06TX.TXT" + dd a@07tx_txt ; "@07TX.TXT" + dd a@08tx_txt ; "@08TX.TXT" +off_E4B6 dd a@00dm0_txt ; DATA XREF: _main+130r _main+149r ... + ; "@00DM0.TXT" + dd aCVUUav ; " –²‚Æ“`“‚ð•ÛŽç‚·‚é›Þ— " + dd aFocab@sC ; " ”Ž—í@èË–²" + dd aLviuvCVICV ; " ‹v‰“‚Ì–²‚ɉ^–½‚ð”C‚¹‚é¸_ " + dd aCgCv ; " –£ –‚" + dd aCvc@vNgcVivcvV ; " –‚–@‚Æg–²‚©‚ç‚È‚é‘¶Ý " + dd aCIjb@cvcan ; " –¶‰J@–‚—¹ " + dd aVVVcvlvrvVC ; "‚Í‚½‚ç‚«‚à‚Ì‚Å—ö‚𖲌©‚é–‚—" + dd aB@b@gggmgu ; "@@ƒGƒŒƒ“" + dd aTeclvF ; " ’e–‹‚É”ü‚𖲂݂é•P " + dd aPmuexp ; " ¬“e•P" + dd aCV ; " –²‚ðŽ¸‚Á‚½­—‘›—ì " + dd aGjgibegagigxgi ; "ƒJƒiEƒAƒiƒxƒ‰ƒ‹" + dd aB@b@b@cV ; " @@@–²‚ð’T‚·‰ÈŠw " + dd aB@tisqb@canboq ; "@’©‘q@—Žq" + dd aB@Ouv ; "@ Žž‚ð‚©‚¯‚é–²Œ¶‚ÌZl " + dd aCkftiB@vVfvs ; " –k”’‰Í@‚¿‚ä‚è" + dd aB@B@b@b@cMURrb ; "@ @@@–²Œ¶“`à@@@ " + dd aB@iknsb@cF ; " @‰ªè@–²”ü" +word_E502 dw 38Ah ; DATA XREF: sub_990C+CBr +word_E504 dw 391h ; DATA XREF: sub_990C+80r sub_990C+91r ... +a0016_pi db '0016.pi',0 + db 0 + db 0 + db 0 + db 0 +a00sl_cd2 db '00sl.cd2',0 +a02sl_cd2 db '02sl.cd2',0 +a04sl_cd2 db '04sl.cd2',0 +a06sl_cd2 db '06sl.cd2',0 +a08sl_cd2 db '08sl.cd2',0 +a10sl_cd2 db '10sl.cd2',0 +a12sl_cd2 db '12sl.cd2',0 +a14sl_cd2 db '14sl.cd2',0 +a16sl_cd2 db '16sl.cd2',0 +a@00tx_txt db '@00TX.TXT',0 ; DATA XREF: dseg:00A2o +a@01tx_txt db '@01TX.TXT',0 ; DATA XREF: dseg:00A6o +a@02tx_txt db '@02TX.TXT',0 ; DATA XREF: dseg:00AAo +a@03tx_txt db '@03TX.TXT',0 ; DATA XREF: dseg:00AEo +a@04tx_txt db '@04TX.TXT',0 ; DATA XREF: dseg:00B2o +a@05tx_txt db '@05TX.TXT',0 ; DATA XREF: dseg:00B6o +a@06tx_txt db '@06TX.TXT',0 ; DATA XREF: dseg:00BAo +a@07tx_txt db '@07TX.TXT',0 ; DATA XREF: dseg:00BEo +a@08tx_txt db '@08TX.TXT',0 ; DATA XREF: dseg:00C2o +a@00dm0_txt db '@00DM0.TXT',0 ; DATA XREF: dseg:off_E4B6o +aCVUUav db ' –²‚Æ“`“‚ð•ÛŽç‚·‚é›Þ— ',0 ; DATA XREF: dseg:00CAo +aFocab@sC db ' ”Ž—í@èË–²',0 ; DATA XREF: dseg:00CEo +aLviuvCVICV db ' ‹v‰“‚Ì–²‚ɉ^–½‚ð”C‚¹‚é¸_ ',0 ; DATA XREF: dseg:00D2o +aCgCv db ' –£ –‚',0 ; DATA XREF: dseg:00D6o +aCvc@vNgcVivcvV db ' –‚–@‚Æg–²‚©‚ç‚È‚é‘¶Ý ',0 ; DATA XREF: dseg:00DAo +aCIjb@cvcan db ' –¶‰J@–‚—¹ ',0 ; DATA XREF: dseg:00DEo +aVVVcvlvrvVC db '‚Í‚½‚ç‚«‚à‚Ì‚Å—ö‚𖲌©‚é–‚—',0 ; DATA XREF: dseg:00E2o +aB@b@gggmgu db '@@ƒGƒŒƒ“',0 ; DATA XREF: dseg:00E6o +aTeclvF db ' ’e–‹‚É”ü‚𖲂݂é•P ',0 ; DATA XREF: dseg:00EAo +aPmuexp db ' ¬“e•P',0 ; DATA XREF: dseg:00EEo +aCV db ' –²‚ðŽ¸‚Á‚½­—‘›—ì ',0 ; DATA XREF: dseg:00F2o +aGjgibegagigxgi db 'ƒJƒiEƒAƒiƒxƒ‰ƒ‹',0 ; DATA XREF: dseg:00F6o +aB@b@b@cV db ' @@@–²‚ð’T‚·‰ÈŠw ',0 ; DATA XREF: dseg:00FAo +aB@tisqb@canboq db '@’©‘q@—Žq',0 ; DATA XREF: dseg:00FEo +aB@Ouv db '@ Žž‚ð‚©‚¯‚é–²Œ¶‚ÌZl ',0 ; DATA XREF: dseg:0102o +aCkftiB@vVfvs db ' –k”’‰Í@‚¿‚ä‚è',0 ; DATA XREF: dseg:0106o +aB@B@b@b@cMURrb db '@ @@@–²Œ¶“`à@@@ ',0 ; DATA XREF: dseg:010Ao +aB@iknsb@cF db ' @‰ªè@–²”ü',0 ; DATA XREF: dseg:010Eo +aYume_cfg db 'YUME.CFG',0 ; DATA XREF: sub_95F3+6o +aLogo0_rgb db 'logo0.rgb',0 ; DATA XREF: sub_9624+5o +aLogo_cd2 db 'logo.cd2',0 ; DATA XREF: sub_9624+15o +aLogo5_cdg db 'logo5.cdg',0 ; DATA XREF: sub_9624+20o +aLogo1_rgb db 'logo1.rgb',0 ; DATA XREF: sub_978D+A5o +aSt_cd2 db 'st.cd2',0 +aStnx1_pi db 'stnx1.pi',0 +aStnx0_pi db 'stnx0.pi',0 ; DATA XREF: sub_990C+E8o +a00mm_m db '00mm.m',0 +aDec_m db 'dec.m',0 +aEn2_pi db 'EN2.pi',0 ; DATA XREF: sub_9A2C+126o +aEnemy00_pi db 'ENEMY00.pi',0 ; DATA XREF: sub_9A2C+16Eo +aEnemy01_pi db 'ENEMY01.pi',0 ; DATA XREF: sub_9A2C+176o +aEnemy02_pi db 'ENEMY02.pi',0 ; DATA XREF: sub_9A2C+17Eo +aEnemy03_pi db 'ENEMY03.pi',0 ; DATA XREF: sub_9A2C+186o +aEnemy04_pi db 'ENEMY04.pi',0 ; DATA XREF: sub_9A2C+18Eo +aYume_efc db 'YUME.EFC',0 ; DATA XREF: sub_9A2C+205o _main+42o +aCOul db '–²Žž‹ó1.dat',0 ; DATA XREF: _main+Eo +aMikoft_bft db 'MIKOFT.bft',0 ; DATA XREF: _main+36o +; char path[] +path db 'op',0 ; DATA XREF: _main+78o _main+7Co ... +aWin_m db 'win.m',0 ; DATA XREF: _main+C6o +; char aMain[] +aMain db 'main',0 ; DATA XREF: _main+1AAo _main+1AEo + dd 0 + db 1 + db 1 + db 1 + db 1 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + db 2 + db 2 + db 3 + db 3 + db 3 + db 3 + db 3 + db 3 + db 3 + db 4 + db 4 + db 4 + db 4 + db 4 + db 4 + db 5 + db 5 + db 5 + db 5 + db 5 + db 5 + db 6 + db 6 + db 6 + db 6 + db 6 + db 6 + db 6 + db 7 + db 7 + db 7 + db 7 + db 7 + db 7 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 8 + db 9 + db 9 + db 9 + db 9 + db 9 + db 9 + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Ah + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Bh + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Ch + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Dh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 0Fh + db 10h + db 10h + db 10h + db 10h + db 10h + db 10h + db 10h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 11h + db 12h + db 12h + db 12h + db 12h + db 12h + db 12h + db 12h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 13h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 14h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 15h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 16h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 17h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 18h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 19h + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Ah + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Bh + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Ch + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Dh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Eh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 1Fh + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h +aBfnt db 'BFNT' + db 1Ah + db 0 +word_E912 dw 0 ; DATA XREF: sub_ACE:loc_AE3r + ; sub_E24+17w +word_E914 dw 27Fh ; DATA XREF: sub_ACE+19r sub_E24+36w +word_E916 dw 27Fh ; DATA XREF: sub_E24+33w +word_E918 dw 0 ; DATA XREF: sub_ACE:loc_B0Cr + ; sub_B9E+3r ... +word_E91A dw 18Fh ; DATA XREF: sub_ACE+42r sub_B9E+1Fr ... +word_E91C dw 18Fh ; DATA XREF: sub_E24+40w +word_E91E dw 0A800h ; DATA XREF: sub_ACE+66r sub_B9E+19r ... +word_E920 dw 7CB0h ; DATA XREF: sub_E24+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_E944 dw 0 ; DATA XREF: sub_8B2+5r sub_8B2+26r ... +word_E946 dw 0FFFFh ; DATA XREF: sub_786+6r sub_786+1Fw ... +byte_E948 db 0 ; DATA XREF: sub_AAE+4r + db 0 +word_E94A dw 0 ; DATA XREF: sub_C72+2r sub_C72+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_E954 dw 0A800h ; DATA XREF: sub_E24+9w sub_E72+18r ... +word_E956 dw 3E80h ; DATA XREF: sub_E24+Fw sub_E72+14r ... +word_E958 dw 190h ; DATA XREF: sub_E24+3Cw sub_1700+6r + db 50h ; P + db 0 +word_E95C dw 0 ; DATA XREF: sub_E24+2Dw sub_1700+16r + db 55h ; U + db 0 +word_E960 dw 0 ; DATA XREF: sub_2AAE:loc_2AD3w + ; sub_2AEA+5r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_E968 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_E99A dw 0 ; DATA XREF: seg000:17FBr +word_E99C dw 0 ; DATA XREF: sub_276E+36w sub_2820+3r + db 0 + db 0 +word_E9A0 dw 200h ; DATA XREF: sub_5B8+9r sub_5B8+2Fr +byte_E9A2 db 0 ; DATA XREF: sub_5B8:loc_5F4w + ; sub_5B8+48w + db 0 + db 0 + db 0 +dword_E9A6 dd 1 ; DATA XREF: sub_1A3E+Cr sub_1A3E+15r ... + 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_EC2C dw 0A000h ; DATA XREF: sub_1F32+1Cr + db 50h ; P + db 0 +word_EC30 dw 1 ; DATA XREF: sub_F02+2Er +unk_EC32 db 0 ; DATA XREF: seg000:2008r + db 0 +word_EC34 dw 0 ; DATA XREF: seg000:1FFAr +word_EC36 dw 0 ; DATA XREF: sub_1F6E+Ew sub_1F6E+16w ... +byte_EC38 db 0 ; DATA XREF: sub_1F6E+24r sub_1F6E+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_EC42 dw 0 ; DATA XREF: sub_1EC0r sub_2160+6w ... +word_EC44 dw 0 ; DATA XREF: sub_213E+15w sub_2160+1Bw ... +word_EC46 dw 0 ; DATA XREF: sub_5B8+3w sub_1044+DFw ... +word_EC48 dw 100h ; DATA XREF: sub_2186+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_EC4F db 0 ; DATA XREF: sub_24E2+24r + ; sub_24E2:loc_2528r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_EC56 dw 0 ; DATA XREF: sub_24E2+6Er +word_EC58 dw 0 ; DATA XREF: sub_24E2+6Br + 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_EC66 dw 0 ; DATA XREF: sub_24E2+32r + db 0 + db 0 +word_EC6A dw 0 ; DATA XREF: sub_237Er sub_237E+7r ... +word_EC6C dw 0 ; DATA XREF: sub_237E:loc_239Br + ; sub_23C2+5r ... +word_EC6E dw 0 ; DATA XREF: sub_237E+24r sub_237E+2Br +byte_EC70 db 0 ; DATA XREF: sub_BCA5+3r + ; sub_C80C:loc_C822w ... + db 0 +aPal98Grb db 'pal98 grb',0 +byte_EC7C db 0FFh ; DATA XREF: sub_CE3E+5w sub_CE4A+Dr ... +byte_EC7D db 0 ; DATA XREF: sub_CE3Ew sub_CE4A+33w ... +a_exe db '.exe',0 + db 0 +byte_EC84 db 0 ; DATA XREF: sub_D02E+7Ar sub_D114+3w ... + db 0 + db 0 + db 0 + db 20h + db 10h + db 2 + db 12h + db 12h + db 12h + db 40h ; @ + db 10h + db 11h + db 2 + db 11h + db 20h + db 12h + db 12h + db 12h + db 12h + db 20h + db 20h + db 12h + db 12h + db 0Eh + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 24h ; $ + db 10h + db 4 + db 10h + db 8 + db 0Ah + db 30h ; 0 + db 50h ; P + db 18h + db 11h + db 0Bh + db 4 + db 50h ; P + db 10h + db 30h ; 0 + db 4Ah ; J + db 32h ; 2 + db 20h + db 18h + db 44h ; D + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 30h ; 0 + db 0 +aOver_pi db 'over.pi',0 ; DATA XREF: sub_9F8D+15Fo + db 0 + db 0 + db 11h + db 11h + db 0 + db 0 + db 44h ; D + db 44h ; D + db 88h ; ˆ + db 88h ; ˆ + db 11h + db 11h + db 22h ; " + db 22h ; " + db 44h ; D + db 44h ; D + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0EEh ; î + db 0EEh ; î + db 77h ; w + db 77h ; w + db 0BBh ; » + db 0BBh ; » + db 0DDh ; Ý + db 0DDh ; Ý + db 20h + db 20h + db 0 + db 0 + dd aNoEntry ; " No Entry! " + dd aB@b@sCB@b@ ; "@@èË–²@@" + dd aB@b@cgcvb@b@ ; "@@–£–‚@@" + dd aB@cvcanB@ ; " @–‚—¹@ " + dd aB@gggmgub@ ; " @ƒGƒŒƒ“@ " + dd aB@pmuexpb@ ; " @¬“e•P@ " + dd aB@Gjgi ; " @ ƒJƒi " + dd aB@canboq ; " @—Žq " + dd aB@vVfvsb@ ; " @‚¿‚ä‚è@ " + dd aB@CF ; " @ –²”ü@ " + db 14h + db 4 + db 8 + db 0Ch + db 17h + db 0Eh + db 0Eh + db 0Eh + db 0Ch + db 8 + db 0Ch + db 0 + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Ch + db 0 + db 14h + db 8 + db 15h + db 0 + db 0Eh + db 0Eh + db 4 + db 0Bh + db 4 + db 10h + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 0Ah + db 11h + db 16h + db 11h + db 7 + db 8 + db 0Ch + db 4 + db 0Ah + db 0 + db 10h + db 0 + db 0Eh + db 0Eh + db 0Eh + db 0Eh + db 14h + db 8 + db 0Ah + db 0 + db 0Ah + db 11h + db 0Eh + db 0Eh + db 2 + db 7 + db 8 + db 1Bh + db 17h + db 14h + db 8 + db 0Eh + db 1Bh + db 17h + db 0Ch + db 4 + db 0Ch + db 8 + db 0Eh + db 0Eh +word_ED66 dw 0A04h ; DATA XREF: sub_AE8E+4r sub_AE8E+12r ... +word_ED68 dw 0A0Dh ; DATA XREF: sub_AFAC+4Ar +unk_ED6A db 0 ; DATA XREF: sub_B46B+10o + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aNoEntry db ' No Entry! ',0 ; DATA XREF: dseg:0906o +aB@b@sCB@b@ db '@@èË–²@@',0 ; DATA XREF: dseg:090Ao +aB@b@cgcvb@b@ db '@@–£–‚@@',0 ; DATA XREF: dseg:090Eo +aB@cvcanB@ db ' @–‚—¹@ ',0 ; DATA XREF: dseg:0912o +aB@gggmgub@ db ' @ƒGƒŒƒ“@ ',0 ; DATA XREF: dseg:0916o +aB@pmuexpb@ db ' @¬“e•P@ ',0 ; DATA XREF: dseg:091Ao +aB@Gjgi db ' @ ƒJƒi ',0 ; DATA XREF: dseg:091Eo +aB@canboq db ' @—Žq ',0 ; DATA XREF: dseg:0922o +aB@vVfvsb@ db ' @‚¿‚ä‚è@ ',0 ; DATA XREF: dseg:0926o +aB@CF db ' @ –²”ü@ ',0 ; DATA XREF: dseg:092Ao +aYume_nem db 'YUME.NEM',0 +aRft0_cdg db 'rft0.cdg',0 +aRegib_pi db 'regib.pi',0 ; DATA XREF: sub_AFAC+1Bo +aRegi2_bft db 'regi2.bft',0 ; DATA XREF: sub_AFAC+71o +aRegi1_bft db 'regi1.bft',0 ; DATA XREF: sub_AFAC+7Ao +aScore_m db 'score.m',0 ; DATA XREF: sub_B7D2+14o +aConti_pi db 'conti.pi',0 ; DATA XREF: sub_B7D2+EBo +aConti_cd2 db 'conti.cd2',0 ; DATA XREF: sub_B7D2+115o +aOver_pi_0 db 'over.pi',0 ; DATA XREF: sub_B7D2+122o +aOver_m db 'over.m',0 ; DATA XREF: sub_B92E+Fo + db 0 +off_EE4E dd a@00ed_txt ; DATA XREF: sub_B972+40r sub_B972+56r ... + ; "@00ED.TXT" + db 3Ch ; < + db 0 + db 7Eh ; ~ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 7Eh ; ~ + db 0 + db 3Ch ; < + db 0 + db 0 + db 0 + db 18h + db 0 + db 3Ch ; < + db 0 + db 7Eh ; ~ + db 0 + db 7Eh ; ~ + db 0 + db 3Ch ; < + db 0 + db 18h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 18h + db 0 + db 3Ch ; < + db 0 + db 3Ch ; < + db 0 + db 18h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 18h + db 0 + db 18h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 22h ; " + db 22h ; " + db 55h ; U + db 55h ; U + db 88h ; ˆ + db 88h ; ˆ + db 55h ; U + db 55h ; U + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0EEh ; î + db 0EEh ; î + db 55h ; U + db 55h ; U + db 0BBh ; » + db 0BBh ; » + db 55h ; U + db 55h ; U + db 0EEh ; î + db 0EEh ; î + db 77h ; w + db 77h ; w + db 0BBh ; » + db 0BBh ; » + db 0DDh ; Ý + db 0DDh ; Ý + db 0FFh + db 0FFh + db 55h ; U + db 55h ; U + db 0FFh + db 0FFh + db 55h ; U + db 55h ; U + db 0FFh + db 0FFh + db 0EEh ; î + db 0EEh ; î + db 0FFh + db 0FFh + db 0BBh ; » + db 0BBh ; » + db 0FFh + db 0FFh + db 77h ; w + db 77h ; w + db 0FFh + db 0FFh + db 0FFh + db 0FFh + dd aFocab@sC_0 ; " ”Ž—í@èË–²" + dd aCgCv_0 ; " –£ –‚" + dd aCIjb@cvcan_0 ; " –¶‰J@–‚—¹ " + dd aB@b@gggmgu_0 ; "@@ƒGƒŒƒ“" + dd aPmuexp_0 ; " ¬“e•P" + dd aGjgibegagigx_0 ; "ƒJƒiEƒAƒiƒxƒ‰ƒ‹" + dd aB@tisqb@canb_0 ; "@’©‘q@—Žq" + dd aCkftiB@vVfvs_0 ; " –k”’‰Í@‚¿‚ä‚è" + dd aB@iknsb@cF_0 ; " @‰ªè@–²”ü" + dd aVdvbvuvs ; " ‚d‚‚“‚™" + dd aVmvpvtvnvbvm ; " ‚m‚‚’‚‚‚Œ" + dd aVgvbvtvd ; " ‚g‚‚’‚„" + dd aVkvxvovbvfvivg ; "‚k‚•‚Ž‚‚”‚‰‚ƒ" + dd aVo ; "‚O" + dd aVp ; "‚P" + dd aVq ; "‚Q" + dd aVr ; "‚R" + dd aVs ; "‚S" + dd aVt ; "‚T" + dd aVu ; "‚U" + dd aVv ; "‚V" + dd aVw ; "‚W" + dd aVx ; "‚X" +a@00ed_txt db '@00ED.TXT',0 ; DATA XREF: dseg:off_EE4Eo +a@99ed_txt db '@99ED.TXT',0 ; DATA XREF: sub_B972+E8o +; char aOp_0[] +aOp_0 db 'op',0 ; DATA XREF: sub_B972+107o + ; sub_B972+10Bo +aFocab@sC_0 db ' ”Ž—í@èË–²',0 ; DATA XREF: dseg:0AE2o +aCgCv_0 db ' –£ –‚',0 ; DATA XREF: dseg:0AE6o +aCIjb@cvcan_0 db ' –¶‰J@–‚—¹ ',0 ; DATA XREF: dseg:0AEAo +aB@b@gggmgu_0 db '@@ƒGƒŒƒ“',0 ; DATA XREF: dseg:0AEEo +aPmuexp_0 db ' ¬“e•P',0 ; DATA XREF: dseg:0AF2o +aGjgibegagigx_0 db 'ƒJƒiEƒAƒiƒxƒ‰ƒ‹',0 ; DATA XREF: dseg:0AF6o +aB@tisqb@canb_0 db '@’©‘q@—Žq',0 ; DATA XREF: dseg:0AFAo +aCkftiB@vVfvs_0 db ' –k”’‰Í@‚¿‚ä‚è',0 ; DATA XREF: dseg:0AFEo +aB@iknsb@cF_0 db ' @‰ªè@–²”ü',0 ; DATA XREF: dseg:0B02o +aVdvbvuvs db ' ‚d‚‚“‚™',0 ; DATA XREF: dseg:0B06o +aVmvpvtvnvbvm db ' ‚m‚‚’‚‚‚Œ',0 ; DATA XREF: dseg:0B0Ao +aVgvbvtvd db ' ‚g‚‚’‚„',0 ; DATA XREF: dseg:0B0Eo +aVkvxvovbvfvivg db '‚k‚•‚Ž‚‚”‚‰‚ƒ',0 ; DATA XREF: dseg:0B12o +aVo db '‚O',0 ; DATA XREF: dseg:0B16o +aVp db '‚P',0 ; DATA XREF: dseg:0B1Ao +aVq db '‚Q',0 ; DATA XREF: dseg:0B1Eo +aVr db '‚R',0 ; DATA XREF: dseg:0B22o +aVs db '‚S',0 ; DATA XREF: dseg:0B26o +aVt db '‚T',0 ; DATA XREF: dseg:0B2Ao +aVu db '‚U',0 ; DATA XREF: dseg:0B2Eo +aVv db '‚V',0 ; DATA XREF: dseg:0B32o +aVw db '‚W',0 ; DATA XREF: dseg:0B36o +aVx db '‚X',0 ; DATA XREF: dseg:0B3Ao +aU_ db '“_',0 ; DATA XREF: sub_C288+179o +aEd_m db 'ed.m',0 ; DATA XREF: sub_C40D+CFo +aEdbk1_rgb db 'edbk1.rgb',0 ; DATA XREF: sub_C40D+E6o +aStf1_cdg db 'stf1.cdg',0 ; DATA XREF: sub_C40D+16Do +aStf11_cdg db 'stf11.cdg',0 ; DATA XREF: sub_C40D+17Ao +aStf3_cdg db 'stf3.cdg',0 ; DATA XREF: sub_C40D+187o +aStf4_cdg db 'stf4.cdg',0 ; DATA XREF: sub_C40D+194o +aStf5_cdg db 'stf5.cdg',0 ; DATA XREF: sub_C40D+1A1o +aStf6_cdg db 'stf6.cdg',0 ; DATA XREF: sub_C40D+1AEo +aStf7_cdg db 'stf7.cdg',0 ; DATA XREF: sub_C40D+1BBo +aStf8_cdg db 'stf8.cdg',0 ; DATA XREF: sub_C40D+1C8o +aStf9_cdg db 'stf9.cdg',0 ; DATA XREF: sub_C40D+1D5o +aStf10_cdg db 'stf10.cdg',0 ; DATA XREF: sub_C40D+1E2o +aStf2_cdg db 'stf2.cdg',0 ; DATA XREF: sub_C40D+1EFo +aStf12_cdg db 'stf12.cdg',0 ; DATA XREF: sub_C40D+1FCo +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_F0B6 dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_2DAFr ... +off_F0B8 dd sub_2FC2 ; DATA XREF: sub_2FC7+29r _setvbuf+C0w ... +off_F0BC dd sub_2FC2 ; DATA XREF: sub_2FC7+43r +off_F0C0 dd sub_2FC2 ; DATA XREF: sub_2FC7+47r + db 0 + db 0 +word_F0C6 dw 209h ; DATA XREF: seg000:35DBw seg000:35E5r +byte_F0C8 db 0 ; DATA XREF: seg000:35CCr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0D4h ; Ô + db 0Ch + db 0 + db 0 +word_F0DA dw 20Ah ; DATA XREF: seg000:3614w seg000:361Er +byte_F0DC db 1 ; DATA XREF: seg000:3605r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0E8h ; è + db 0Ch + db 0 + db 0 + db 2 + db 2 +byte_F0F0 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 0FCh ; ü + db 0Ch + 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 10h + db 0Dh + 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 24h ; $ + db 0Dh + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_F254 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_F27E dw 0 ; DATA XREF: __IOERROR:loc_31F3w + ; __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_F2DE dw 0 ; DATA XREF: seg000:32CAr +word_F2E0 dw 328Fh ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_F2E2 dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_F2F2 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: _tolower+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_F408 dw 0 ; DATA XREF: __ExceptInit+28w +word_F40A 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_F51E dw 0 ; DATA XREF: seg000:39CAw seg000:39DDw ... +word_F520 dw 0 ; DATA XREF: sub_3E70+22r sub_3E70+61w +byte_F522 db 0 ; DATA XREF: seg000:41C5r seg000:41DDw +byte_F523 db 0 ; DATA XREF: seg000:4160r seg000:4173w +word_F524 dw 0 ; DATA XREF: seg000:40CDr seg000:4103w +word_F526 dw 0 ; DATA XREF: seg000:40C9r + ; seg000:loc_40FDw + db 0 + db 0 + db 0 + db 0 +word_F52C dw 0 ; DATA XREF: seg000:3FE7r seg000:401Dw ... +word_F52E dw 0 ; DATA XREF: seg000:3FE3r + ; seg000:loc_4017w ... + db 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_F548 dd 0 ; DATA XREF: sub_4320:loc_4341w + ; sub_4355+Ar ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 5Ch ; \ + db 0 +word_F55C dw 0 ; DATA XREF: _setvbuf:loc_4E26r + ; _setvbuf+4Bw +word_F55E dw 0 ; DATA XREF: _setvbuf:loc_4E10r + ; _setvbuf+35w +word_F560 dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_F574 dd 0 ; DATA XREF: _getenv+21r seg000:8E90w ... +word_F578 dw 1 ; DATA XREF: seg003:0A47r seg003:0A50w +word_F57A dw 0 ; DATA XREF: seg003:0A64r seg003:0A6Dw +word_F57C dw 1 ; DATA XREF: seg003:0A81r seg003:0A8Aw +word_F57E dw 3Fh ; DATA XREF: sub_DFE2+13r seg003:0A9Er ... +word_F580 dw 40h ; DATA XREF: sub_DFE2+19r seg003:0ABBr ... +word_F582 dw 3Fh ; DATA XREF: seg003:073Dr seg003:07A5r ... +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 9Dh ; + db 35h ; 5 + db 0 + db 0 + db 0 + db 10h + db 0B9h ; ¹ + db 39h ; 9 + db 0 + db 0 + db 0 + db 0Fh + db 0Ch + db 43h ; C + db 0 + db 0 + db 0 + db 10h + db 7Ah ; z + db 8Eh ; Ž + db 0 + db 0 + db 1 + db 20h + dd loc_343D +unk_F72C db ? ; ; DATA XREF: sub_9624+E4o sub_973E+Co + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F768 db ? ; DATA XREF: sub_9624+EEw +unk_F769 db ? ; ; DATA XREF: sub_9624+F4o sub_973E+1Do + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F7A5 db ? ; DATA XREF: sub_9624+FEw +unk_F7A6 db ? ; ; DATA XREF: sub_9624+104o + ; sub_973E+2Eo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F7E2 db ? ; DATA XREF: sub_9624+10Ew +byte_F7E3 db ? ; DATA XREF: sub_9624+35r + ; sub_9624:loc_96AAr ... +byte_F7E4 db ? ; DATA XREF: sub_9624:loc_965Er + ; sub_9624:loc_96A5r ... +byte_F7E5 db ? ; DATA XREF: sub_990C+70w sub_990C+E0w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F7FA dd ? ; DATA XREF: sub_7DA+17r sub_8B2+2Er ... +word_F7FE dw ? ; DATA XREF: sub_786+32w sub_786+46w ... +word_F800 dw ? ; DATA XREF: sub_786+35w sub_786+49w ... +word_F802 dw ? ; DATA XREF: sub_786+29w sub_7DA+9r ... +word_F804 dw ? ; DATA XREF: sub_786+26w sub_7DA+Cr ... +word_F806 dw ? ; DATA XREF: sub_786+2Cw sub_856+2Dw ... +word_F808 dw ? ; DATA XREF: sub_786+2Fw + ; sub_7DA:loc_80Bw ... +word_F80A dw ? ; DATA XREF: sub_2AEA:loc_2B03w + ; sub_CB68+Bw ... + db ? ; + db ? ; +unk_F80E db ? ; ; DATA XREF: sub_CD0A+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_F83E dw ? ; DATA XREF: sub_1F6E+1Ew seg000:1FF2w ... +word_F840 dw ? ; DATA XREF: sub_1F6E+21w seg000:1FF6w +word_F842 dw ? ; DATA XREF: sub_1F6E+37w sub_201C+2Br +word_F844 dw ? ; DATA XREF: sub_1F6E+3Aw sub_201C+27r +word_F846 dw ? ; DATA XREF: seg000:1FECw +word_F848 dw ? ; DATA XREF: sub_2160+Fw sub_21C2+18r ... +word_F84A dw ? ; DATA XREF: sub_1EC0+20r sub_2160+12w ... +word_F84C dw ? ; DATA XREF: sub_2160+15w sub_21C2+24r ... +word_F84E dw ? ; DATA XREF: sub_1EAA+7w sub_1EC0+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_10050 dd ? ; DATA XREF: sub_A1C7+32r sub_A1C7+41r ... +dword_10054 dd ? ; DATA XREF: sub_A36B+69r sub_A45B+59r ... +dword_10058 dd ? ; DATA XREF: sub_A36B+81r sub_A45B+70r ... +dword_1005C dd ? ; DATA XREF: sub_A36B+99r sub_A45B+87r ... +byte_10060 db ? ; DATA XREF: sub_C80C+Bw seg002:0054w ... +byte_10061 db ? ; DATA XREF: _main+1Bw + ; sub_C80C:loc_C81Er ... +byte_10062 db ? ; DATA XREF: seg002:004Aw +byte_10063 db ? ; DATA XREF: seg002:0059w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_100F2 dw ? ; DATA XREF: sub_2856+7Bw sub_2912+21r ... +word_100F4 dw ? ; DATA XREF: sub_2856+81w seg000:297Ar +word_100F6 dw ? ; DATA XREF: sub_2856+47w sub_2856+58r ... +word_100F8 dw ? ; DATA XREF: sub_CB68+2w sub_CB68+E1w ... +word_100FA dw ? ; DATA XREF: sub_CB68+5w sub_CB68+34w ... +word_100FC dw ? ; DATA XREF: sub_978D+E0r + ; sub_9A2C+210w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_102FE dd ? ; DATA XREF: sub_990C+FEr sub_9A2C+2Ar ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_10316 db ? ; ; DATA XREF: sub_990C+FBo sub_9A2C+27o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_105C6 dd ? ; DATA XREF: sub_A12E+29w sub_A12E+30r ... +dword_105CA dd ? ; DATA XREF: sub_A36B+1Aw sub_A36B+5Fr ... +byte_105CE db ? ; DATA XREF: sub_A5FC+23r sub_A64D+66r ... + db ? +word_105D0 dw ? ; DATA XREF: sub_A5FC+3w sub_A5FC+8r ... +word_105D2 dw ? ; DATA XREF: sub_A5FC+10w sub_A5FC+1Br ... +word_105D4 dw ? ; DATA XREF: sub_A64D+1F0w + ; sub_AC6E+19w ... +byte_105D6 db ? ; DATA XREF: sub_A64D+ADw + ; sub_A64D+31Dr ... +byte_105D7 db ? ; DATA XREF: sub_A64D:loc_A71Fw + ; sub_A64D:loc_A727w ... +word_105D8 dw ? ; DATA XREF: sub_A50A+3Br sub_A5D3+1Fr ... +dword_105DA dd ? ; DATA XREF: sub_95F3+26w sub_9624+2Ar ... +word_105DE dw ? ; DATA XREF: sub_AE64+1Br sub_AE8E+41o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_10630 db ? ; DATA XREF: sub_ADE5+65w sub_AEF0+35w +byte_10631 db ? ; DATA XREF: sub_AEF0+20w + db ? ; + db ? ; + db ? ; + db ? ; +byte_10636 db ? ; DATA XREF: sub_ADE5+46w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_106AA db ? ; DATA XREF: sub_ADA9+1Cr sub_ADA9+2Er ... +byte_106AB db ? ; DATA XREF: sub_ADA9+12r sub_ADA9+31r ... +word_106AC dw ? ; DATA XREF: sub_B2EF+Cr sub_B2EF+1Cr ... + dw ? +byte_106B0 db ? ; DATA XREF: sub_BB80:loc_BC1Ar + ; sub_BC29:loc_BC63r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_10BB2 dw ? ; DATA XREF: sub_BB80+1Ar sub_BCA5+Ar ... +byte_10BB4 db ? ; DATA XREF: sub_BCD5+39r sub_BCD5+3Fr ... +byte_10BB5 db ? ; DATA XREF: sub_BCD5+1Aw sub_BD21+3Dr ... +byte_10BB6 db ? ; DATA XREF: sub_BCD5+Cr sub_BCD5+24w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_10BBC dw ? ; DATA XREF: sub_BDF4+44r sub_BFB2+7r ... +word_10BBE dw ? ; DATA XREF: sub_BDF4+Er + ; sub_BDF4:loc_BE66r ... +word_10BC0 dw ? ; DATA XREF: sub_BDF4+37r sub_BDF4+5Br ... +word_10BC2 dw ? ; DATA XREF: sub_C097+51r sub_C097+88r ... +word_10BC4 dw ? ; DATA XREF: sub_BFB2+3Br sub_BFB2+52r ... +byte_10BC6 db ? ; DATA XREF: sub_BDF4+97r sub_BDF4+A4r ... +byte_10BC7 db ? ; DATA XREF: sub_BD21+36r sub_BDF4+AEw ... +word_10BC8 dw ? ; DATA XREF: sub_C097+39w sub_C1FD+34w +word_10BCA dw ? ; DATA XREF: sub_C097+3Cw sub_C1FD+37w +byte_10BCC db ? ; DATA XREF: sub_C288+97r sub_C40D+4Dw + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_10BD2 db ? ; DATA XREF: sub_C40D:loc_C48Br + ; sub_C40D:loc_C49Er +byte_10BD3 db ? ; DATA XREF: sub_C40D+6Dr + ; sub_C40D:loc_C4B1r +byte_10BD4 db ? ; DATA XREF: sub_C40D:loc_C4C0r + db ? +byte_10BD6 db ? ; DATA XREF: sub_C288+2Ar sub_C40D+63w +byte_10BD7 db ? ; DATA XREF: sub_C288+Er sub_C40D+5Cw +byte_10BD8 db ? ; DATA XREF: sub_C288+CBr + ; sub_C288:loc_C38Dr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_10C5A dw ? ; DATA XREF: seg000:416Dw +word_10C5C dw ? ; DATA XREF: seg000:4167w + db ? ; + db ? ; + db ? ; + db ? ; +word_10C62 dw ? ; DATA XREF: seg000:410Dr seg000:41DAw ... +word_10C64 dw ? ; DATA XREF: seg000:4109r seg000:41D6w ... +dword_10C66 dd ? ; DATA XREF: sub_72B3+ACw sub_72B3+C2r ... +dword_10C6A dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dw ? +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg005 segment byte stack 'STACK' use16 + assume cs:seg005 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 80h dup(?) +seg005 ends + + + end start