diff --git a/th02_op.asm b/th02_op.asm new file mode 100644 index 00000000..b4b85209 --- /dev/null +++ b/th02_op.asm @@ -0,0 +1,36412 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 9FB2839DB50F38119D0B98D4FB70CD0E + +; File Name : th02/OP.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-F9F0h Loaded length: E8F8h +; 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:seg009, 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_D6AC, ax + mov segx, es + mov word_D6A6, bx + mov word_D6BE, bp + call sub_178 + mov ax, word_D6A6 + 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_D6A4, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_D6A8, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_E4BE + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_E4BE, 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_3328 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_D6B6, bx + mov word_D6BA, 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_E4BE, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 12C8h + mov cx, 2340h + sub cx, di + cld + rep stosb + cmp word_E420, 14h + jbe short loc_110 + cmp byte ptr word_D6AC, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_D6AC+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_E420 + 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_D6BE, 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_3328 +; --------------------------------------------------------------------------- + +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, 12A4h + mov di, 12C2h + call sub_1E8 + push word_D6A2 + push envp ; _envp + push word_D69E + push argv ; _argv + push argc ; _argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_35BD+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 12C2h + mov di, 12C8h + 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_35BD+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_35BD+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: sub_B0B0+18r + mov word ptr dword_D68A, bx + +loc_182: ; DATA XREF: sub_B058+4r + mov word ptr dword_D68A+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_D68E, bx + mov word ptr dword_D68E+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_D692, bx + mov word ptr dword_D692+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_D696, bx + mov word ptr dword_D696+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_35BD+2Fp + push ds + mov ax, 2500h + lds dx, dword_D68A + 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_D68E + 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_D692 + 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_D696 + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + retf +__restorezero endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1E8 proc near ; CODE XREF: start+124p sub_1E8+3Aj ... + mov ax, 100h + mov dx, di + mov bx, si + +loc_1EF: ; CODE XREF: sub_1E8+22j + cmp bx, di + jz short loc_20C + cmp byte ptr es:[bx], 0FFh + jz short loc_207 + mov cl, es:[bx+1] + xor ch, ch + cmp cx, ax + jnb short loc_207 + mov ax, cx + mov dx, bx + +loc_207: ; CODE XREF: sub_1E8+Fj sub_1E8+19j + add bx, 6 + jmp short loc_1EF +; --------------------------------------------------------------------------- + +loc_20C: ; CODE XREF: sub_1E8+9j + cmp dx, di + jz short locret_22B + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_224 + call dword ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +loc_224: ; CODE XREF: sub_1E8+33j + call word ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +locret_22B: ; CODE XREF: sub_1E8+26j + retn +sub_1E8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22C proc near ; CODE XREF: start+153p sub_22C+37j ... + mov ah, 0 + mov dx, di + mov bx, si + +loc_232: ; CODE XREF: sub_22C+1Fj + cmp bx, di + jz short loc_24D + cmp byte ptr es:[bx], 0FFh + jz short loc_248 + cmp es:[bx+1], ah + jb short loc_248 + mov ah, es:[bx+1] + mov dx, bx + +loc_248: ; CODE XREF: sub_22C+Ej sub_22C+14j + add bx, 6 + jmp short loc_232 +; --------------------------------------------------------------------------- + +loc_24D: ; CODE XREF: sub_22C+8j + cmp dx, di + jz short locret_26C + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_265 + call dword ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +loc_265: ; CODE XREF: sub_22C+30j + call word ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +locret_26C: ; CODE XREF: sub_22C+23j + retn +sub_22C endp + +; --------------------------------------------------------------------------- +DGROUP@ dw 0 ; DATA XREF: start+3w start+B0r ... +__MMODEL dw 0c004h + db 0 +; --------------------------------------------------------------------------- + +loc_272: + push ds + mov ds, word ptr cs:035fh + push cs + call near ptr sub_23E4 + mov ax, 0fff3h + +loc_27F: ; CODE XREF: seg000:02D9j seg000:02E1j + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_286: ; CODE XREF: sub_2ACA+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_23FA + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_23FA + 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, 36h, 26h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 59h, 20h, 0Eh, 0E8h, 55h, 20h, 8Bh + db 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h, 1Eh + db 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 3Fh, 20h, 0Eh + db 0E8h, 3Bh, 20h, 0B8h, 2 dup(0), 0F8h, 5Eh, 5Fh, 1Fh + db 5Dh, 0CAh, 8, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_FFC+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_FFC+31p sub_2ACA+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, 1F2h + 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_2ACA+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_23FA + 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_12E6+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_23E4 + +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_1E14+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_289A + pop bp + retf 2 +sub_472 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_48A proc far ; CODE XREF: sub_506+29p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_D630 + mov cx, off_D636 + 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_D632, ax + mov off_D634, 1 + mov al, byte ptr off_D638 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_D632, 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_2ACA+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, 12F8h + 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 + +loc_4FF: ; DATA XREF: sub_1BBA+4w sub_1BC6+4w + 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_1E8C+3Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + cmp word ptr es:2, 0 + jz short loc_52D + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + push es + push cs + call near ptr sub_48A + pop bp + retf 2 +sub_506 endp + +; --------------------------------------------------------------------------- + +loc_536: ; CODE XREF: sub_BBC0+15DP + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D876, 0 + nop + push cs + call near ptr sub_268C + +loc_549: ; CODE XREF: seg000:0567j + nop + push cs +; --------------------------------------------------------------------------- + db 0E8h, 0BCh +byte_54D db 17h ; DATA XREF: sub_1208+1Fr +; --------------------------------------------------------------------------- + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: seg000:055Bj + nop + push cs + call near ptr sub_268C + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: seg000:0553j + add word_D876, 6 + cmp word_D876, 64h ; 'd' + jl short loc_549 + mov word_D876, 64h ; 'd' + nop + push cs + call loc_1D0A + pop di + pop si + retf 2 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_57A proc far ; CODE XREF: sub_BD24+2C8P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D876, 64h ; 'd' + nop + push cs + call near ptr sub_268C + +loc_58D: ; CODE XREF: sub_57A+2Cj + nop + push cs + call loc_1D0A + mov di, si + cmp di, 0 + jle short loc_5A1 + +loc_599: ; CODE XREF: sub_57A+25j + nop + push cs + call near ptr sub_268C + dec di + jnz short loc_599 + +loc_5A1: ; CODE XREF: sub_57A+1Dj + sub word_D876, 6 + jg short loc_58D + mov word_D876, 0 + nop + push cs + call loc_1D0A + pop di + pop si + retf 2 +sub_57A endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov word_DBB2, 6 + mov ax, word_D8AE + add ax, 9 + push ax + push cs + call near ptr sub_2796 + jb short loc_5F4 + mov es, ax + push word ptr [bp+8] + push word ptr [bp+6] + push cs + call near ptr sub_A0E + jb short loc_5FB + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_D8AE + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5F4: ; CODE XREF: seg000:05CCj + mov byte_D8B0, 3 + jmp short loc_605 +; --------------------------------------------------------------------------- + +loc_5FB: ; CODE XREF: seg000:05DAj + push es + push cs + call near ptr sub_289A + mov byte_D8B0, 1 + +loc_605: ; CODE XREF: seg000:05F9j + xor ax, ax + pop bp + retf 4 +; --------------------------------------------------------------------------- + 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:1F40p + +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_7C4+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 ======================================= + +; Attributes: bp-based frame + +sub_6C6 proc far ; CODE XREF: sub_2596+34p sub_2596+5Bp ... + +arg_0 = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + push ds + push bx + push es + mov al, [bp+arg_4] + lds dx, [bp+arg_0] + mov ah, 35h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov ah, 25h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + mov ax, bx + mov dx, es + pop es + pop bx + pop ds + pop bp + retf 6 +sub_6C6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6E6 proc far ; CODE XREF: sub_71C+1p + 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_6E6 endp + +; --------------------------------------------------------------------------- + nop + +loc_6FC: ; CODE XREF: sub_71C+27p + 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 +; --------------------------------------------------------------------------- + db 0E6h +byte_711 db 6Ah ; DATA XREF: sub_12E6:loc_132Br + ; seg000:2450r +byte_712 db 0B0h ; DATA XREF: seg000:2446r sub_2490+9r + db 0 +; --------------------------------------------------------------------------- + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_71C proc far ; CODE XREF: sub_AFB0+52P sub_B019+37P + push cs + call near ptr sub_6E6 + 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 loc_6FC + retf +sub_71C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_748 proc far ; CODE XREF: sub_7B4+1p sub_910+1p + mov bx, word_D85C + cmp bx, 0FFFFh + jz short locret_7B2 + mov ax, word_E920 + cmp word_E922, ax + jnb short loc_786 + push ds + mov cx, word_E920 + lds dx, dword_E918 + 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_779 + add word_E91C, ax + adc word_E91E, 0 + cmp word_E920, ax + jz short loc_77F + +loc_779: ; CODE XREF: sub_748+20j + mov word_E926, 1 + +loc_77F: ; CODE XREF: sub_748+2Fj + mov word_E920, 0 + retf +; --------------------------------------------------------------------------- + +loc_786: ; CODE XREF: sub_748+10j + cmp word_E922, 0 + jz short locret_7B2 + mov dx, ax + mov cx, 0 + add dx, word_E91C + mov word_E922, cx + mov word_E920, cx + adc cx, word_E91E + mov ax, 4200h + mov bx, word_D85C + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_E91C, ax + mov word_E91E, dx + +locret_7B2: ; CODE XREF: sub_748+7j sub_748+43j + retf +sub_748 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_7B4 proc far ; CODE XREF: sub_9BF0+78P sub_9CA2+61P ... + push cs + call near ptr sub_748 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_D85C, 0FFFFh + retf +sub_7B4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7C4 proc far ; CODE XREF: sub_9CA2+39P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_D85C + cmp bx, 0FFFFh + jnz short loc_800 + 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_D85C, ax + xor ax, ax + mov word_E922, ax + mov word_E920, ax + mov word_E924, ax + mov word_E926, ax + mov word_E91C, ax + mov word_E91E, ax + mov ax, dx + inc ax + +loc_800: ; CODE XREF: sub_7C4+Dj + pop bp + retf 4 +sub_7C4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_804 proc far ; CODE XREF: sub_9BF0+12P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_A0E + jb short loc_81A + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_81A: ; CODE XREF: sub_804+Fj + sbb ax, ax + inc ax + retf 4 +sub_804 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_820 proc far ; CODE XREF: sub_9BF0+30P sub_B3B1+2AP ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_D85A, 0 + jz short loc_8A4 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_832: ; CODE XREF: sub_820+7Fj + mov ax, word_E922 + cmp word_E920, ax + jb short loc_868 + add word_E91C, ax + adc word_E91E, 0 + push bx + push ds + mov cx, word_D85A + mov bx, word_D85C + lds dx, dword_E918 + 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_E922, ax + jz short loc_8C3 + mov word_E920, 0 + +loc_868: ; CODE XREF: sub_820+19j + mov si, word_E922 + sub si, word_E920 + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_899 + or si, si + jz short loc_899 + push si + push ds + mov cx, si + mov ax, word_E920 + lds si, dword_E918 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_899: ; CODE XREF: sub_820+5Cj sub_820+60j + add word_E920, si + sub bx, si + jnz short loc_832 + jmp short loc_8C9 +; --------------------------------------------------------------------------- + nop + +loc_8A4: ; CODE XREF: sub_820+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_D85C + 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_E91C, ax + adc word_E91E, 0 + mov bx, cx + sub bx, ax + jz short loc_8C9 + +loc_8C3: ; CODE XREF: sub_820+40j + mov word_E924, 1 + +loc_8C9: ; CODE XREF: sub_820+81j sub_820+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_820 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_8D4 proc far ; CODE XREF: sub_9BF0+24P sub_B3B1+CP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_D85C + cmp bx, 0FFFFh + jnz short loc_90B + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_A0E + sbb bx, bx + or ax, bx + mov word_D85C, ax + xor ax, ax + mov word_E922, ax + mov word_E91C, ax + mov word_E91E, ax + mov word_E920, ax + mov word_E924, ax + mov word_E926, ax + lea ax, [bx+1] + +loc_90B: ; CODE XREF: sub_8D4+Cj + pop bp + retf 4 +sub_8D4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_910 proc far ; CODE XREF: sub_B3B1+1EP sub_C55C+19P + push cs + call near ptr sub_748 + cmp bx, 0FFFFh + jz short locret_941 + 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_E924, 0 + mov word_E91C, ax + mov word_E91E, dx + +locret_941: ; CODE XREF: sub_910+7j + retf 6 +sub_910 endp + +; --------------------------------------------------------------------------- + mov ax, word_E920 + xor dx, dx + add ax, word_E91C + adc dx, word_E91E + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_952 proc far ; CODE XREF: sub_9CA2+45P sub_9CA2+50P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_D85A, 0 + jz short loc_9C8 + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_964: ; CODE XREF: sub_952+6Ej + mov cx, word_D85A + sub cx, word_E920 + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_E918 + add di, word_E920 + sub bx, cx + add word_E920, 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_9BE + push ds + push bx + mov cx, word_D85A + mov bx, word_D85C + lds dx, dword_E918 + 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_9DA + cmp word_D85A, ax + jnz short loc_9DA + mov word_E920, 0 + add word_E91C, ax + adc word_E91E, 0 + +loc_9BE: ; CODE XREF: sub_952+3Fj + or bx, bx + jnz short loc_964 + mov ax, 1 + jmp short loc_9F0 +; --------------------------------------------------------------------------- + nop + +loc_9C8: ; CODE XREF: sub_952+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_D85C + 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_9E2 + +loc_9DA: ; CODE XREF: sub_952+55j sub_952+5Bj + mov word_E926, 1 + xor ax, ax + +loc_9E2: ; CODE XREF: sub_952+86j + add word_E91C, ax + adc word_E91E, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_9F0: ; CODE XREF: sub_952+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_952 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_9F8 proc far ; CODE XREF: sub_2ACA+68p sub_2ACA+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_A0A + mov ax, 0FFF3h + +locret_A0A: ; CODE XREF: sub_9F8+Dj + retf 2 +sub_9F8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_A0E proc far ; CODE XREF: seg000:05D7p sub_804+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_D85E + 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_A22 + retf 4 +; --------------------------------------------------------------------------- + +loc_A22: ; CODE XREF: sub_A0E+Fj + mov ax, 0FFFEh + retf 4 +sub_A0E endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_A2E + +loc_A28: ; CODE XREF: sub_A2E+1Fj sub_A2E+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_A2E + +; =============== S U B R O U T I N E ======================================= + + +sub_A2E proc far ; CODE XREF: sub_EAA-9p sub_EAA+61p + +; FUNCTION CHUNK AT 0A28 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_A43 + xchg bx, si + +loc_A43: ; CODE XREF: sub_A2E+11j + mov bp, word_D828 + mov dx, word_D82A + sub si, bp + jl short loc_A28 + 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_A28 + add bx, bp + cmp ax, di + jle short loc_A6C + xchg ax, di + +loc_A6C: ; CODE XREF: sub_A2E+3Bj + mov dx, word_D82E + mov bp, word_D830 + sub di, dx + js short loc_A28 + 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_A28 + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_D834 + 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+208h] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+20Ah] + sar si, 4 + js short loc_AEA + lea bp, [si+2Ah] + shl bp, 1 + +loc_AD2: ; CODE XREF: sub_A2E+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_AD2 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_AEA: ; CODE XREF: sub_A2E+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_AF2: ; CODE XREF: sub_A2E+C7j + stosw + sub di, bp + jnb short loc_AF2 + pop di + pop si + pop bp + retf 8 +sub_A2E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AFE proc far ; CODE XREF: sub_B77E+52P sub_B77E+E8P + +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 + mov ax, [bp+arg_6] + mov bx, [bp+arg_2] + test ax, bx + js short loc_B8A + cmp ax, bx + jl short loc_B10 + xchg ax, bx + +loc_B10: ; CODE XREF: sub_AFE+Fj + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_D870 + shl cx, 3 + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_B8A + mov word_D828, ax + mov word_D82A, bx + add ax, bx + mov word_D82C, ax + mov ax, [bp+arg_4] + mov bx, [bp+arg_0] + test ax, bx + js short loc_B8A + cmp ax, bx + jl short loc_B46 + xchg ax, bx + +loc_B46: ; CODE XREF: sub_AFE+45j + cmp ax, 8000h + sbb dx, dx + and ax, dx + mov cx, word_D86E + dec cx + sub bx, cx + sbb dx, dx + and bx, dx + add bx, cx + sub bx, ax + jl short loc_B8A + mov word_D82E, ax + mov cx, ax + mov word_D830, bx + add ax, bx + mov word_D832, ax + mov ax, word_D870 + xchg ax, bx + mul bx + mov word_D836, ax + mov ax, bx + shr ax, 4 + mul cx + add ax, word_D86A + mov word_D834, ax + mov ax, 1 + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_B8A: ; CODE XREF: sub_AFE+Bj sub_AFE+2Bj ... + xor ax, ax + pop bp + retf 8 +sub_AFE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B90 proc far ; CODE XREF: sub_B6BB+10P sub_B77E+61P + push bp + push si + push di + mov ax, word_D834 + mov es, ax + mov bx, word_D828 + mov di, bx + shr di, 4 + shl di, 1 + add di, word_D836 + and bx, 0Fh + lea si, [bx-10h] + shl bx, 1 + mov dx, [bx+208h] + not dx + add si, word_D82A + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+20Ah] + sar si, 4 + js short loc_BE4 + lea bp, [si+2Ah] + shl bp, 1 + +loc_BCE: ; CODE XREF: sub_B90+4Dj + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_BCE + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + nop + +loc_BE4: ; CODE XREF: sub_B90+37j + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_BEC: ; CODE XREF: sub_B90+5Fj + stosw + sub di, bp + jnb short loc_BEC + pop di + pop si + pop bp + retf +sub_B90 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF6 proc far ; CODE XREF: sub_EAA+80p sub_EAA+96p ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov dx, [bp+arg_0] + sub dx, word_D82E + cmp dx, word_D830 + ja short loc_C76 + mov cx, [bp+arg_4] + mov bx, [bp+arg_2] + mov bp, dx + shl bp, 2 + add bp, dx + shl bp, 4 + mov ax, word_D828 + sub cx, ax + sub bx, ax + test cx, bx + js short loc_C76 + cmp cx, bx + jg short loc_C28 + xchg cx, bx + +loc_C28: ; CODE XREF: sub_BF6+2Ej + cmp bx, 8000h + sbb dx, dx + and bx, dx + mov di, word_D82A + sub cx, di + sbb dx, dx + and cx, dx + add cx, di + sub cx, bx + jl short loc_C76 + mov es, word_D834 + add bx, ax + mov di, bx + shr di, 4 + shl di, 1 + add di, bp + and bx, 0Fh + add cx, bx + sub cx, 10h + shl bx, 1 + mov ax, [bx+208h] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_C71 + stosw + mov ax, 0FFFFh + rep stosw + +loc_C71: ; CODE XREF: sub_BF6+73j + and ax, [bx+20Ah] + stosw + +loc_C76: ; CODE XREF: sub_BF6+Fj sub_BF6+2Aj ... + pop di + pop bp + retf 6 +sub_BF6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7C proc far ; CODE XREF: sub_C1B2+1E9P + +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 = dword ptr 8 + + push bp + mov bp, sp + sub sp, 0Ch + push di + push si + mov ax, [bp+arg_0] + dec ax + mov cx, ax + shl ax, 2 + mov [bp+arg_0], ax + les si, [bp+arg_2] + xor ax, ax + mov [bp+var_8], ax + mov [bp+var_A], ax + mov ax, es:[si+2] + mov [bp+var_4], ax + mov [bp+var_C], ax + mov ax, es:[si] + mov di, ax + mov bx, 4 + +loc_CAD: ; CODE XREF: sub_C7C+73j + mov dx, es:[bx+si+2] + cmp dx, [bp+var_4] + jge short loc_CC2 + mov [bp+var_8], bx + mov [bp+var_A], bx + mov [bp+var_4], dx + jmp short loc_CD4 +; --------------------------------------------------------------------------- + nop + +loc_CC2: ; CODE XREF: sub_C7C+38j + cmp [bp+var_4], dx + jnz short loc_CCC + mov [bp+var_A], bx + jmp short loc_CD4 +; --------------------------------------------------------------------------- + +loc_CCC: ; CODE XREF: sub_C7C+49j + cmp [bp+var_C], dx + jge short loc_CD4 + mov [bp+var_C], dx + +loc_CD4: ; CODE XREF: sub_C7C+43j sub_C7C+4Ej ... + mov dx, es:[bx+si] + cmp ax, dx + jl short loc_CE6 + mov ax, dx + jmp short loc_CEC +; --------------------------------------------------------------------------- + nop + +loc_CE0: ; CODE XREF: sub_C7C+79j sub_C7C+7Fj ... + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + +loc_CE6: ; CODE XREF: sub_C7C+5Dj + cmp di, dx + jge short loc_CEC + mov di, dx + +loc_CEC: ; CODE XREF: sub_C7C+61j sub_C7C+6Cj + add bx, 4 + loop loc_CAD + cmp word_D82C, ax + jl short loc_CE0 + cmp word_D828, di + jg short loc_CE0 + mov ax, [bp+var_4] + cmp word_D832, ax + jl short loc_CE0 + mov dx, [bp+var_C] + cmp word_D82E, dx + jg short loc_CE0 + mov ax, word_D832 + cmp ax, dx + jge short loc_D18 + mov dx, ax + +loc_D18: ; CODE XREF: sub_C7C+98j + mov [bp+var_C], dx + mov ax, [bp+arg_0] + cmp [bp+var_8], 0 + jnz short loc_D31 + cmp [bp+var_A], ax + jnz short loc_D31 + mov [bp+var_8], ax + mov [bp+var_A], 0 + +loc_D31: ; CODE XREF: sub_C7C+A6j sub_C7C+ABj + mov bx, [bp+var_8] + mov dx, [bp+arg_0] + mov ax, word_D82E + +loc_D3A: ; CODE XREF: sub_C7C+CBj + mov cx, bx + sub bx, 4 + jns short loc_D43 + mov bx, dx + +loc_D43: ; CODE XREF: sub_C7C+C3j + cmp es:[bx+si+2], ax + jl short loc_D3A + mov ax, es:[bx+si+2] + mov [bp+var_6], ax + mov [bp+var_8], bx + mov bx, cx + mov dx, es:[bx+si+2] + mov di, es:[bx+si] + mov bx, [bp+var_8] + cmp dx, word_D82E + jge short loc_D81 + mov ax, dx + sub ax, [bp+var_6] + push ax + mov ax, di + sub ax, es:[bx+si] + mov cx, word_D82E + sub cx, dx + imul cx + pop cx + idiv cx + add di, ax + mov dx, word_D82E + +loc_D81: ; CODE XREF: sub_C7C+E7j + mov [bp+var_4], dx + xchg di, dx + mov ax, es:[bx+si] + mov cx, [bp+var_6] + sub cx, di + mov bx, 12D4h + call sub_1CA0 + mov bx, [bp+var_A] + mov cx, [bp+arg_0] + mov ax, word_D82E + +loc_D9D: ; CODE XREF: sub_C7C+130j + mov di, bx + add bx, 4 + cmp bx, cx + jle short loc_DA8 + xor bx, bx + +loc_DA8: ; CODE XREF: sub_C7C+128j + cmp es:[bx+si+2], ax + jl short loc_D9D + mov ax, es:[bx+si+2] + mov [bp+var_2], ax + mov [bp+var_A], bx + add di, si + mov cx, es:[di+2] + mov di, es:[di] + mov bx, es:[bx+si] + cmp cx, [bp+var_4] + jge short loc_DDD + mov ax, word_D82E + sub ax, cx + push cx + mov cx, di + sub cx, bx + imul cx + pop cx + sub cx, [bp+var_2] + idiv cx + add di, ax + +loc_DDD: ; CODE XREF: sub_C7C+14Bj + mov dx, di + mov ax, bx + mov cx, [bp+var_2] + sub cx, [bp+var_4] + mov bx, 12DCh + call sub_1CA0 + mov si, [bp+var_4] + +loc_DF0: ; CODE XREF: sub_C7C+1CEj + mov di, [bp+var_6] + cmp di, [bp+var_2] + jle short loc_DFB + mov di, [bp+var_2] + +loc_DFB: ; CODE XREF: sub_C7C+17Aj + cmp [bp+var_C], di + jle short loc_E74 + push di + lea dx, [di-1] + sub dx, si + sub si, word_D82E + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov es, word_D834 + call loc_1BD2 + pop si + les di, [bp+arg_2] + cmp si, [bp+var_6] + jnz short loc_E47 + mov bx, [bp+var_8] + mov dx, es:[bx+di] + sub bx, 4 + jns short loc_E32 + mov bx, [bp+arg_0] + +loc_E32: ; CODE XREF: sub_C7C+1B1j + mov [bp+var_8], bx + mov ax, es:[bx+di] + mov cx, es:[bx+di+2] + mov [bp+var_6], cx + sub cx, si + mov bx, 12D4h + call sub_1CA0 + +loc_E47: ; CODE XREF: sub_C7C+1A6j + cmp [bp+var_2], si + jnz short loc_DF0 + mov bx, [bp+var_A] + mov dx, es:[bx+di] + add bx, 4 + cmp bx, [bp+arg_0] + jle short loc_E5C + xor bx, bx + +loc_E5C: ; CODE XREF: sub_C7C+1DCj + mov [bp+var_A], bx + mov ax, es:[bx+di] + mov cx, es:[bx+di+2] + mov [bp+var_2], cx + sub cx, si + mov bx, 12DCh + push 0DF0h + jmp sub_1CA0 +; --------------------------------------------------------------------------- + +loc_E74: ; CODE XREF: sub_C7C+182j + mov es, word_D834 + mov dx, [bp+var_C] + sub dx, si + sub si, word_D82E + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + call loc_1BD2 + pop si + pop di + leave + retf 6 +sub_C7C endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_EAA + +loc_E94: ; CODE XREF: sub_EAA+41j + push word ptr [bp+0Eh] + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+08h] + push cs + call near ptr sub_A2E + pop di + pop si + leave + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_EAA + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_EAA proc far ; CODE XREF: sub_BA20+49P sub_BA20+65P ... + +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 + +; FUNCTION CHUNK AT 0E94 SIZE 00000016 BYTES + + enter 2, 0 + push si + push di + mov ax, [bp+arg_0] + mov bx, [bp+arg_8] + mov si, [bp+arg_4] + cmp bx, si + jle short loc_EC5 + xchg bx, si + mov [bp+arg_8], bx + mov [bp+arg_4], si + +loc_EC5: ; CODE XREF: sub_EAA+11j + sub si, bx + shr si, 1 + sub ax, si + sbb dx, dx + and ax, dx + add ax, si + mov cx, [bp+arg_6] + mov di, [bp+arg_2] + cmp cx, di + jle short loc_EDD + xchg cx, di + +loc_EDD: ; CODE XREF: sub_EAA+2Fj + mov bx, di + sub di, cx + shr di, 1 + sub ax, di + sbb dx, dx + and ax, dx + add ax, di + jz short loc_E94 + mov [bp+var_2], ax + add cx, ax + sub bx, ax + mov [bp+arg_6], cx + mov [bp+arg_2], bx + mov si, ax + inc cx + dec bx + cmp bx, cx + jl short loc_F0E + push [bp+arg_8] + push cx + push [bp+arg_4] + push bx + push cs + call near ptr sub_A2E + +loc_F0E: ; CODE XREF: sub_EAA+56j + add [bp+arg_8], si + sub [bp+arg_4], si + mov di, 0 + +loc_F17: ; CODE XREF: sub_EAA+DAj + mov ax, [bp+arg_8] + sub ax, si + push ax + mov ax, [bp+arg_4] + add ax, si + push ax + mov ax, [bp+arg_6] + sub ax, di + push ax + push cs + call near ptr sub_BF6 + mov ax, [bp+arg_8] + sub ax, si + push ax + mov ax, [bp+arg_4] + add ax, si + push ax + mov ax, [bp+arg_2] + add ax, di + push ax + push cs + call near ptr sub_BF6 + mov ax, di + stc + rcl ax, 1 + sub [bp+var_2], ax + jns short loc_F81 + mov ax, [bp+arg_8] + sub ax, di + push ax + mov ax, [bp+arg_4] + add ax, di + push ax + mov ax, [bp+arg_6] + sub ax, si + push ax + push cs + call near ptr sub_BF6 + mov ax, [bp+arg_8] + sub ax, di + push ax + mov ax, [bp+arg_4] + add ax, di + push ax + mov ax, [bp+arg_2] + add ax, si + push ax + push cs + call near ptr sub_BF6 + dec si + mov ax, si + shl ax, 1 + add [bp+var_2], ax + +loc_F81: ; CODE XREF: sub_EAA+A1j + inc di + cmp si, di + jnb short loc_F17 + pop di + pop si + leave + retf 0Ah +sub_EAA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_F8C proc far ; CODE XREF: sub_AB4D+27P sub_B6BB+BP ... + 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_F8C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_FB6 proc far ; CODE XREF: sub_AB4D+256P + ; sub_B6BB+15P ... + xor al, al + out 7Ch, al + retf +sub_FB6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_FBC proc far ; CODE XREF: _main:loc_A9F3P + xor ax, ax + cmp word_D860, ax + jnz short locret_FDF + mov ax, 200h + push ax + nop + push cs + call near ptr sub_27AA + or ax, ax + jz short locret_FDF + mov word_D860, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_1174 + mov ax, 1 + +locret_FDF: ; CODE XREF: sub_FBC+6j sub_FBC+13j + retf +sub_FBC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_FE0 proc far ; CODE XREF: sub_9FAF+3AP sub_A027+7AP ... + mov ax, word_D860 + test ax, ax + jz short locret_FFB + push ax + push ax + xor ax, ax + mov word_D860, ax + push ax + push cs + call near ptr sub_11E2 + nop + push cs + call near ptr sub_289A + mov ax, 1 + +locret_FFB: ; CODE XREF: sub_FE0+5j + retf +sub_FE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FFC proc far ; CODE XREF: _main+43P + +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_A0E + mov bp, ax + mov ax, 0 + jb short loc_1089 + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_23FA + mov si, ax + mov ax, 0 + jb short loc_1081 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_1077 + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_1077 + add di, 8 + push si + mov si, 232h + mov cx, 4 + repe cmpsw + pop si + jnz short loc_1077 + 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_1077 + push si + xor ax, ax + push ax + push cs + call near ptr sub_11E2 + mov ax, 1 + jmp short loc_1079 +; --------------------------------------------------------------------------- + +loc_1077: ; CODE XREF: sub_FFC+34j sub_FFC+3Fj ... + xor ax, ax + +loc_1079: ; CODE XREF: sub_FFC+79j + push ax + push si + nop + push cs + call near ptr sub_23E4 + pop ax + +loc_1081: ; CODE XREF: sub_FFC+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_1089: ; CODE XREF: sub_FFC+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_FFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1092 proc far ; CODE XREF: sub_A510+CEP + ; sub_A510+11AP ... + +arg_0 = word ptr 4 +arg_2 = byte ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + mov cx, di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_DB3A + mov es, di + mov di, [bp+arg_6] + shl di, 1 + mov ah, [bp+arg_2] + mov al, 0 + rol ax, 1 + shr ax, 1 + adc ax, 56h ; 'V' + mov bx, [bp+arg_0] + mov bp, dx + mov es:[di+2000h], bx + stosw + or ah, 80h + mov es:[di+2000h], bx + stosw + mov di, cx + retf 8 +sub_1092 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_10D6 proc far ; CODE XREF: sub_A1F5+54P + ; sub_A1F5:loc_A26FP ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_DB3A + mov es, di + mov di, [bp+arg_8] + shl di, 1 + push ds + lds si, [bp+arg_2] + mov cx, di + mov bx, [bp+arg_0] + mov bp, dx + lodsb + or al, al + jz short loc_1118 + +loc_1104: ; CODE XREF: sub_10D6+40j + mov ah, al + mov al, 0 + rol ax, 1 + shr ax, 1 + adc al, 56h ; 'V' + stosw + or ah, 80h + stosw + lodsb + or al, al + jnz short loc_1104 + +loc_1118: ; CODE XREF: sub_10D6+2Cj + xchg cx, di + sub cx, di + shr cx, 1 + mov ax, bx + add di, 2000h + rep stosw + pop ds + pop di + pop si + retf 0Ah +sub_10D6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_112C proc near ; CODE XREF: seg000:1168p sub_1174+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_1138: ; CODE XREF: sub_112C+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_1138 + retn +sub_112C 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_112C + mov al, 0Ah + out 68h, al + pop di + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1174 proc far ; CODE XREF: sub_FBC+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_1182: ; CODE XREF: sub_1174+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_112C + inc dl + jnz short loc_1182 + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_1174 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1198 proc near ; CODE XREF: sub_11BA+1Bp sub_11E2+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_11A4: ; CODE XREF: sub_1198+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_11A4 + retn +sub_1198 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11BA proc far + push ds + push si + mov dx, sp + cli + add sp, 8 + pop si + pop ds + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_1198 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +sub_11BA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11E2 proc far ; CODE XREF: sub_FE0+10p sub_FFC+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_11F1: ; CODE XREF: sub_11E2+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1198 + inc dl + jnz short loc_11F1 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_11E2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1208 proc far ; CODE XREF: sub_1B94+19p + 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_D86A, ax + mov word_D834, ax + mov word_D86C, 3E80h + xor ax, ax + mov word_D828, ax + mov word_D82E, ax + mov es, ax + assume es:seg000 + mov ah, es:byte_54D + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_D872, ax + mov ax, 27Fh + mov word_D82C, ax + mov word_D82A, ax + mov ax, 190h + mov word_D86E, ax + dec ax + mov word_D832, ax + mov word_D830, ax + mov word_D836, 7CB0h + retf +sub_1208 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1256 proc far ; CODE XREF: sub_1B94+1Dp _main+158P ... + 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_D86C + mov es, word_D86A + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_1256 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_127A proc near ; CODE XREF: sub_1290+25p sub_1290+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_127A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1290 proc far ; CODE XREF: sub_9D5C+1A2P + ; sub_A2FB+22P ... + xor dx, dx + mov cx, word_D86C + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_23FA + xchg ax, dx + jb short locret_12E2 + 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_127A + call sub_127A + mov bx, 0B000h + call sub_127A + call sub_127A + mov bx, 0B800h + call sub_127A + call sub_127A + mov bx, 0E000h + call sub_127A + call sub_127A + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_23E4 + mov ax, 1 + +locret_12E2: ; CODE XREF: sub_1290+11j + retf 2 +sub_1290 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_12E6 proc far ; CODE XREF: sub_2596+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_1339 + 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_1339 + 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_DB3E, 1 + jz short loc_1320 + 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_1320: ; CODE XREF: sub_12E6+34j + test cl, 1 + jz short loc_132B + 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_132B: ; CODE XREF: sub_12E6+3Dj + test es:byte_711, 1 + jz short loc_1337 + 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_1337: ; CODE XREF: sub_12E6+4Bj + mov ax, cx + +locret_1339: ; CODE XREF: sub_12E6+Aj sub_12E6+1Cj + retf 4 +sub_12E6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_133C proc far ; CODE XREF: sub_9D5C+163P + ; sub_9D5C+187P ... + +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_D86A + 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_139C: ; CODE XREF: sub_133C+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_139C + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop di + pop bp + retf 8 +sub_133C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_13D0 proc far ; CODE XREF: sub_9D5C+177P + ; sub_9D5C+19BP ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + push si + push di + push ds + mov es, word_D86A + mov cx, [bp+arg_A] + mov di, [bp+arg_8] + mov bx, [bp+arg_6] + lds si, [bp+arg_2] + mov dx, [bp+arg_0] + mov bp, bx + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov al, 0C0h ; 'À' + pushf + cli + out 7Ch, al + popf + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + mov al, 0Bh + out 68h, al + +loc_1418: ; CODE XREF: sub_13D0+98j + lodsb + or al, al + jz short loc_146A + mov ah, 0 + adc ax, 5680h + and ax, 0FF7Fh + mov bx, cx + and cx, 7 + shr bx, 3 + add di, bx + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov dx, 10h + xor ch, ch + +loc_143A: ; CODE XREF: sub_13D0+8Ej + mov al, ch + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, ch + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov bh, al + mov bl, 0 + shr ax, cl + shr bx, cl + xchg al, ah + stosw + mov es:[di], bl + add di, 4Eh ; 'N' + inc ch + dec dx + jnz short loc_143A + sub di, 500h + xor ch, ch + add cx, bp + jmp short loc_1418 +; --------------------------------------------------------------------------- + +loc_146A: ; CODE XREF: sub_13D0+4Bj + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ch +sub_13D0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_147A proc far ; CODE XREF: sub_9D1D+36P sub_A027+53P ... + +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_149B + push ax + nop + push cs + call near ptr sub_289A + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_149B: ; CODE XREF: sub_147A+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_14B5 + push ax + nop + push cs + call near ptr sub_289A + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_14B5: ; CODE XREF: sub_147A+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_14C2 + push ax + nop + push cs + call near ptr sub_289A + +loc_14C2: ; CODE XREF: sub_147A+40j + pop bp + retf 8 +sub_147A endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_14D2 + +loc_14C6: ; CODE XREF: sub_14D2+11j sub_14D2+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_14D2 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_14D2 proc far ; CODE XREF: sub_ADD5+20P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 14C6 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_A0E + jb short loc_14C6 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_23FA + jb short loc_14C6 + 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_151C: ; CODE XREF: sub_14D2+54j sub_14D2+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_151C + inc al + loop loc_151C + mov ax, 0FFF3h + call sub_1A7C + cmp dl, 50h ; 'P' + jnz short loc_14C6 + call sub_1A7C + cmp dl, 69h ; 'i' + jnz short loc_14C6 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_1547: ; CODE XREF: sub_14D2+7Cj + inc ax + call sub_1A7C + cmp dl, 1Ah + jnz short loc_1547 + stosw + +loc_1551: ; CODE XREF: sub_14D2+84j + call sub_1A7C + or dl, dl + jnz short loc_1551 + call sub_1A7C + mov al, dl + stosb + mov ds:410Ch, al + call sub_1A7C + mov ah, dl + call sub_1A7C + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_1576 + jmp loc_14C6 +; --------------------------------------------------------------------------- + +loc_1576: ; CODE XREF: sub_14D2+9Fj + call sub_1A7C + cmp dl, 4 + jz short loc_1581 + jmp loc_14C6 +; --------------------------------------------------------------------------- + +loc_1581: ; CODE XREF: sub_14D2+AAj + mov al, dl + stosb + call sub_1A7C + mov al, dl + call sub_1A7C + mov ah, dl + stosw + call sub_1A7C + mov al, dl + call sub_1A7C + mov ah, dl + stosw + call sub_1A7C + mov ah, dl + call sub_1A7C + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_DBB2, 0Ah + nop + push cs + call near ptr sub_26F2 + pop ds + stosw + jb short loc_15D2 + push es + push di + mov es, ax + xor di, di + +loc_15C6: ; CODE XREF: sub_14D2+FBj + call sub_1A7C + mov al, dl + stosb + dec bx + jnz short loc_15C6 + pop di + pop es + nop + +loc_15D2: ; CODE XREF: sub_14D2+ECj + call sub_1A7C + mov ah, dl + call sub_1A7C + mov al, dl + stosw + mov ds:4000h, ax + mov bx, ax + call sub_1A7C + mov ah, dl + call sub_1A7C + 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_DBB2, 0Ah + nop + push cs + call near ptr sub_26F2 + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_1620 + jmp loc_14C6 +; --------------------------------------------------------------------------- + +loc_1620: ; CODE XREF: sub_14D2+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_1652 + mov bl, 30h ; '0' + nop + +loc_1648: ; CODE XREF: sub_14D2+17Ej + call sub_1A7C + mov al, dl + stosb + dec bl + jnz short loc_1648 + +loc_1652: ; CODE XREF: sub_14D2+171j + xor bl, bl + call sub_198E + mov bl, dl + mov al, dl + shl al, 4 + call sub_198E + or al, dl + les di, ds:4004h + mov cx, ds:4000h + rep stosb + mov cl, 0FFh + nop + +loc_1670: ; CODE XREF: sub_14D2+490j + ; sub_14D2+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_169C + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1690 + call sub_1AA8 + +loc_1690: ; CODE XREF: sub_14D2+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_169C: ; CODE XREF: sub_14D2+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_16EA + push cx + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_16DC + mov si, ds:4110h + cmp si, 4000h + jnz short loc_16D2 + call sub_1AA8 + +loc_16D2: ; CODE XREF: sub_14D2+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_16DC: ; CODE XREF: sub_14D2+1F1j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + adc bl, 0 + pop cx + +loc_16EA: ; CODE XREF: sub_14D2+1E2j + cmp bl, cl + jnz short loc_175E + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_1704 + 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_1704: ; CODE XREF: sub_14D2+223j + and bl, 0Fh + nop + +loc_1708: ; CODE XREF: sub_14D2+284j + call sub_198E + mov bl, dl + mov al, dl + shl al, 4 + call sub_198E + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_1726 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1726: ; CODE XREF: sub_14D2+24Aj + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_174C + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1742 + call sub_1AA8 + nop + +loc_1742: ; CODE XREF: sub_14D2+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_174C: ; CODE XREF: sub_14D2+260j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + jb short loc_1708 + mov cl, 0FFh + jmp loc_195C +; --------------------------------------------------------------------------- + nop + +loc_175E: ; CODE XREF: sub_14D2+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, ds:4112h + mov cl, ds:4113h + nop + +loc_176E: ; CODE XREF: sub_14D2+2BCj + inc bh + dec cl + jns short loc_178C + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1782 + call sub_1AA8 + nop + +loc_1782: ; CODE XREF: sub_14D2+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_178C: ; CODE XREF: sub_14D2+2A0j + shl dl, 1 + jb short loc_176E + mov ds:4112h, dl + mov ds:4113h, cl + mov dh, 0 + dec bh + jnz short loc_17A1 + jmp loc_1838 +; --------------------------------------------------------------------------- + +loc_17A1: ; CODE XREF: sub_14D2+2CAj + cmp bh, 8 + jl short loc_17E6 + mov cx, bp + +loc_17A8: ; CODE XREF: sub_14D2+30Fj + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_17B6 + call sub_1AA8 + +loc_17B6: ; CODE XREF: sub_14D2+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_17A8 + mov bp, cx + nop + +loc_17E6: ; CODE XREF: sub_14D2+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_1812 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1806 + call sub_1AA8 + +loc_1806: ; CODE XREF: sub_14D2+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1812: ; CODE XREF: sub_14D2+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_1838: ; CODE XREF: sub_14D2+2CCj + mov cx, ax + test bl, bl + jnz short loc_1841 + jmp loc_18DE +; --------------------------------------------------------------------------- + +loc_1841: ; CODE XREF: sub_14D2+36Aj + mov bh, 0 + mov ax, ds:4000h + cmp bl, 1 + jz short loc_1860 + cmp bl, 2 + jnz short loc_1856 + shl ax, 1 + adc bh, bh + jmp short loc_1860 +; --------------------------------------------------------------------------- + +loc_1856: ; CODE XREF: sub_14D2+37Cj + dec ax + cmp bl, 3 + jz short loc_1860 + add ax, 2 + nop + +loc_1860: ; CODE XREF: sub_14D2+377j + ; sub_14D2+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_1874 + sub dx, 1000h + nop + +loc_1874: ; CODE XREF: sub_14D2+39Bj + mov ds, dx + or bh, bh + jnz short loc_18B6 + mov ax, cx + +loc_187C: ; CODE XREF: sub_14D2+3DEj + mov cx, si + cmp si, di + ja short loc_1884 + mov cx, di + +loc_1884: ; CODE XREF: sub_14D2+3AEj + neg cx + test ax, ax + jz short loc_1892 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1892: ; CODE XREF: sub_14D2+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_18A2 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_18A2: ; CODE XREF: sub_14D2+3C6j + or si, si + jnz short loc_18AE + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_18AE: ; CODE XREF: sub_14D2+3D2j + test ax, ax + jnz short loc_187C + pop ds + assume ds:dseg + jmp loc_195A +; --------------------------------------------------------------------------- + +loc_18B6: ; CODE XREF: sub_14D2+3A6j + ; sub_14D2:loc_18D8j + lodsb + mov ah, al + or si, si + jnz short loc_18C6 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_18C6: ; CODE XREF: sub_14D2+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_18D8 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_18D8: ; CODE XREF: sub_14D2+3FCj + loop loc_18B6 + pop ds + assume ds:dseg + jmp short loc_195A +; --------------------------------------------------------------------------- + nop + +loc_18DE: ; CODE XREF: sub_14D2+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_18F4 + 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_18F4: ; CODE XREF: sub_14D2+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1916 + nop + +loc_18FE: ; CODE XREF: sub_14D2:loc_190Cj + ; sub_14D2+43Fj + stosb + or di, di + jnz short loc_190C + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_190C: ; CODE XREF: sub_14D2+42Fj + loop loc_18FE + sub bp, 1 + jnb short loc_18FE + jmp short loc_195A +; --------------------------------------------------------------------------- + nop + +loc_1916: ; CODE XREF: sub_14D2+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_192E + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_192E: ; CODE XREF: sub_14D2+44Dj + ; sub_14D2:loc_1952j ... + mov al, dl + stosb + or di, di + jnz short loc_193C + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_193C: ; CODE XREF: sub_14D2+461j + loop loc_1944 + sub bp, 1 + jb short loc_195A + nop + +loc_1944: ; CODE XREF: sub_14D2:loc_193Cj + mov al, bh + stosb + or di, di + jnz short loc_1952 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1952: ; CODE XREF: sub_14D2+477j + loop loc_192E + sub bp, 1 + jnb short loc_192E + nop + +loc_195A: ; CODE XREF: sub_14D2+3E1j + ; sub_14D2+409j ... + mov cl, bl + +loc_195C: ; CODE XREF: sub_14D2+288j + cmp ds:4008h, di + jbe short loc_1965 + jmp loc_1670 +; --------------------------------------------------------------------------- + +loc_1965: ; CODE XREF: sub_14D2+48Ej + mov ax, es + cmp ds:400Ah, ax + jbe short loc_1970 + jmp loc_1670 +; --------------------------------------------------------------------------- + +loc_1970: ; CODE XREF: sub_14D2+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_23E4 + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_14D2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_198E proc near ; CODE XREF: sub_14D2+182p + ; sub_14D2+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, ds:4112h + mov cl, ds:4113h + dec cl + jns short loc_19B6 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19AC + call sub_1AA8 + +loc_19AC: ; CODE XREF: sub_198E+19j + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_19B6: ; CODE XREF: sub_198E+Fj + shl dl, 1 + jb short loc_1A04 + add al, 2 + dec cl + jns short loc_19D8 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19CE + call sub_1AA8 + nop + +loc_19CE: ; CODE XREF: sub_198E+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_19D8: ; CODE XREF: sub_198E+30j + shl dl, 1 + jnb short loc_1A04 + add al, 2 + inc ah + dec cl + jns short loc_19FC + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19F2 + call sub_1AA8 + nop + +loc_19F2: ; CODE XREF: sub_198E+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_19FC: ; CODE XREF: sub_198E+54j + shl dl, 1 + jnb short loc_1A04 + add al, 4 + inc ah + +loc_1A04: ; CODE XREF: sub_198E+2Aj sub_198E+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_1A3A + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1A2E + call sub_1AA8 + +loc_1A2E: ; CODE XREF: sub_198E+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1A3A: ; CODE XREF: sub_198E+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_1A6E + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_1A6E: ; CODE XREF: sub_198E+D9j sub_198E+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_1A6E + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_198E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7C proc near ; CODE XREF: sub_14D2+5Dp sub_14D2+65p ... + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1A8A + call sub_1AA8 + +loc_1A8A: ; CODE XREF: sub_1A7C+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_1A7C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA8 proc near ; CODE XREF: sub_14D2+1BBp + ; sub_14D2+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_1AA8 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1AC0 + +loc_1ABA: ; CODE XREF: sub_1AC0+10j sub_1AC0+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1AC0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AC0 proc far ; CODE XREF: sub_B17D+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 1ABA SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_D82E + cmp ax, word_D830 + ja short loc_1ABA + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_1ABA + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1AF0 + add cx, di + jle short loc_1ABA + shl di, 2 + add si, di + xor di, di + +loc_1AF0: ; CODE XREF: sub_1AC0+23j + cmp di, 50h ; 'P' + jge short loc_1ABA + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1AFF + mov cx, 50h ; 'P' + +loc_1AFF: ; CODE XREF: sub_1AC0+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_D834 + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1B12: ; CODE XREF: sub_1AC0+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1FE4h] + mov dx, cs:[bx+1FE6h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1FE4h] + or dx, cs:[bx+1FE6h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1FE4h] + or dx, cs:[bx+1FE6h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1FE4h] + or dx, cs:[bx+1FE6h] + 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_1B12 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1AC0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1B8E proc far ; CODE XREF: sub_1B94+15p + 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_1B8E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1B94 proc far ; CODE XREF: sub_AFB0+19P + mov al, 41h ; 'A' + out 6Ah, al ; PC-98 GDC (6a): + ; Set display mode to LCD + mov word_D876, 0 + push cs + call loc_1D0A + mov al, 0 + out 0A4h, al ; Interrupt Controller #2, 8259A + out 0A6h, al ; Interrupt Controller #2, 8259A + push cs + call near ptr sub_1B8E + push cs + call near ptr sub_1208 + push cs + call near ptr sub_1256 + push cs + call near ptr sub_1CD6 + retf +sub_1B94 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1BBA proc far ; CODE XREF: sub_AFB0+43P + xor ax, ax + mov es, ax + assume es:seg000 + or byte ptr es:loc_4FF+1, 20h + retf +sub_1BBA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1BC6 proc far ; CODE XREF: sub_AB28+8P + xor ax, ax + mov es, ax + and byte ptr es:loc_4FF+1, 0DFh + retf +sub_1BC6 endp + +; --------------------------------------------------------------------------- + nop + +loc_1BD2: ; CODE XREF: sub_C7C+19Cp sub_C7C+20Fp + mov ax, word_D836 + mov cs:word_1C14, ax + mov ax, word_E90A + mov cs:word_1C81, ax + mov ax, word_E912 + mov cs:word_1C8F, ax + mov ax, word_E906 + mov cs:word_1C79, ax + mov ax, word_E90E + mov cs:word_1C8B, ax + mov ax, word_D828 + mov cs:word_1C19, ax + mov cs:word_1C43, ax + mov ax, word_D82A + mov cs:word_1C33, ax + jmp short $+2 + push bp + mov cx, word_E904 + mov bp, word_E90C +; --------------------------------------------------------------------------- + db 81h, 0FEh +word_1C14 dw 1234h ; DATA XREF: seg000:1BD5w + db 77h, 5Dh, 0B8h +word_1C19 dw 1234h ; DATA XREF: seg000:1BF8w + db 2Bh, 0C8h, 8Bh, 0DDh, 2Bh, 0D8h, 85h, 0CBh, 78h, 50h + db 3Bh, 0CBh, 7Fh, 2, 87h, 0CBh, 80h, 0FFh, 80h, 1Bh, 0C0h + db 23h, 0D8h, 0BFh +word_1C33 dw 1234h ; DATA XREF: seg000:1C03w + db 2Bh, 0CFh, 1Bh, 0C0h, 23h, 0C8h, 3, 0CFh, 2Bh, 0CBh + db 7Ch, 34h, 81h, 0C3h +word_1C43 dw 1234h ; DATA XREF: seg000:1BFCw + db 8Bh, 0FBh, 0C1h, 0EFh, 4, 0D1h, 0E7h, 3, 0FEh, 83h + db 0E3h, 0Fh, 3, 0CBh, 83h, 0E9h, 10h, 0D1h, 0E3h, 8Bh + db 87h, 8, 2, 0F7h, 0D0h, 8Bh, 0D9h, 83h, 0E3h, 0Fh, 0D1h + db 0E3h, 0C1h, 0F9h, 4, 78h, 6, 0ABh, 0B8h, 2 dup(0FFh) + db 0F3h, 0ABh, 23h, 87h, 0Ah, 2, 0ABh, 81h, 6, 0D8h, 12h +word_1C79 dw 1234h ; DATA XREF: seg000:1BEAw + db 8Bh, 0Eh, 0D4h, 12h, 81h, 0D1h +word_1C81 dw 1234h ; DATA XREF: seg000:1BDCw + db 89h, 0Eh, 0D4h, 12h, 81h, 6, 0E0h, 12h +word_1C8B dw 1234h ; DATA XREF: seg000:1BF1w + db 81h, 0D5h +word_1C8F dw 1234h ; DATA XREF: seg000:1BE3w + db 83h, 0C6h, 50h, 4Ah, 78h, 3, 0E9h, 78h, 0FFh, 89h, 2Eh + db 0DCh, 12h, 5Dh, 0C3h + +; =============== S U B R O U T I N E ======================================= + + +sub_1CA0 proc near ; CODE XREF: sub_C7C+115p sub_C7C+16Ep ... + push si + mov [bx], dx + sub ax, dx + cmp cx, 1 + adc cx, 0 + cwd + idiv cx + cmp dx, 8000h + adc ax, 0FFFFh + mov [bx+6], ax + cmp dx, 8000h + cmc + sbb si, si + add dx, si + xor dx, si + xor ax, ax + div cx + add ax, si + xor ax, si + mov [bx+2], ax + mov word ptr [bx+4], 8000h + pop si + retn +sub_1CA0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1CD6 proc far ; CODE XREF: sub_1B94+21p + push si + push di + push ds + pop es + assume es:dseg + mov di, 12F8h + mov si, 248h + mov cx, 18h + rep movsw + pop di + pop si + mov al, 0 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 4 + out 0AEh, al ; Interrupt Controller #2, 8259A + mov al, 26h ; '&' + out 0ACh, al ; Interrupt Controller #2, 8259A + mov al, 15h + out 0AAh, al ; Interrupt Controller #2, 8259A + mov al, 37h ; '7' + out 0A8h, al ; Interrupt Controller #2, 8259A + mov al, 1 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov word_D876, 64h ; 'd' + push cs + call loc_1D0A + retf +sub_1CD6 endp + +; --------------------------------------------------------------------------- + +loc_1D0A: ; CODE XREF: seg000:0571p sub_57A+15p ... + cld + push si + mov ax, word_D876 + 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_1D30 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1D30: ; CODE XREF: seg000:1D27j + mov si, 12F8h + mov dl, 64h ; 'd' + cmp word_D8A8, bx + jnz short loc_1D74 + +loc_1D3B: ; CODE XREF: seg000:1D6Fj + 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_1D3B + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1D74: ; CODE XREF: seg000:1D39j + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1D89 + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1D89: ; CODE XREF: seg000:1D80j + shr al, 1 + cmc + sbb al, al + mov cs:byte_1DF2, al + mov dx, bx + push di + mov di, 0 + +loc_1D98: ; CODE XREF: seg000:1E0Fj + 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_1DCD + mov bh, al + +loc_1DCD: ; CODE XREF: seg000:1DC9j + cmp bh, bl + ja short loc_1DD3 + mov bh, bl + +loc_1DD3: ; CODE XREF: seg000:1DCFj + 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_1DF2 db 0 ; DATA XREF: seg000:1D8Ew +; --------------------------------------------------------------------------- + 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_1D98 + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1E14 proc far ; CODE XREF: sub_2FB6+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_289A + pop bp + retf 2 +sub_1E14 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_1E5C + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1E5C: ; CODE XREF: seg000:1E44j + call word ptr es:4 + test ah, ah + jnz short locret_1E8B + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1E8B + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1E8A + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1E8A: ; CODE XREF: seg000:1E78j + pop ax + +locret_1E8B: ; CODE XREF: seg000:1E63j seg000:1E6Ej + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1E8C proc near ; CODE XREF: seg000:1ED0p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1EA9 + ja short loc_1EA5 + cmp ax, es:6 + jb short loc_1EA9 + +loc_1EA5: ; CODE XREF: sub_1E8C+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1EA9: ; CODE XREF: sub_1E8C+Ej sub_1E8C+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_1E8C endp + +; --------------------------------------------------------------------------- + call sub_1E8C + or ah, ah + jnz short locret_1EDC + xor al, es:1Eh + +locret_1EDC: ; CODE XREF: seg000:1ED5j + 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_1F01 + +loc_1EEE: ; CODE XREF: seg000:1EFFj + mov es, word ptr [bp+6] + call word ptr es:2 + inc ah + jz short loc_1F01 + mov es, word ptr [bp+0Ch] + stosb + dec si + jnz short loc_1EEE + +loc_1F01: ; CODE XREF: seg000:1EECj seg000:1EF8j + 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_1F65 + +loc_1F59: ; CODE XREF: seg000:1F63j seg000:1F68j + call word ptr es:2 + test ah, ah + jnz short loc_1F6A + dec di + jnz short loc_1F59 + +loc_1F65: ; CODE XREF: seg000:1F57j + dec word ptr [bp+8] + jnz short loc_1F59 + +loc_1F6A: ; CODE XREF: seg000:1F60j + 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_1F78 proc far ; CODE XREF: sub_C1B2:loc_C1C5P + ; sub_C1B2+27P ... + mov ax, 4E35h + mul word_D8B6 + mov cx, ax + mov ax, 15Ah + mul word_D8B4 + add cx, ax + mov ax, 4E35h + mul word_D8B4 + add ax, 1 + adc dx, cx + mov word_D8B4, ax + mov ax, dx + mov word_D8B6, ax + and ah, 7Fh + retf +sub_1F78 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1FA2 proc far ; CODE XREF: sub_9D5C+1C7P + ; sub_A2FB+112P ... + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_A0E + jb short locret_1FE1 + mov bx, ax + mov dx, 12F8h + 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_1FC5: ; CODE XREF: sub_1FA2+2Fj + mov al, [bx+12F8h] + shl al, 4 + or [bx+12F8h], al + dec bx + jns short loc_1FC5 + pop bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov ax, 0 + jcxz short locret_1FE1 + mov ax, 0FFF3h + stc + +locret_1FE1: ; CODE XREF: sub_1FA2+Fj sub_1FA2+39j + retf 4 +sub_1FA2 endp + +; --------------------------------------------------------------------------- + db 0 + db 0 + db 0 + db 0 + db 1, 4 dup(0), 1, 2 dup(0), 2 dup(1), 4 dup(0), 1, 0 + db 1, 0, 1, 2 dup(0), 2 dup(1), 0, 3 dup(1), 4 dup(0) + db 2 dup(1), 2 dup(0), 1, 0, 1, 0, 3 dup(1), 0, 1, 2 dup(0) + db 3 dup(1), 0, 2 dup(1), 0, 7 dup(1), 2, 3 dup(0), 3 + db 3 dup(0), 2, 1, 2 dup(0), 3, 1, 2 dup(0), 2, 0, 1, 0 + db 3, 0, 1, 0, 2, 2 dup(1), 0, 3, 2 dup(1), 0, 2, 2 dup(0) + db 1, 3, 2 dup(0), 1, 2, 1, 0, 1, 3, 1, 0, 1, 2, 0, 2 dup(1) + db 3, 0, 2 dup(1), 2, 3 dup(1), 3, 3 dup(1), 0, 2, 2 dup(0) + db 1, 2, 3 dup(0), 3, 2 dup(0), 1, 3, 3 dup(0), 2, 1, 0 + db 1, 2, 1, 2 dup(0), 3, 1, 0, 1, 3, 1, 2 dup(0), 2, 0 + db 2 dup(1), 2, 0, 1, 0, 3, 0, 2 dup(1), 3, 0, 1, 0, 2 + db 3 dup(1), 2, 2 dup(1), 0, 3, 3 dup(1), 3, 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 2 dup(0), 2, 3, 2 dup(0) + db 2 dup(3), 2 dup(0), 2 dup(2), 1, 0, 3, 2, 1, 0, 2, 3 + db 1, 0, 2 dup(3), 1, 0, 2 dup(2), 0, 1, 3, 2, 0, 1, 2 + db 3, 0, 1, 2 dup(3), 0, 1, 2 dup(2), 2 dup(1), 3, 2, 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(3), 2 dup(1), 2 dup(0), 2, 0 + db 1, 0, 2, 2 dup(0), 1, 2, 0, 2 dup(1), 2, 3 dup(0), 3 + db 0, 1, 0, 3, 2 dup(0), 1, 3, 0, 2 dup(1), 3, 3 dup(0) + db 2, 2 dup(1), 0, 2, 1, 0, 1, 2, 3 dup(1), 2, 1, 2 dup(0) + db 3, 2 dup(1), 0, 3, 1, 0, 1, 3, 3 dup(1), 3, 1, 2, 0 + db 2, 0, 3, 0, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 2, 0, 3, 0 + db 3, 0, 3, 0, 2, 1, 3, 0, 3, 1, 3, 0, 2, 0, 2, 1, 3, 0 + db 2, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 0, 3, 1, 3, 0, 3, 1 + db 2, 1, 3, 1, 3, 1, 3, 1, 0, 2 dup(2), 0, 1, 2 dup(2) + db 2 dup(0), 3, 2, 0, 1, 3, 2, 2 dup(0), 2, 3, 0, 1, 2 + db 3, 2 dup(0), 2 dup(3), 0, 1, 2 dup(3), 2 dup(0), 2 dup(2) + db 2 dup(1), 2 dup(2), 1, 0, 3, 2, 2 dup(1), 3, 2, 1, 0 + db 2, 3, 2 dup(1), 2, 3, 1, 0, 2 dup(3), 2 dup(1), 2 dup(3) + db 1, 3 dup(2), 0, 3, 2 dup(2), 0, 2, 3, 2, 0, 2 dup(3) + db 2, 0, 2 dup(2), 3, 0, 3, 2, 3, 0, 2, 2 dup(3), 0, 3 dup(3) + db 0, 3 dup(2), 1, 3, 2 dup(2), 1, 2, 3, 2, 1, 2 dup(3) + db 2, 1, 2 dup(2), 3, 1, 3, 2, 3, 1, 2, 2 dup(3), 1, 3 dup(3) + db 1, 3 dup(0), 2, 1, 2 dup(0), 2, 0, 1, 0, 2, 2 dup(1) + db 0, 2, 2 dup(0), 1, 2, 1, 0, 1, 2, 0, 2 dup(1), 2, 3 dup(1) + db 2, 3 dup(0), 3, 1, 2 dup(0), 3, 0, 1, 0, 3, 2 dup(1) + db 0, 3, 2 dup(0), 1, 3, 1, 0, 1, 3, 0, 2 dup(1), 3, 3 dup(1) + db 3, 2, 2 dup(0), 2, 3, 2 dup(0), 2 dup(2), 1, 0, 2, 3 + db 1, 0, 2 dup(2), 0, 1, 2, 3, 0, 1, 2 dup(2), 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(2), 2 dup(0), 2 dup(3), 2 dup(0) + db 3, 2, 1, 0, 2 dup(3), 1, 0, 3, 2, 0, 1, 2 dup(3), 0 + db 1, 3, 2, 2 dup(1), 2 dup(3), 2 dup(1), 3, 0, 2, 0, 2 + db 1, 2, 0, 2, 0, 3, 0, 2, 1, 3, 0, 2, 0, 2, 1, 2, 1, 2 + db 1, 2, 0, 3, 1, 2, 1, 3, 1, 2, 0 + db 2, 0, 3, 1, 2, 0, 3, 0, 3, 0, 3, 1, 3, 0, 3, 0, 2, 1 + db 3, 1, 2, 1, 3, 0, 3, 1, 3, 1, 3, 1, 3, 2 dup(2), 0 + db 2, 3, 2, 0, 2 dup(2), 3, 0, 2, 2 dup(3), 0, 3 dup(2) + db 1, 2, 3, 2, 1, 2 dup(2), 3, 1, 2, 2 dup(3), 1, 3 dup(2) + db 0, 2 dup(3), 2, 0, 3, 2, 3, 0, 3 dup(3), 0, 3, 2 dup(2) + db 1, 2 dup(3), 2, 1, 3, 2, 3, 1, 3 dup(3), 1, 3, 2 dup(0) + db 2 dup(2), 1, 0, 2 dup(2), 0, 1, 2 dup(2), 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 1, 0, 3, 2, 0, 1, 3, 2, 2 dup(1) + db 3, 2, 2 dup(0), 2, 3, 1, 0, 2, 3, 0, 1, 2, 3, 2 dup(1) + db 2, 3, 2 dup(0), 2 dup(3), 1, 0, 2 dup(3), 0, 1, 2 dup(3) + db 2 dup(1), 2 dup(3), 2, 0, 2 dup(2), 3, 0, 3 dup(2) + db 1, 2 dup(2), 3, 1, 3 dup(2), 0, 3, 2, 3, 0, 3, 2 dup(2) + db 1, 3, 2, 3, 1, 3, 2 dup(2), 0, 2, 2 dup(3), 0, 2, 3 + db 2, 1, 2, 2 dup(3), 1, 2, 3, 2, 0, 3 dup(3), 0, 2 dup(3) + db 2, 1, 3 dup(3), 1, 2 dup(3), 0, 3 dup(2), 1, 3 dup(2) + db 0, 3, 2 dup(2), 1, 3, 2 dup(2), 0, 2, 3, 2, 1, 2, 3 + db 2, 0, 2 dup(3), 2, 1, 2 dup(3), 2, 0, 2 dup(2), 3, 1 + db 2 dup(2), 3, 0, 3, 2, 3, 1, 3, 2, 3, 0, 2, 2 dup(3) + db 1, 2, 2 dup(3), 0, 3 dup(3), 1, 3 dup(3), 4 dup(2) + db 3, 4 dup(2), 3, 2 dup(2), 2 dup(3), 4 dup(2), 3, 2 + db 3, 2, 3, 2 dup(2), 2 dup(3), 2, 3 dup(3), 4 dup(2) + db 2 dup(3), 2 dup(2), 3, 2, 3, 2, 3 dup(3), 2, 3, 2 dup(2) + db 3 dup(3), 2, 2 dup(3), 2, 7 dup(3) + +; =============== S U B R O U T I N E ======================================= + + +sub_23E4 proc far ; CODE XREF: sub_412+57p sub_FFC+81p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_E968, bx + pop bx + retf 2 +sub_23E4 endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_23FA + +loc_23F4: ; CODE XREF: sub_23FA+5j + push cs + call near ptr sub_276E + jb short loc_2429 +; END OF FUNCTION CHUNK FOR sub_23FA + +; =============== S U B R O U T I N E ======================================= + + +sub_23FA proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 23F4 SIZE 00000006 BYTES + + cmp word_DBAE, 0 + jz short loc_23F4 + 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_E968 + add bx, ax + jb short loc_2428 + cmp word_E964, bx + jb short loc_2428 + mov word_E968, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_2428: ; CODE XREF: sub_23FA+1Ej sub_23FA+24j + pop bx + +loc_2429: ; CODE XREF: sub_23FA-2j + mov ax, 0FFF8h + retf 2 +sub_23FA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2430 proc far ; CODE XREF: sub_9D0A+3P sub_9FAF+25P ... + 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_2430 endp + +; --------------------------------------------------------------------------- + nop + xor ax, ax + mov es, ax + assume es:seg000 + mov al, es:byte_712 + inc ax + retf +; --------------------------------------------------------------------------- + xor ax, ax + mov es, ax + mov al, es:byte_711 + retf +; --------------------------------------------------------------------------- + nop + mov dx, 336Ch + jmp short loc_247A +; --------------------------------------------------------------------------- + nop + mov dx, 3368h + jmp short loc_247A +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2462 proc far ; CODE XREF: sub_AFB0+4DP + mov dx, 3568h + jmp short loc_247A +sub_2462 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2468 proc far ; CODE XREF: sub_AB28+12P + mov dx, 356Ch + jmp short loc_247A +sub_2468 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_246E proc far ; CODE XREF: sub_AFB0+48P + mov dx, 3168h + jmp short loc_247A +sub_246E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2474 proc far ; CODE XREF: sub_AB28+DP + mov dx, 316Ch + jmp short loc_247A +; --------------------------------------------------------------------------- + nop + +loc_247A: ; CODE XREF: seg000:2459j seg000:245Fj ... + 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, 3Eh ; '>' + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + mov al, dh + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + mov al, dl + int 29h ; DOS 2+ internal - FAST PUTCHAR + ; AL = character to display + retf +sub_2474 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2490 proc far ; CODE XREF: sub_9D0A+CP + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + mov bx, bp + mov bp, sp + push di + xor ax, ax + mov es, ax + mov al, es:byte_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_DB3A + 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_2490 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_24C8 proc far ; CODE XREF: sub_9D5C+79P sub_9D5C+8BP ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + mov dx, bp + mov bp, sp + mov cx, di + mov ax, [bp+arg_4] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_DB3A + mov es, di + assume es:nothing + mov di, [bp+arg_6] + shl di, 1 + mov ax, [bp+arg_2] + mov bx, [bp+arg_0] + mov bp, dx + or ah, ah + jz short loc_2514 + cmp ah, 80h ; '€' + jb short loc_2508 + shl ah, 1 + cmp al, 9Fh ; 'Ÿ' + jnb short loc_2502 + cmp al, 80h ; '€' + adc ax, 0FEDFh + +loc_2502: ; CODE XREF: sub_24C8+33j + sbb ax, 0DFFEh + and ax, 7F7Fh + +loc_2508: ; CODE XREF: sub_24C8+2Dj + xchg ah, al + sub al, 20h ; ' ' + mov es:[di+2000h], bx + stosw + or al, 80h + +loc_2514: ; CODE XREF: sub_24C8+28j + mov es:[di+2000h], bx + stosw + mov di, cx + retf 8 +sub_24C8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2520 proc far ; CODE XREF: sub_A510+158P + ; sub_A510+179P ... + +arg_0 = word ptr 4 +arg_2 = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch + + mov dx, bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov di, ax + shl ax, 1 + shl ax, 1 + add di, ax + shl di, 1 + add di, word_DB3A + mov es, di + mov di, [bp+arg_8] + shl di, 1 + mov cx, di + push [bp+arg_0] + push ds + lds si, [bp+arg_2] + mov bp, dx + mov bx, 0FEDFh + mov dx, 9F80h + lodsb + or al, al + jz short loc_257F + +loc_2554: ; CODE XREF: sub_2520+5Dj + xor ah, ah + cmp al, dl + jbe short loc_2579 + cmp al, dh + jbe short loc_2562 + cmp al, bl + jbe short loc_2579 + +loc_2562: ; CODE XREF: sub_2520+3Cj + mov ah, al + lodsb + shl ah, 1 + cmp al, dh + jnb short loc_256F + cmp al, dl + adc ax, bx + +loc_256F: ; CODE XREF: sub_2520+49j + sbb al, bh + and ax, 7F7Fh + xchg ah, al + stosw + or al, dl + +loc_2579: ; CODE XREF: sub_2520+38j sub_2520+40j + stosw + lodsb + or al, al + jnz short loc_2554 + +loc_257F: ; CODE XREF: sub_2520+32j + pop ds + xchg cx, di + sub cx, di + shr cx, 1 + add di, 2000h + pop ax + rep stosw + pop di + pop si + retf 0Ah +sub_2520 endp + +; --------------------------------------------------------------------------- +dword_2592 dd 0 ; DATA XREF: sub_2596+5Ew sub_2600+1r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2596 proc far ; CODE XREF: sub_AFB0+3EP + xor ax, ax + push ax + push ax + push cs + call near ptr sub_12E6 + and ax, 0Ch + cmp ax, 0Ch + mov word_DBA2, 33FFh + jz short loc_25B2 + mov word_DBA2, 0 + +loc_25B2: ; CODE XREF: sub_2596+14j + xor ax, ax + mov word_E958, ax + mov word_E95A, ax + cmp byte_DBA4, al + jnz short locret_25FF + mov al, 0Ah + push ax + push cs + mov ax, offset sub_260A + push ax + nop + push cs + call near ptr sub_6C6 + mov word_E95C, ax + mov word_E95E, 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_DBA4, ah + mov ax, 18h + push ax + push cs + mov ax, offset sub_2600 + push ax + nop + push cs + call near ptr sub_6C6 + mov word ptr cs:dword_2592, ax + mov word ptr cs:dword_2592+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_25FF: ; CODE XREF: sub_2596+28j + retf +sub_2596 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2600 proc far ; DATA XREF: sub_2596+55o + pushf + call cs:dword_2592 + out 64h, al ; AT Keyboard controller 8042. + iret +sub_2600 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_260A proc far ; DATA XREF: sub_2596+2Eo + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_DBA2 + add word_E960, ax + jb short loc_263B + inc word_E958 + inc word_E95A + cmp word_DBA0, 0 + jz short loc_263B + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_DB9E + pop es + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_263B: ; CODE XREF: sub_260A+Ej sub_260A+1Dj + pop ds + mov al, 20h ; ' ' + out 0, al + out 64h, al ; AT Keyboard controller 8042. + pop ax + iret +sub_260A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2644 proc far ; CODE XREF: sub_B019+28P + cmp byte_DBA4, 0 + jz short locret_268A + mov ax, 18h + push ax + push word ptr cs:dword_2592+2 + push word ptr cs:dword_2592 + nop + push cs + call near ptr sub_6C6 + 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_E95E + push word_E95C + nop + push cs + call near ptr sub_6C6 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_DBA4 + 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_DBA4, al + +locret_268A: ; CODE XREF: sub_2644+5j + retf +sub_2644 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_268C proc far ; CODE XREF: seg000:0546p seg000:0557p ... + cmp byte_DBA4, 0 + jnz short loc_26A8 + +loc_2693: ; CODE XREF: sub_268C+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_2693 + +loc_269D: ; CODE XREF: sub_268C+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_269D + retf +; --------------------------------------------------------------------------- + +loc_26A8: ; CODE XREF: sub_268C+5j + mov ax, word_E958 + +loc_26AB: ; CODE XREF: sub_268C+23j + cmp ax, word_E958 + jz short loc_26AB + retf +sub_268C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_26B2 proc far ; CODE XREF: sub_9D5C+1D3P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_D876, 0C8h ; 'È' + push cs + call near ptr sub_268C + +loc_26C4: ; CODE XREF: sub_26B2+2Ej + push cs + call loc_1D0A + mov di, si + cmp di, 0 + jle short loc_26D6 + +loc_26CF: ; CODE XREF: sub_26B2+22j + push cs + call near ptr sub_268C + dec di + jnz short loc_26CF + +loc_26D6: ; CODE XREF: sub_26B2+1Bj + sub word_D876, 6 + cmp word_D876, 64h ; 'd' + jg short loc_26C4 + mov word_D876, 64h ; 'd' + push cs + call loc_1D0A + pop di + pop si + retf 2 +sub_26B2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_26F2 proc far ; CODE XREF: sub_14D2+E7p + ; sub_14D2+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_271E + rcr bx, 1 + push bx + push cs + call near ptr sub_27AA + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_271E: ; CODE XREF: sub_26F2+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_26F2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2726 proc far ; CODE XREF: sub_AFB0+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_2741 + push ax + push bx + push cs + call near ptr sub_2748 + xor ax, ax + mov word_DBB0, 1 + +loc_2741: ; CODE XREF: sub_2726+Bj + neg ax + pop bx + retf 2 +sub_2726 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2748 proc far ; CODE XREF: sub_2726+10p sub_276E+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_DBAE, ax + mov word_E968, ax + add ax, [bp+arg_0] + mov word_E962, ax + mov word_E964, ax + mov word_E966, 0 + mov word_DBB0, 0 + clc + pop bp + retf 4 +sub_2748 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_276E proc far ; CODE XREF: sub_23FA-5p sub_27AA+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_DBB4 + cmp bx, ax + jbe short loc_277F + sub bx, ax + +loc_277F: ; CODE XREF: sub_276E+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_2793 + push ax + push ax + push bx + push cs + call near ptr sub_2748 + mov word_DBB0, 1 + pop ax + +loc_2793: ; CODE XREF: sub_276E+15j + pop bx + retf +sub_276E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2796 proc far ; CODE XREF: seg000:05C9p sub_29AA+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_27B1 +sub_2796 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_27AA proc far ; CODE XREF: sub_FBC+Ep sub_26F2+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_27B1: ; CODE XREF: sub_2796+12j + cmp word_DBAE, 0 + jnz short loc_27BC + push cs + call near ptr sub_276E + +loc_27BC: ; CODE XREF: sub_27AA+Cj + push cx + push es + test bx, bx + jz short loc_281D + mov ax, word_E962 + sub ax, word_E968 + cmp bx, ax + jnb short loc_281D + inc bx + mov ax, word_E966 + test ax, ax + jz short loc_27F9 + mov cx, word_E962 + +loc_27D9: ; CODE XREF: sub_27AA+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_27F5 + mov cx, es + add cx, bx + jb short loc_27F1 + cmp cx, ax + jbe short loc_282A + +loc_27F1: ; CODE XREF: sub_27AA+41j + mov cx, word_E962 + +loc_27F5: ; CODE XREF: sub_27AA+3Bj + cmp ax, cx + jnz short loc_27D9 + +loc_27F9: ; CODE XREF: sub_27AA+29j + mov ax, word_E964 + mov cx, ax + sub ax, bx + jb short loc_281D + cmp ax, word_E968 + jb short loc_281D + mov word_E964, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_2883 +; --------------------------------------------------------------------------- + +loc_281D: ; CODE XREF: sub_27AA+16j sub_27AA+21j ... + mov ax, 0 + mov word_DBB2, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_282A: ; CODE XREF: sub_27AA+45j + sub ax, cx + cmp ax, 1 + jbe short loc_285A + 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_E966 + jnz short loc_2883 + mov word_E966, cx + jmp short loc_2883 +; --------------------------------------------------------------------------- + +loc_285A: ; CODE XREF: sub_27AA+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_E966 + jnz short loc_2883 + mov ax, word_E962 + mov cx, bx + push bx + +loc_286F: ; CODE XREF: sub_27AA+D0j + les cx, es:0 + jcxz short loc_287E + mov bx, es + cmp bx, ax + jb short loc_286F + xor bx, bx + +loc_287E: ; CODE XREF: sub_27AA+CAj + mov word_E966, bx + pop bx + +loc_2883: ; CODE XREF: sub_27AA+71j sub_27AA+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_DBB2 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_2894: ; CODE XREF: sub_289A+12j sub_289A+1Aj + pop es + pop cx + pop bx + retf 2 +sub_27AA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_289A proc far ; CODE XREF: sub_472+11p seg000:05FDp ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_E964 + jz short loc_28FE + jb short loc_2894 + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_2894 + mov es:[bx], bx + mov cx, word_E966 + mov ax, es + mov word_E966, ax + jcxz short loc_293B + cmp ax, cx + jb short loc_28CD + mov ax, cx + mov word_E966, ax + +loc_28CD: ; CODE XREF: sub_289A+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_E962 + jnz short loc_28DB + mov ax, es + +loc_28DB: ; CODE XREF: sub_289A+3Dj + push ds + +loc_28DC: ; CODE XREF: sub_289A+4Dj sub_289A+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_28FB + cmp [bx], bx + jnz short loc_28DC + +loc_28E9: ; CODE XREF: sub_289A+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_28DC + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_28E9 + +loc_28FB: ; CODE XREF: sub_289A+49j + pop ds + jmp short loc_293B +; --------------------------------------------------------------------------- + +loc_28FE: ; CODE XREF: sub_289A+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_E964, ax + cmp ax, word_E962 + jz short loc_293B + mov es, ax + cmp es:[bx], bx + jnz short loc_293B + mov ax, es:[bx+2] + mov word_E964, ax + mov cx, word_E962 + cmp ax, cx + jz short loc_2937 + jmp short loc_292E +; --------------------------------------------------------------------------- + nop + +loc_2926: ; CODE XREF: sub_289A+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_2937 + +loc_292E: ; CODE XREF: sub_289A+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_2926 + mov bx, es + +loc_2937: ; CODE XREF: sub_289A+87j sub_289A+92j + mov word_E966, bx + +loc_293B: ; CODE XREF: sub_289A+28j sub_289A+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_289A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2942 proc far ; CODE XREF: sub_B019+2DP + cmp word_DBAE, 0 + jz short loc_295D + mov ax, word_DBAE + mov es, ax + xor ax, ax + cmp word_DBB0, ax + mov word_DBAE, ax + jz short loc_295D + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_295D: ; CODE XREF: sub_2942+5j sub_2942+15j + mov ax, 1 + retf +sub_2942 endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2966 proc far ; CODE XREF: sub_9FAF+3FP sub_A027+7FP ... + cmp word_DBD6, 0 + jz short locret_2995 + push word_DBD6 + push cs + call near ptr sub_289A + mov word_DBD6, 0 + jmp short loc_2983 +; --------------------------------------------------------------------------- + +loc_297D: ; CODE XREF: sub_2966+22j + dec ax + push ax + push cs + call near ptr sub_2B54 + +loc_2983: ; CODE XREF: sub_2966+15j + mov ax, word_DBD8 + test ax, ax + jnz short loc_297D + cmp word_DBDA, 0 + jz short locret_2995 + call word_DBDA + +locret_2995: ; CODE XREF: sub_2966+5j sub_2966+29j + retf +sub_2966 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_29AA + +loc_2996: ; CODE XREF: sub_29AA+32j + push ax + push es + push cs + call near ptr sub_289A + pop ax + jmp short loc_29A3 +; END OF FUNCTION CHUNK FOR sub_29AA +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_29AA + +loc_29A0: ; CODE XREF: sub_29AA+24j + mov ax, 0FFF8h + +loc_29A3: ; CODE XREF: sub_29AA-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_29AA + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_29AA proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 2996 SIZE 00000009 BYTES +; FUNCTION CHUNK AT 29A0 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_DBD8 + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_DBB2, 4 + push ax + push cs + call near ptr sub_2796 + jb short loc_29A0 + mov es, ax + push word_DBD8 + push dx + push ax + push cs + call near ptr sub_2A56 + jb short loc_2996 + 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_2A00 + rep movsb + jmp short loc_2A06 +; --------------------------------------------------------------------------- + nop + +loc_2A00: ; CODE XREF: sub_29AA+4Fj sub_29AA+5Aj + lodsb + not al + stosb + loop loc_2A00 + +loc_2A06: ; CODE XREF: sub_29AA+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2A0E: ; CODE XREF: sub_29AA+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2A0E + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2A1E: ; CODE XREF: sub_29AA+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2A1E + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2A2E: ; CODE XREF: sub_29AA+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2A2E + test dl, dl + jz short loc_2A4A + mov ah, 4 + +loc_2A3C: ; CODE XREF: sub_29AA+9Ej + xor si, si + mov cx, bx + +loc_2A40: ; CODE XREF: sub_29AA+9Aj + lodsb + and [di], al + inc di + loop loc_2A40 + dec ah + jnz short loc_2A3C + +loc_2A4A: ; CODE XREF: sub_29AA+8Ej + pop ds + mov ax, word_DBD8 + dec ax + pop di + pop si + pop bp + retf 8 +sub_29AA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2A56 proc far ; CODE XREF: sub_29AA+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_2AC5 + cmp word_DBD6, 0 + jnz short loc_2A96 + mov word_DBB2, 4 + push 240h + push cs + call near ptr sub_27AA + mov word_DBD6, ax + mov ax, 0FFF8h + jb short loc_2AC5 + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 173Ah + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_2A96: ; CODE XREF: sub_2A56+17j + mov ax, bx + shl bx, 1 + cmp ax, word_DBD8 + jnb short loc_2AB1 + cmp word ptr [bx+173Ah], 0 + jz short loc_2AB5 + push word ptr [bx+133Ah] + push cs + call near ptr sub_289A + jmp short loc_2AB5 +; --------------------------------------------------------------------------- + +loc_2AB1: ; CODE XREF: sub_2A56+48j + inc ax + mov word_DBD8, ax + +loc_2AB5: ; CODE XREF: sub_2A56+4Fj sub_2A56+59j + mov ax, [bp+arg_2] + mov [bx+173Ah], ax + mov ax, [bp+arg_0] + mov [bx+133Ah], ax + xor ax, ax + +loc_2AC5: ; CODE XREF: sub_2A56+10j sub_2A56+2Cj + pop bx + pop bp + retf 6 +sub_2A56 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2ACA proc far ; CODE XREF: sub_B77E+34P + +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_A0E + jb short loc_2B4C + mov bx, ax + mov cx, 586h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_2B44 + mov al, byte_DBBB + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_2B44 + xor si, si + mov ax, word_DBD2 + or ax, ax + jz short loc_2B10 + 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_2B10: ; CODE XREF: sub_2ACA+37j + test byte_DBBB, 80h + jz short loc_2B24 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_2B44 + +loc_2B24: ; CODE XREF: sub_2ACA+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_2B44 + push bx + push cs + call near ptr sub_9F8 + mov ax, word_DBC4 + sub ax, word_DBC2 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_2B44: ; CODE XREF: sub_2ACA+22j sub_2ACA+2Ej ... + push ax + push bx + push cs + call near ptr sub_9F8 + pop ax + stc + +loc_2B4C: ; CODE XREF: sub_2ACA+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_2ACA endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2B54 proc far ; CODE XREF: sub_2966+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_DBD8 + jnb short loc_2B9C + mov cx, bx + shl bx, 1 + mov ax, [bx+173Ah] + or ax, ax + jz short loc_2B9C + push word ptr [bx+133Ah] + push cs + call near ptr sub_289A + mov [bx+133Ah], dx + mov [bx+173Ah], dx + inc cx + cmp cx, word_DBD8 + jnz short loc_2B94 + +loc_2B85: ; CODE XREF: sub_2B54+3Dj + dec word_DBD8 + jz short loc_2B94 + dec bx + dec bx + mov cx, [bx+133Ah] + jcxz short loc_2B85 + nop + +loc_2B94: ; CODE XREF: sub_2B54+2Fj sub_2B54+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_2B9C: ; CODE XREF: sub_2B54+Cj sub_2B54+18j + stc + mov ax, 0FFE1h + retf 2 +sub_2B54 endp + +; --------------------------------------------------------------------------- + nop + +loc_2BA4: ; CODE XREF: seg000:2C02j seg000:2C0Bj ... + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_2BAA: ; CODE XREF: sub_B6BB+53P sub_B6BB+62P ... + push bp + mov bp, sp + push si + push di + mov bx, [bp+6] + shl bx, 1 + mov ax, [bx+133Ah] + mov cs:word_2D61, ax + mov bx, [bx+173Ah] + xor ax, ax + xchg al, bh + mov word_F16A, ax + mov cx, ax + shl cx, 3 + add cx, [bp+0Ah] + dec cx + imul bx + mov cs:word_2D9A, ax + cmp cx, word_D82C + jg short loc_2BFE + mov dx, word_D828 + cmp [bp+0Ah], dx + jl short loc_2BFE + mov di, [bp+8] + cmp word_D82E, di + jg short loc_2BFE + mov ax, bx + add ax, di + cmp ax, word_D832 + jge short loc_2BFE + pop di + pop si + pop bp + jmp loc_2D9E +; --------------------------------------------------------------------------- + +loc_2BFE: ; CODE XREF: seg000:2BDAj seg000:2BE3j ... + cmp cx, word_D828 + jl short loc_2BA4 + mov dx, word_D82C + cmp [bp+0Ah], dx + jg short loc_2BA4 + mov di, [bp+8] + cmp word_D832, di + jl short loc_2BA4 + mov ax, bx + add ax, di + cmp ax, word_D82E + jle short loc_2BA4 + cmp cx, dx + jle short loc_2C26 + mov cx, dx + +loc_2C26: ; CODE XREF: seg000:2C22j + mov al, [bp+0Ah] + and al, 7 + mov cs:byte_2CA3, al + xor si, si + mov ax, word_D828 + cmp [bp+0Ah], ax + jge short loc_2C4B + mov dx, ax + shr dx, 3 + add si, dx + mov dx, [bp+0Ah] + sar dx, 3 + sub si, dx + mov [bp+0Ah], ax + +loc_2C4B: ; CODE XREF: seg000:2C37j + sub di, word_D82E + jns short loc_2C5C + add bx, di + mov ax, word_F16A + imul di + sub si, ax + xor di, di + +loc_2C5C: ; CODE XREF: seg000:2C4Fj + lea ax, [bx+di-1] + sub ax, word_D830 + jle short loc_2C67 + sub bx, ax + +loc_2C67: ; CODE XREF: seg000:2C63j + mov cs:word_2D65, bx + mov ax, [bp+0Ah] + shr ax, 3 + imul bx, di, 50h + add bx, ax + mov cs:word_2D68, bx + mov bx, cx + mov dx, 80FFh + and cl, 7 + sar dh, cl + mov cl, [bp+0Ah] + and cl, 7 + shr dl, cl + mov cx, ax + shr bx, 3 + sub bx, cx + jnz short loc_2C99 + and dl, dh + +loc_2C99: ; CODE XREF: seg000:2C95j + mov cs:word_2D6B, bx + mov es, word_D834 +; --------------------------------------------------------------------------- + db 0B1h +byte_2CA3 db 12h ; DATA XREF: seg000:2C2Bw +; --------------------------------------------------------------------------- + mov al, 0C0h ; 'À' + out 7Ch, al + mov al, 0 + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2D5E + mov al, 0CEh ; 'Î' + out 7Ch, al + mov al, 0FFh + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2D5E + mov ax, 0CDh ; 'Í' + out 7Ch, al + call loc_2D5E + mov ax, 0CBh ; 'Ë' + out 7Ch, al + call loc_2D5E + mov ax, 0C7h ; 'Ç' + out 7Ch, al + call loc_2D5E + mov al, 0 + out 7Ch, al + pop di + pop si + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_2CE8 proc near + test si, si + jz short loc_2CEF + +loc_2CEC: ; CODE XREF: sub_2CE8+43j + mov ah, [si-1] + +loc_2CEF: ; CODE XREF: sub_2CE8+2j + mov al, [si] + inc si + mov bx, ax + shr bx, cl + and bl, dl + mov es:[di], bl + inc di + mov ch, 12h + dec ch + js short loc_2D22 + jz short loc_2D15 + +loc_2D04: ; CODE XREF: sub_2CE8+2Bj + mov ah, al + mov al, [si] + inc si + mov bx, ax + shr bx, cl + mov es:[di], bl + inc di + dec ch + jnz short loc_2D04 + +loc_2D15: ; CODE XREF: sub_2CE8+1Aj + mov ah, al + mov al, [si] + inc si + shr ax, cl + and al, dh + mov es:[di], al + inc di + +loc_2D22: ; CODE XREF: sub_2CE8+18j + add si, 1234h + add di, 1234h + dec bp + jnz short loc_2CEC + retn +sub_2CE8 endp + +; --------------------------------------------------------------------------- + +loc_2D2E: ; CODE XREF: seg000:2D5Bj + mov al, [si] + inc si + and al, dl + mov es:[di], al + inc di + cmp bx, 1 + jl short loc_2D4B + lea cx, [bx-1] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + lodsb + and al, dh + stosb + +loc_2D4B: ; CODE XREF: seg000:2D3Aj + mov al, 0 + xchg al, ah + add si, ax + sub si, bx + mov ah, al + add di, 4Fh ; 'O' + sub di, bx + dec bp + jnz short loc_2D2E + retn +; --------------------------------------------------------------------------- + +loc_2D5E: ; CODE XREF: seg000:2CB2p seg000:2CC3p ... + push si + push ds +; --------------------------------------------------------------------------- + db 0B8h +word_2D61 dw 1234h ; DATA XREF: seg000:2BB8w + db 50h, 0BDh +word_2D65 dw 1234h ; DATA XREF: seg000:loc_2C67w + db 0BFh +word_2D68 dw 1234h ; DATA XREF: seg000:2C77w + db 0BBh +word_2D6B dw 1234h ; DATA XREF: seg000:loc_2C99w + db 0A1h, 3Ah, 1Bh, 48h, 80h, 0F9h, 0, 75h, 8, 8Ah, 0E0h + db 1Fh, 68h, 96h, 2Dh, 0EBh, 0B0h, 2Eh, 88h, 1Eh, 0FDh + db 2Ch, 2Bh, 0C3h, 2Eh, 0A3h, 24h, 2Dh, 0B8h, 4Fh, 0, 2Bh + db 0C3h, 2Eh, 0A3h, 28h, 2Dh, 1Fh, 0E8h, 52h, 0FFh, 1Fh + db 5Eh, 81h, 0C6h +word_2D9A dw 1234h ; DATA XREF: seg000:2BD2w +; --------------------------------------------------------------------------- + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_2D9E: ; CODE XREF: seg000:2BFBj + push bp + mov bp, sp + push ds + push si + push di + mov bx, [bp+6] + shl bx, 1 + mov dx, [bx+173Ah] + mov cx, [bp+0Ah] + mov bp, [bp+8] + 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+576h] + mov cs:word_2F4B, ax + test bp, 1 + jnz short loc_2E0E + test dh, 1 + jnz short loc_2DF8 + mov cs:byte_2EAB, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2EA9, al + mov cs:word_2F4E, 0FF3Eh + jmp short loc_2E40 +; --------------------------------------------------------------------------- + +loc_2DF8: ; CODE XREF: seg000:2DE0j + mov cs:byte_2ED9, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2ED7, al + mov cs:word_2F4E, 0FF62h + jmp short loc_2E40 +; --------------------------------------------------------------------------- + +loc_2E0E: ; CODE XREF: seg000:2DDBj + dec bp + test dh, 1 + jnz short loc_2E2C + dec ch + mov cs:byte_2F10, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_2F0E, al + mov cs:word_2F4E, 0FF90h + jmp short loc_2E40 +; --------------------------------------------------------------------------- + +loc_2E2C: ; CODE XREF: seg000:2E12j + mov cs:byte_2F41, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_2F3F, al + mov cs:word_2F4E, 0FFC6h + +loc_2E40: ; CODE XREF: seg000:2DF6j seg000:2E0Cj ... + mov ds, word ptr [bx+133Ah] + 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_2F48 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2F48 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2F48 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2F48 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2F48 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +; --------------------------------------------------------------------------- + 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_2EA9 db 50h ; DATA XREF: seg000:2DEBw + db 0B5h +byte_2EAB db 11h ; DATA XREF: seg000:2DE2w + 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_2ED7 db 50h ; DATA XREF: seg000:2E01w + db 0B5h +byte_2ED9 db 11h ; DATA XREF: seg000:loc_2DF8w + 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_2F0E db 50h ; DATA XREF: seg000:2E1Fw + db 0B5h +byte_2F10 db 11h ; DATA XREF: seg000:2E16w + 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_2F3F db 50h ; DATA XREF: seg000:2E35w + db 0B5h +byte_2F41 db 11h ; DATA XREF: seg000:loc_2E2Cw + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2F48: ; CODE XREF: seg000:2E59p seg000:2E6Bp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2F4B dw 1234h ; DATA XREF: seg000:2DD3w + db 0E9h +word_2F4E dw 0FF3Eh ; DATA XREF: seg000:2DEFw seg000:2E05w ... +dword_2F50 dd 0 ; DATA XREF: sub_2F56+4r sub_2F56+14w ... +byte_2F54 db 0, 90h ; DATA XREF: seg000:2FE6r seg000:2FFDw + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2F56 proc far ; CODE XREF: sub_AFB0+60P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_2F50 + or ax, word ptr cs:dword_2F50+2 + jnz short loc_2F8C + 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_2F50, bx + mov word ptr cs:dword_2F50+2, es + mov word_F3C4, 0 + mov word_F3C6, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 2FE6h + 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_2F8C: ; CODE XREF: sub_2F56+Dj + push si + push di + push ds + mov cx, 0FFFFh + mov al, 0 + les di, [bp+arg_0] + assume es:nothing + repne scasb + not cx + sub di, cx + mov si, di + mov di, 1D14h + 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_2F56 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2FB6 proc far ; CODE XREF: sub_B019+3P + mov ax, word ptr cs:dword_2F50 + or ax, word ptr cs:dword_2F50+2 + jz short locret_2FE5 + push ds + lds dx, cs:dword_2F50 + 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_2F50, ax + mov word ptr cs:dword_2F50+2, ax + cmp word_F3C4, ax + jz short locret_2FE5 + push word_F3C4 + push cs + call near ptr sub_1E14 + +locret_2FE5: ; CODE XREF: sub_2FB6+9j sub_2FB6+25j + retf +sub_2FB6 endp + +; --------------------------------------------------------------------------- + cmp cs:byte_2F54, 0 + jz short loc_2FF3 + jmp cs:dword_2F50 +; --------------------------------------------------------------------------- + +loc_2FF3: ; CODE XREF: seg000:2FECj + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_2F54 + push word ptr [bp+18h] + popf + mov cs:byte_304A, ah + mov si, 301Ah + +loc_300E: ; CODE XREF: seg000:3014j + add si, 4 + cmp ah, cs:[si] + jnz short loc_300E + mov di, word_F3C6 + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh ; = + db 0 + db 4Eh ; N + db 30h ; 0 + db 3Eh ; > + db 0 + db 83h ; ƒ + db 30h ; 0 + db 3Fh ; ? + db 0 + db 0A1h ; ¡ + db 30h ; 0 + db 42h ; B + db 0 + db 0B5h ; µ + db 30h ; 0 + db 46h ; F + db 0 + db 16h + db 31h ; 1 + db 40h ; @ + db 0 + db 1Ah + db 31h ; 1 + db 45h ; E + db 0 + db 1Ah + db 31h ; 1 + db 4Ch ; L + db 0 + db 0F8h ; ø + db 30h ; 0 + db 57h ; W + db 0 + db 1Ah + db 31h ; 1 + db 5Ch ; \ + db 0 + db 1Ah + db 31h ; 1 + db 44h ; D + db 0 + db 4 + db 31h ; 1 +byte_304A db 0 ; DATA XREF: seg000:3006w + db 0 + db 1Eh, 31h, 0A8h, 0Fh, 74h, 3, 0E9h, 0C9h, 0, 0Bh, 0FFh + db 78h, 3, 0E9h, 0C2h, 0, 1Eh, 68h, 14h, 1Dh, 0FFh, 76h + db 2, 52h, 0Eh, 0E8h, 0E2h, 0, 0Bh, 0C0h, 75h, 3, 0E9h + db 0AFh, 0, 0A3h, 94h, 1Dh, 8Eh, 0C0h, 26h, 8Eh, 6, 2 dup(0) + db 26h, 0A1h, 2 dup(0), 0A3h, 96h, 1Dh, 0E9h, 0B6h, 0 + db 3Bh, 0DFh, 74h, 3, 0E9h, 94h, 0, 0FFh, 36h, 94h, 1Dh + db 0Eh, 0E8h, 82h, 0EDh, 0C7h, 6, 94h, 1Dh, 2 dup(0), 0C7h + db 6, 96h, 1Dh, 2 dup(0FFh), 0E9h, 98h, 0, 3Bh, 0DFh, 75h + db 79h, 0FFh, 76h, 2, 52h, 51h, 0FFh, 36h, 94h, 1Dh, 0Eh + db 0E8h, 2Ch, 0EEh, 0E9h, 84h, 0, 3Bh, 0DFh, 75h, 65h + db 0Bh, 0C9h, 7Ch, 73h, 3Ch, 1, 74h, 28h, 7Ch, 1Ah, 8Eh + db 6, 94h, 1Dh, 26h, 8Bh, 2 dup(16h), 0, 26h, 8Bh, 0Eh + db 18h, 0, 26h, 2Bh, 16h, 12h, 0, 26h, 1Bh, 0Eh, 14h, 0 + db 0EBh, 0Ch, 51h, 52h, 0FFh, 36h, 94h, 1Dh, 0Eh, 0E8h + db 25h, 0EEh, 5Ah, 59h, 0FFh, 36h, 94h, 1Dh, 51h, 52h + db 0Eh, 0E8h, 55h, 0EEh, 89h, 56h, 0Eh, 0EBh, 41h, 2Eh + db 0C5h, 16h, 50h, 2Fh, 0B8h, 21h, 25h, 0CDh, 21h, 0EBh + db 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h, 6 + db 14h, 31h, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh, 74h + db 16h, 3Bh, 0DFh, 74h, 12h, 2Eh, 0FEh, 0Eh, 54h, 2Fh + db 0FFh, 76h, 18h, 9Dh, 7, 1Fh, 61h, 0FAh, 2Eh, 0FFh, 2Eh + db 50h, 2Fh, 80h, 4Eh, 18h, 1, 0B8h, 1, 0, 0EBh, 4, 80h + db 66h, 18h, 0FEh, 89h, 46h, 12h, 2Eh, 0FEh, 0Eh, 54h + db 2Fh, 7, 1Fh, 61h, 0CFh, 0, 0C8h, 20h, 2 dup(0), 56h + db 57h, 0C7h, 6, 82h, 5, 7, 0, 6Ah, 1Fh, 0Eh, 0E8h, 3Ah + db 0F6h, 73h, 3, 0E9h, 0BBh, 0, 8Bh, 0F0h, 0FFh, 76h, 0Ch + db 0FFh, 76h, 0Ah, 0Eh, 0E8h, 4Bh, 0D4h, 0Bh, 0C0h, 75h + db 3, 0E9h, 0A1h, 0, 8Eh, 0C6h, 26h, 0A3h, 2 dup(0), 8Dh + db 7Eh, 0E0h, 57h, 56h, 0FFh, 76h, 0Ch, 0FFh, 76h, 0Ah + db 0FFh, 76h, 8, 0FFh, 76h, 6, 0E8h, 9Ch, 0, 0Bh, 0C0h + db 75h, 77h, 0B8h, 0D0h, 1Eh, 26h, 0A3h, 4, 0, 0A0h, 82h + db 2, 26h, 0A2h, 1Eh, 0, 36h, 8Bh, 5, 3Dh, 88h, 0F3h, 74h + db 0Ah, 3Dh, 2 dup(95h), 74h, 0Fh, 0B8h, 5, 0, 0EBh, 57h + db 26h, 0A1h, 4, 0, 26h, 0A3h, 2, 0, 0EBh, 15h, 26h, 0C7h + db 6, 2, 0, 3Eh, 1Eh, 26h, 0C7h, 6, 1Ah, 3 dup(0), 26h + db 0C7h, 6, 1Ch, 0, 2 dup(0FFh), 36h, 8Bh, 45h, 10h, 36h + db 8Bh, 55h, 12h, 26h, 0A3h, 6, 0, 26h, 89h, 16h, 8, 0 + db 36h, 8Bh, 45h, 14h, 36h, 8Bh, 55h, 16h, 26h, 0A3h, 16h + db 0, 26h, 89h, 16h, 18h, 0, 33h, 0C0h, 26h, 0A3h, 0Ah + db 0, 26h, 0A3h, 0Ch, 0, 26h, 0A3h, 12h, 0, 26h, 0A3h + db 14h, 0, 8Bh, 0C6h, 0EBh, 1Ah, 0A3h, 80h, 2, 26h, 0FFh + db 36h, 2 dup(0), 0Eh, 0E8h, 5Dh, 0D2h, 56h, 0Eh, 0E8h + db 80h, 0F6h, 0EBh, 5, 0C6h, 6, 80h, 2, 3, 33h, 0C0h, 5Fh + db 5Eh, 0C9h, 0CAh, 8, 0, 90h, 0C8h, 6, 2 dup(0), 56h + db 57h, 6, 8Bh, 76h, 0Ch, 8Eh, 0C6h, 33h, 0C0h, 26h, 0A3h + db 0Eh, 0, 26h, 0A3h, 10h, 0, 1Eh, 56h, 0FCh, 33h, 0DBh + db 8Bh, 0D3h, 0C5h, 76h, 8, 0ACh, 3Ch, 0, 74h, 0Bh, 3Ch + db 2Eh, 75h, 0F7h, 8Dh, 5Ch, 0FFh, 8Ch, 0DAh, 0EBh + db 0F0h, 5Eh, 1Fh, 8Bh, 0C2h, 0Bh, 0C3h, 74h, 0, 8Bh, 7Eh + db 0Eh, 0C6h, 6, 0B1h, 5, 0, 8Eh, 0C6h, 16h, 57h, 6Ah + db 20h, 26h, 0FFh, 36h, 2 dup(0), 0Eh, 0E8h, 93h, 0D3h + db 0FEh, 6, 0B1h, 5, 80h, 3Eh, 0B1h, 5, 0FFh, 0BBh, 2 + db 0, 74h, 40h, 3Dh, 20h, 0, 75h, 3Bh, 8Eh, 0C6h, 26h + db 1, 6, 0Eh, 0, 26h, 83h, 16h, 10h, 2 dup(0), 36h, 8Bh + db 5, 23h, 0C0h, 0BBh, 6, 0, 74h, 24h, 8Dh, 5Dh, 3, 36h + db 80h, 3Fh, 0, 74h, 6, 36h, 0F6h, 17h, 43h, 0EBh, 0F4h + db 8Dh, 5Dh, 3, 0FFh, 76h, 6, 0FFh, 76h, 4, 16h, 53h, 0E8h + db 30h, 0, 0B8h, 2 dup(0), 75h, 4, 0EBh, 0A3h, 8Bh, 0C3h + db 8Eh, 0C6h, 36h, 8Bh, 45h, 18h, 36h, 8Bh, 55h, 1Ah, 26h + db 0A3h, 0Eh, 0, 26h, 89h, 16h, 10h, 0, 26h, 0FFh, 36h + db 2 dup(0), 52h, 50h, 6Ah, 0, 0Eh, 0E8h, 95h, 0D3h, 7 + db 5Fh, 5Eh, 0C9h, 0C2h, 0Ch, 0 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+8] + lds si, [bp+4] + +loc_32FC: ; CODE XREF: seg000:331Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_3309 + sub al, 20h ; ' ' + +loc_3309: ; CODE XREF: seg000:3305j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_3314 + sub ah, 20h ; ' ' + +loc_3314: ; CODE XREF: seg000:330Fj + cmp ah, al + jnz short loc_331E + add al, 61h ; 'a' + jnz short loc_32FC + jmp short loc_3320 +; --------------------------------------------------------------------------- + +loc_331E: ; CODE XREF: seg000:3316j + xor ax, ax + +loc_3320: ; CODE XREF: seg000:331Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_3328 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 0C32h + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_3328 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_4837 + pop cx + nop + push cs + call near ptr sub_3328 +_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_E282, 20h ; ' ' + jnz short loc_33A5 + mov ax, 1 + jmp short loc_33C1 +; --------------------------------------------------------------------------- + +loc_33A5: ; CODE XREF: _atexit+Aj + mov bx, word_E282 + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+22ACh], dx + mov [bx+22AAh], ax + inc word_E282 + xor ax, ax + +loc_33C1: ; 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:3B4Bp ... + +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_4152 + 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_8486+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_9996+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_3443 + mov [bp+var_6], 0 + jmp short loc_342E +; --------------------------------------------------------------------------- + +loc_3415: ; CODE XREF: __DOSENV+50j + les bx, [bp+var_4] + add word ptr [bp+var_4], 4 + push word ptr es:[bx+2] + push word ptr es:[bx] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + add [bp+var_6], ax + +loc_342E: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3443 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3415 + +loc_3443: ; 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_3461 + 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_3461: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_346B + jmp loc_3552 +; --------------------------------------------------------------------------- + +loc_346B: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_4285 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_3485 + jmp loc_3552 +; --------------------------------------------------------------------------- + +loc_3485: ; 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_34FB + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_34FB + jmp short loc_34E4 +; --------------------------------------------------------------------------- + +loc_34B8: ; 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_34E4: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3505 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_34B8 + jmp short loc_3505 +; --------------------------------------------------------------------------- + +loc_34FB: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_3505: ; 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_3547 + 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_3547: ; 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_3556 +; --------------------------------------------------------------------------- + +loc_3552: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_3556: ; 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_4D5C+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_3328+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_E2BC + 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_35B8 proc far ; CODE XREF: sub_35BD+29P sub_35BD+43P ... + push si + push di + pop di + pop si + retf +sub_35B8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_35BD 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_35EA + jmp short loc_35DA +; --------------------------------------------------------------------------- + +loc_35CA: ; CODE XREF: sub_35BD+22j + dec word_E282 + mov bx, word_E282 + mov cl, 2 + shl bx, cl + call dword ptr [bx+22AAh] + +loc_35DA: ; CODE XREF: sub_35BD+Bj + cmp word_E282, 0 + jnz short loc_35CA + nop + push cs + call __cleanup + call off_E284 + +loc_35EA: ; CODE XREF: sub_35BD+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_3611 + cmp [bp+arg_4], 0 + jnz short loc_3608 + call off_E288 + call off_E28C + +loc_3608: ; CODE XREF: sub_35BD+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_3611: ; CODE XREF: sub_35BD+3Bj + pop di + pop si + pop bp + retn 6 +sub_35BD 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_35BD + 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_3328+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_35BD + 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_35BD + 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_35BD + pop di + pop si + retf +__c_exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +LXMUL@ proc far ; CODE XREF: sub_C110+38P sub_C110+63P + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_366B + mul bx + +loc_366B: ; CODE XREF: LXMUL@+5j + jcxz short loc_3672 + xchg ax, cx + mul si + add ax, cx + +loc_3672: ; CODE XREF: LXMUL@:loc_366Bj + xchg ax, si + mul bx + add dx, si + pop si + retf +LXMUL@ endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +SCOPY@ proc far ; CODE XREF: sub_B86E+12P sub_B86E+23P ... + +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:47CFp + +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:4714p seg000:4811p ... + +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 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +LDIV@ proc far ; CODE XREF: sub_B3FD+33P sub_B3FD+5BP + xor cx, cx + jmp short loc_36DA +LDIV@ endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_82D3+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_36DA +N_LUDIV@ endp + +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +F_LMOD@ proc far ; CODE XREF: sub_B3FD:loc_B443P + mov cx, 2 + jmp short loc_36DA +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_36DA: ; CODE XREF: LDIV@+2j 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_36F9 + or dx, dx + jz short loc_375E + or bx, bx + jz short loc_375E + +loc_36F9: ; CODE XREF: F_LMOD@+20j + test di, 1 + jnz short loc_371B + or dx, dx + jns short loc_370D + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_370D: ; CODE XREF: F_LMOD@+32j + or cx, cx + jns short loc_371B + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_371B: ; CODE XREF: F_LMOD@+2Ej F_LMOD@+40j + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_3725: ; CODE XREF: F_LMOD@:loc_373Cj + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_373C + ja short loc_3737 + cmp si, bx + jb short loc_373C + +loc_3737: ; CODE XREF: F_LMOD@+62j + sub si, bx + sbb di, bp + inc ax + +loc_373C: ; CODE XREF: F_LMOD@+60j F_LMOD@+66j + loop loc_3725 + pop bx + test bx, 2 + jz short loc_374B + mov ax, si + mov dx, di + shr bx, 1 + +loc_374B: ; CODE XREF: F_LMOD@+74j + test bx, 4 + jz short loc_3758 + neg dx + neg ax + sbb dx, 0 + +loc_3758: ; CODE XREF: F_LMOD@+80j F_LMOD@+9Aj + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_375E: ; CODE XREF: F_LMOD@+24j F_LMOD@+28j + div bx + test di, 2 + jz short loc_3767 + xchg ax, dx + +loc_3767: ; CODE XREF: F_LMOD@+95j + xor dx, dx + jmp short loc_3758 +F_LMOD@ 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_3783 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_3783: ; CODE XREF: N_LXLSH@+6j + sub cl, 10h + xchg ax, dx + xor ax, ax + shl dx, cl + retf +N_LXLSH@ endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + +N_LXRSH@: + pop bx + push cs + push bx + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +LXRSH@ proc far ; CODE XREF: sub_C110+3FP sub_C110+6AP + cmp cl, 10h + jnb short loc_37A4 + mov bx, dx + shr ax, cl + sar dx, cl + neg cl + add cl, 10h + shl bx, cl + or ax, bx + retf +; --------------------------------------------------------------------------- + +loc_37A4: ; CODE XREF: LXRSH@+3j + sub cl, 10h + xchg ax, dx + cwd + sar ax, cl + retf +LXRSH@ endp + + +; =============== 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_37BF + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_37EE +; --------------------------------------------------------------------------- + +loc_37BF: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_37C7 + add dx, 1000h + +loc_37C7: ; 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_37EE + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_37BF +; --------------------------------------------------------------------------- + +loc_37EE: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_37F6 + sub dx, 1000h + +loc_37F6: ; 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_382F + cmp dx, 58h ; 'X' + jle short loc_3820 + +loc_381D: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_3820: ; CODE XREF: __IOERROR+Fj + mov word_E44A, dx + mov bx, dx + mov al, [bx+0E1Ch] + cbw + mov dx, ax + jmp short loc_383D +; --------------------------------------------------------------------------- + +loc_382F: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_E72C + jg short loc_381D + mov word_E44A, 0FFFFh + +loc_383D: ; CODE XREF: __IOERROR+21j + mov word_D6AE, 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:3C00p seg000:3C39p + +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+0DF2h], 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_3897 + jmp short loc_389C +; --------------------------------------------------------------------------- + +loc_3897: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_389C: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_3ACB + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0A0h, 38h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 38AEh + 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, 39A6h + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0E76h + 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_E4AA + 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, 3ACBh + 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_E4AE + mov ax, word_E4AC + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_E4AE, dx + mov word_E4AC, 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_3972 + mov ax, [bp+arg_0] + jmp short loc_3975 +; --------------------------------------------------------------------------- + +loc_3972: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_3975: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_397E +; --------------------------------------------------------------------------- + +loc_397A: ; CODE XREF: operator new(uint)+43j + call dword ptr word_E4AC + +loc_397E: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_4285 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_399A + mov ax, word_E4AC + or ax, seg_E4AE + jnz short loc_397A + +loc_399A: ; 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_3ACB + db 2 dup(0), 76h, 0Eh + dw seg dseg + dd byte_3A91 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0E9h, 39h + +; =============== 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:12A6o + +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, 3A01h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 0E80h + 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, 0E76h + 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_3A6A: ; DATA XREF: dseg:12C4o + 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, 0E76h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_3A91 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:39F3o + db 0Dh dup(0), 1, 0, 1, 0, 6, 3 + dw seg seg007 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_3ACB db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:38A0o seg000:39E9o + db 0Dh dup(0), 2, 0, 2, 0, 0Dh, 3Bh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Ah, 3Bh + 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_3B54 + 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_3B52 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_3B56 +; --------------------------------------------------------------------------- + +loc_3B52: ; CODE XREF: seg000:3B41j + jmp short loc_3B56 +; --------------------------------------------------------------------------- + +loc_3B54: ; CODE XREF: seg000:3B18j + xor ax, ax + +loc_3B56: ; CODE XREF: seg000:3B50j + ; seg000:loc_3B52j + 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, 0E9h, 5Bh + 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_82D3+51p sub_82D3+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_3B9B + mul bx + +loc_3B9B: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_3BA2 + xchg ax, cx + mul si + add ax, cx + +loc_3BA2: ; CODE XREF: N_LXMUL@:loc_3B9Bj + 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_3BC9 + cmp ax, bx + +locret_3BC9: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_3BF3 +; --------------------------------------------------------------------------- + +loc_3BD1: ; CODE XREF: seg000:3BF7j + mov bx, cx + add bx, bx + mov word ptr [bx+0DF2h], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+0C64h], 0FFh + add ax, 0C60h + mov bx, dx + mov [bx+0C72h], ax + inc cx + +loc_3BF3: ; CODE XREF: seg000:3BCFj + cmp cx, word_E420 + jb short loc_3BD1 + mov al, byte_E294 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_3C0E + and word_E292, 0FDFFh + +loc_3C0E: ; CODE XREF: seg000:3C06j + mov ax, 200h + push ax + test byte ptr word_E292+1, 2 + jz short loc_3C1E + mov ax, 1 + jmp short loc_3C20 +; --------------------------------------------------------------------------- + +loc_3C1E: ; CODE XREF: seg000:3C17j + xor ax, ax + +loc_3C20: ; CODE XREF: seg000:3C1Cj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0C60h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_E2A8 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_3C47 + and word_E2A6, 0FDFFh + +loc_3C47: ; CODE XREF: seg000:3C3Fj + mov ax, 200h + push ax + test byte ptr word_E2A6+1, 2 + jz short loc_3C57 + mov ax, 2 + jmp short loc_3C59 +; --------------------------------------------------------------------------- + +loc_3C57: ; CODE XREF: seg000:3C50j + xor ax, ax + +loc_3C59: ; CODE XREF: seg000:3C55j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0C74h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + pop di + pop si + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl toupper(int ch) +_toupper proc far ; CODE XREF: sub_4D5C+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_3C80 + mov ax, 0FFFFh + jmp short loc_3C9A +; --------------------------------------------------------------------------- + +loc_3C80: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_3C96 + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_3C9A +; --------------------------------------------------------------------------- + +loc_3C96: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_3C9A: ; CODE XREF: _toupper+10j _toupper+26j + pop di + pop si + pop bp + retf +_toupper endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; __RefDestructorCount(void) +@__RefDestructorCount$qv proc far ; CODE XREF: seg000:38FFp seg000:39CFp ... + 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:38CCp + ; 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:3E19p ... + +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:0F9Co + 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_3D6D + 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_3D6D: ; 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 + +; --------------------------------------------------------------------------- + db 4 dup(0), 7, 3Eh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 79h, 3Dh + dw seg seg000 + db 2 dup(0), 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_695E+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, 3D91h + 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_3DEB + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_3DEB: ; 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_3E0F +; --------------------------------------------------------------------------- + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_3E0F: ; 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:0FA0o + 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_3E61 + 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_3E61: ; 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_3E9D + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_3E9D: ; 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_3ED0 + xor ax, ax + jmp short loc_3F0A +; --------------------------------------------------------------------------- + +loc_3ED0: ; 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_3F0A: ; 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_3F24 + xor ax, ax + jmp short loc_3F62 +; --------------------------------------------------------------------------- + +loc_3F24: ; 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_3F62: ; 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, 0F92h + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_E5D6, ax + mov word_E5D4, 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_E6EA, 0 + jz short locret_4011 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_E6EA, 2 + jz short locret_4011 + 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_E6EA, 3 + mov esp, edx + jz short locret_4011 + mov word_E6EA, 4 + +locret_4011: ; CODE XREF: seg000:3FCDj seg000:3FE0j ... + retn +; --------------------------------------------------------------------------- +word_4012 dw 0 ; DATA XREF: sub_401Er sub_401E+1Dr ... +word_4014 dw 0 ; DATA XREF: sub_401E+14w sub_401E+27w ... +word_4016 dw 0 ; DATA XREF: sub_401E+4Cw sub_40F2+19w ... +word_4018 dw 0 ; DATA XREF: sub_401E+32r + ; sub_401E:loc_4071r ... +word_401A dw 0 ; DATA XREF: sub_430C+1r sub_43EC+1Aw +word_401C dw 0 ; DATA XREF: sub_430C+7r sub_43EC+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_401E proc near ; CODE XREF: sub_4152+18p + cmp dx, cs:word_4012 + jz short loc_405C + mov ds, dx + mov ds, word_D632 + cmp word_D632, 0 + jz short loc_4039 + mov cs:word_4014, ds + jmp short loc_4071 +; --------------------------------------------------------------------------- + +loc_4039: ; CODE XREF: sub_401E+12j + mov ax, ds + cmp ax, cs:word_4012 + jz short loc_4057 + mov ax, off_D638 + mov cs:word_4014, ax + push ds + xor ax, ax + push ax + call sub_40F2 + mov ds, cs:word_4018 + jmp short loc_407A +; --------------------------------------------------------------------------- + +loc_4057: ; CODE XREF: sub_401E+22j + mov dx, cs:word_4012 + +loc_405C: ; CODE XREF: sub_401E+5j + mov cs:word_4012, 0 + mov cs:word_4014, 0 + mov cs:word_4016, 0 + +loc_4071: ; CODE XREF: sub_401E+19j + mov ds, cs:word_4018 + push dx + xor ax, ax + push ax + +loc_407A: ; CODE XREF: sub_401E+37j + call __brk + add sp, 4 + retn +sub_401E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4081 proc near ; CODE XREF: sub_4152:loc_416Fp + mov ds, dx + push ds + mov es, word_D632 + mov word_D632, 0 + mov off_D638, es + cmp dx, cs:word_4012 + jz short loc_40C7 + cmp word ptr es:2, 0 + jnz short loc_40C7 + mov ax, word_D630 + 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_40C0 + mov es:8, cx + jmp short loc_40CA +; --------------------------------------------------------------------------- + +loc_40C0: ; CODE XREF: sub_4081+36j + mov es:2, cx + jmp short loc_40CA +; --------------------------------------------------------------------------- + +loc_40C7: ; CODE XREF: sub_4081+16j sub_4081+1Ej + call sub_411B + +loc_40CA: ; CODE XREF: sub_4081+3Dj sub_4081+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_D632, 0 + jz short loc_40DC + retn +; --------------------------------------------------------------------------- + +loc_40DC: ; CODE XREF: sub_4081+58j + mov ax, word_D630 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_D630 + mov es, bx + mov es:2, ax +sub_4081 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_40F2 proc near ; CODE XREF: sub_401E+2Fp sub_428F+66p + mov bx, ds + cmp bx, off_D636 + jz short loc_4113 + mov es, off_D636 + mov ds, off_D634 + mov off_D636, es + mov word ptr es:4, ds + mov cs:word_4016, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_4113: ; CODE XREF: sub_40F2+6j + mov cs:word_4016, 0 + retn +sub_40F2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_411B proc near ; CODE XREF: sub_4081:loc_40C7p + mov ax, cs:word_4016 + or ax, ax + jz short loc_4144 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov off_D634, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov off_D636, es + retn +; --------------------------------------------------------------------------- + +loc_4144: ; CODE XREF: sub_411B+6j + mov cs:word_4016, ds + mov off_D634, ds + mov off_D636, ds + retn +sub_411B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4152 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_4320+5Dp ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_4018, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_4172 + cmp dx, cs:word_4014 + jnz short loc_416F + call sub_401E + jmp short loc_4172 +; --------------------------------------------------------------------------- + +loc_416F: ; CODE XREF: sub_4152+16j + call sub_4081 + +loc_4172: ; CODE XREF: sub_4152+Fj sub_4152+1Bj + mov ds, cs:word_4018 + pop di + pop si + pop bp + retf +sub_4152 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_417B proc near ; CODE XREF: sub_428F:loc_42E4p + push ax + mov ds, cs:word_4018 + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_41A4 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_4018 + push ax + push dx + call __sbrk + add sp, 4 + +loc_41A4: ; CODE XREF: sub_417B+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_4018 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_41DB + mov cs:word_4012, dx + mov cs:word_4014, dx + mov ds, dx + mov word_D630, bx + mov word_D632, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_41DB: ; CODE XREF: sub_417B+46j + xor ax, ax + cwd + retn +sub_417B endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_41DF proc near ; CODE XREF: sub_428F:loc_42DFp + push ax + mov ds, cs:word_4018 + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_4207 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_4018 + push ax + push dx + call __sbrk + add sp, 4 + +loc_4207: ; CODE XREF: sub_41DF+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_4018 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_425E + and ax, 0Fh + jnz short loc_4243 + +loc_422B: ; CODE XREF: sub_41DF+7Dj + mov cx, cs:word_4014 + mov cs:word_4014, dx + mov ds, dx + mov word_D630, bx + mov word_D632, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4243: ; CODE XREF: sub_41DF+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_425E + inc dx + jmp short loc_422B +; --------------------------------------------------------------------------- + +loc_425E: ; CODE XREF: sub_41DF+45j sub_41DF+7Aj + xor ax, ax + cwd + retn +sub_41DF endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4262 proc near ; CODE XREF: sub_428F:loc_42E9p + mov bx, dx + sub word_D630, ax + add dx, word_D630 + mov ds, dx + mov word_D630, ax + mov word_D632, bx + mov bx, dx + add bx, word_D630 + mov ds, bx + mov word_D632, dx + mov ax, 4 + retn +sub_4262 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4285 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_4298 +sub_4285 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_428F proc far ; CODE XREF: sub_430C+Ep sub_43EC+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_4298: ; CODE XREF: sub_4285+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_4018, ds + jz short loc_4303 + add ax, 13h + adc dx, 0 + jb short loc_42EE + test dx, 0FFF0h + jnz short loc_42EE + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_4012 + or dx, dx + jz short loc_42E4 + mov dx, cs:word_4016 + or dx, dx + jz short loc_42DF + mov bx, dx + +loc_42CF: ; CODE XREF: sub_428F+4Ej + mov ds, dx + cmp word_D630, ax + jnb short loc_42F3 + mov dx, off_D636 + cmp dx, bx + jnz short loc_42CF + +loc_42DF: ; CODE XREF: sub_428F+3Cj + call sub_41DF + jmp short loc_4303 +; --------------------------------------------------------------------------- + +loc_42E4: ; CODE XREF: sub_428F+33j + call sub_417B + jmp short loc_4303 +; --------------------------------------------------------------------------- + +loc_42E9: ; CODE XREF: sub_428F:loc_42F3j + call sub_4262 + jmp short loc_4303 +; --------------------------------------------------------------------------- + +loc_42EE: ; CODE XREF: sub_428F+1Cj sub_428F+22j + xor ax, ax + cwd + jmp short loc_4303 +; --------------------------------------------------------------------------- + +loc_42F3: ; CODE XREF: sub_428F+46j + ja short loc_42E9 + call sub_40F2 + mov bx, off_D638 + mov word_D632, bx + mov ax, offset off_D634 + +loc_4303: ; CODE XREF: sub_428F+14j sub_428F+53j ... + mov ds, cs:word_4018 + pop di + pop si + pop bp + retf +sub_428F endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_430C proc near ; CODE XREF: sub_43EC:loc_4448p + push bx + mov si, cs:word_401A + push si + mov si, cs:word_401C + push si + push cs + call near ptr sub_428F + add sp, 4 +sub_430C endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc near ; CODE XREF: sub_6687+7Bp sub_6687+9Ap ... + or dx, dx + jnz short loc_4326 + pop bx + retn +; --------------------------------------------------------------------------- + +loc_4326: ; CODE XREF: sub_4320+2j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_D630 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_4377 + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_434A: ; CODE XREF: sub_4320+55j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_4359 + mov cx, 1000h + +loc_4359: ; CODE XREF: sub_4320+34j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_4377 + 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_434A +; --------------------------------------------------------------------------- + +loc_4377: ; CODE XREF: sub_4320+1Ej sub_4320+45j + mov ds, cs:word_4018 + assume ds:dseg + push cs + call near ptr sub_4152 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_4320 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4388 proc near ; CODE XREF: sub_43EC:loc_4443p + cmp bx, cs:word_4014 + jz short loc_43D4 + 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_43C0 + mov es:2, di + jmp short loc_43C5 +; --------------------------------------------------------------------------- + +loc_43C0: ; CODE XREF: sub_4388+2Fj + mov es:8, di + +loc_43C5: ; CODE XREF: sub_4388+36j + mov si, bx + push cs + call near ptr sub_4152 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_43D4: ; CODE XREF: sub_4388+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_4388 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_43EC proc far ; CODE XREF: sub_4D5C+2DDp + ; seg007:074FP ... + +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_43F9 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_43F9: ; CODE XREF: sub_43EC+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_4018, ds + mov cs:word_401A, dx + mov cs:word_401C, ax + or bx, bx + jz short loc_444D + mov cx, ax + or cx, dx + jz short loc_4458 + add ax, 13h + adc dx, 0 + jb short loc_4461 + test dx, 0FFF0h + jnz short loc_4461 + 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_4448 + ja short loc_4443 + mov dx, bx + mov ax, 4 + jmp short loc_4464 +; --------------------------------------------------------------------------- + +loc_4443: ; CODE XREF: sub_43EC+4Ej + call sub_4388 + jmp short loc_4464 +; --------------------------------------------------------------------------- + +loc_4448: ; CODE XREF: sub_43EC+4Cj + call sub_430C + jmp short loc_4464 +; --------------------------------------------------------------------------- + +loc_444D: ; CODE XREF: sub_43EC+25j + push dx + push ax + push cs + call near ptr sub_428F + add sp, 4 + jmp short loc_4464 +; --------------------------------------------------------------------------- + +loc_4458: ; CODE XREF: sub_43EC+2Bj + push bx + push ax + push cs + call near ptr sub_4152 + add sp, 4 + +loc_4461: ; CODE XREF: sub_43EC+33j sub_43EC+39j + xor ax, ax + cwd + +loc_4464: ; CODE XREF: sub_43EC+55j sub_43EC+5Aj ... + mov ds, cs:word_4018 + pop di + pop si + pop bp + retf +sub_43EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_446D 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_E6EC + jz short loc_44D1 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_D6BE + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_44B2 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_44B2: ; CODE XREF: sub_446D+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_44E3 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_E6EC, ax + +loc_44D1: ; CODE XREF: sub_446D+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_D6BA, dx + mov word_D6B8, ax + mov ax, 1 + jmp short loc_44F3 +; --------------------------------------------------------------------------- + +loc_44E3: ; CODE XREF: sub_446D+58j + mov ax, segx + add ax, dx + mov word_D6BE, ax + mov word_D6BC, 0 + xor ax, ax + +loc_44F3: ; CODE XREF: sub_446D+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_446D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_401E:loc_407Ap + ; sub_4388+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_D6B6 + mov bx, word_D6B4 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_4533 + mov cx, word_D6BE + mov bx, word_D6BC + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_4533 + push [bp+arg_2] + push [bp+arg_0] + call sub_446D + or ax, ax + jnz short loc_4538 + +loc_4533: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_453A +; --------------------------------------------------------------------------- + +loc_4538: ; CODE XREF: __brk+36j + xor ax, ax + +loc_453A: ; 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_417B+Ap sub_417B+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_D6BA + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_D6B8 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_4569 + jg short loc_45B9 + cmp ax, 0FFFFh + ja short loc_45B9 + +loc_4569: ; CODE XREF: __sbrk+22j + mov dx, word_D6BA + mov ax, word_D6B8 + 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_D6B6 + mov bx, word_D6B4 + call N_PCMP@ + jb short loc_45B9 + mov cx, word_D6BE + mov bx, word_D6BC + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_45B9 + mov dx, word_D6BA + mov ax, word_D6B8 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_446D + or ax, ax + jnz short loc_45C1 + +loc_45B9: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_45C7 +; --------------------------------------------------------------------------- + +loc_45C1: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_45C7: ; 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_E6FA + mov ax, word_E6F8 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_45F6 + cmp ax, 1 + jz short loc_4633 + +loc_45F6: ; CODE XREF: seg000:45EFj + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_460A + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4614 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4614 + +loc_460A: ; CODE XREF: seg000:45FCj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4614: ; CODE XREF: seg000:4602j seg000:4608j + mov word_E6FA, 0 + mov word_E6F8, 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_4633: ; CODE XREF: seg000:45F4j + 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_E6FA + mov ax, word_E6F8 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_4668 + cmp ax, 1 + jz short loc_46A5 + +loc_4668: ; CODE XREF: seg000:4661j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_467C + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4686 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4686 + +loc_467C: ; CODE XREF: seg000:466Ej + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4686: ; CODE XREF: seg000:4674j seg000:467Aj + mov word_E6FA, 0 + mov word_E6F8, 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_46A5: ; CODE XREF: seg000:4666j + 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_E6F2 + mov ax, word_E6F0 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_46DC + cmp ax, 1 + jz short loc_4721 + +loc_46DC: ; CODE XREF: seg000:46D5j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_46F0 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_46FA + cmp word ptr [bp-4], 0FFFFh + jnz short loc_46FA + +loc_46F0: ; CODE XREF: seg000:46E2j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_46FA: ; CODE XREF: seg000:46E8j seg000:46EEj + mov word_E6F2, 0 + mov word_E6F0, 0 + push word_F964 + push word_F962 + 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_4721: ; CODE XREF: seg000:46DAj + 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_4730 proc far ; CODE XREF: seg000:4779p sub_4837+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_4737: ; CODE XREF: sub_4730+1Cj + mov bx, dx + mov al, [bx+10D8h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_4748 + mov ax, dx + jmp short loc_4751 +; --------------------------------------------------------------------------- + +loc_4748: ; CODE XREF: sub_4730+12j + inc dx + cmp dx, 6 + jl short loc_4737 + mov ax, 0FFFFh + +loc_4751: ; CODE XREF: sub_4730+16j + pop di + pop si + pop bp + retf +sub_4730 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_E6EF, 0 + jnz short loc_4775 + mov word_F95C, seg seg000 + mov word_F95A, 4755h + mov byte_E6EF, 1 + +loc_4775: ; CODE XREF: seg000:4762j + push word ptr [bp+6] + push cs + call near ptr sub_4730 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_4794 + mov word_D6AE, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_4831 +; --------------------------------------------------------------------------- + +loc_4794: ; CODE XREF: seg000:4783j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+10C2h] + mov ax, [bx+10C0h] + 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+10C2h], dx + mov [bx+10C0h], ax + cmp word ptr [bp+6], 2 + jnz short loc_47FE + cmp byte_E6EE, 0 + jnz short loc_47DF + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_F964, dx + mov word_F962, ax + mov byte_E6EE, 1 + +loc_47DF: ; CODE XREF: seg000:47C7j + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_47F1 + push word_F964 + push word_F962 + jmp short loc_47F9 +; --------------------------------------------------------------------------- + +loc_47F1: ; CODE XREF: seg000:47E5j + mov ax, seg seg000 + push ax + mov ax, 46B1h + push ax + +loc_47F9: ; CODE XREF: seg000:47EFj + mov ax, 23h ; '#' + jmp short loc_4822 +; --------------------------------------------------------------------------- + +loc_47FE: ; CODE XREF: seg000:47C0j + cmp word ptr [bp+6], 8 + jnz short loc_482B + mov ax, seg seg000 + push ax + mov ax, 45CDh + 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, 463Fh + push ax + mov ax, 4 + +loc_4822: ; CODE XREF: seg000:47FCj + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_482B: ; CODE XREF: seg000:4802j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_4831: ; CODE XREF: seg000:4791j + 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_4837 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_4730 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_4854 + mov ax, 1 + jmp short loc_48C8 +; --------------------------------------------------------------------------- + +loc_4854: ; CODE XREF: sub_4837+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+10C2h] + mov ax, [bx+10C0h] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_4872 + cmp ax, 1 + jz short loc_48C6 + +loc_4872: ; CODE XREF: sub_4837+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_48A1 + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_488C + cmp ax, 16h + jnz short loc_4895 + nop + push cs + call near ptr sub_3328 +; --------------------------------------------------------------------------- + +loc_488C: ; CODE XREF: sub_4837+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_4895: ; CODE XREF: sub_4837+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_48C6 +; --------------------------------------------------------------------------- + +loc_48A1: ; CODE XREF: sub_4837+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+10C2h], 0 + mov word ptr [bx+10C0h], 0 + mov bx, [bp+var_2] + mov al, [bx+10DEh] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_48C6: ; CODE XREF: sub_4837+39j sub_4837+68j + xor ax, ax + +loc_48C8: ; CODE XREF: sub_4837+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4837 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_52A4+A8p sub_990D+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_48ED + jmp short loc_4905 +; --------------------------------------------------------------------------- + +loc_48ED: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_48F8 + test dl, 1 + jnz short loc_48FC + +loc_48F8: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_4905 +; --------------------------------------------------------------------------- + +loc_48FC: ; CODE XREF: __access+28j + mov word_D6AE, 5 + mov ax, 0FFFFh + +loc_4905: ; 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, 0E4h, 10h, 0Bh, 6, 0E6h, 10h, 75h, 27h + db 0BEh, 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h + db 8Ch, 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h + db 5, 83h, 0FEh, 0FFh, 75h, 6, 0BEh, 0E8h, 10h, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_E714, si + mov word ptr dword_E714+2, ax + mov sp, bp + pop es + pop ds + pop di + pop si + pop bp + pop bx + pop bx + pop dx + pop cx + pop ax + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4952 proc far ; CODE XREF: sub_4977+35p + ; sub_4D5C+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_E714 + +loc_4960: ; CODE XREF: sub_4952+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_4972 + cmp al, dl + jb short loc_4972 + inc bx + inc bx + cmp al, dh + ja short loc_4960 + inc cx + +loc_4972: ; CODE XREF: sub_4952+13j sub_4952+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_4952 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4977 proc far ; CODE XREF: sub_4D22+23p + ; sub_4D5C+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_498D: ; CODE XREF: sub_4977+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_499A + xor cx, cx + jmp short loc_49C8 +; --------------------------------------------------------------------------- + +loc_499A: ; CODE XREF: sub_4977+1Dj + cmp cx, 1 + jnz short loc_49A4 + mov cx, 2 + jmp short loc_49BB +; --------------------------------------------------------------------------- + +loc_49A4: ; CODE XREF: sub_4977+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_4952 + pop cx + or ax, ax + jz short loc_49B9 + mov cx, 1 + jmp short loc_49BB +; --------------------------------------------------------------------------- + +loc_49B9: ; CODE XREF: sub_4977+3Bj + xor cx, cx + +loc_49BB: ; CODE XREF: sub_4977+2Bj sub_4977+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_49C8 + inc word ptr [bp+var_4] + jmp short loc_498D +; --------------------------------------------------------------------------- + +loc_49C8: ; CODE XREF: sub_4977+21j sub_4977+4Aj + or cx, cx + jnz short loc_49D1 + mov ax, 1 + jmp short loc_49D3 +; --------------------------------------------------------------------------- + +loc_49D1: ; CODE XREF: sub_4977+53j + xor ax, ax + +loc_49D3: ; CODE XREF: sub_4977+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4977 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_49F2 + xchg ax, cx + jmp short loc_49F6 +; --------------------------------------------------------------------------- + +loc_49F2: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_49F6: ; 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_4A12 + nop + push cs + call near ptr _flushall + jmp loc_4AC3 +; --------------------------------------------------------------------------- + +loc_4A12: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_4A21 + jmp loc_4ABE +; --------------------------------------------------------------------------- + +loc_4A21: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_4A78 + test byte ptr es:[bx+2], 8 + jnz short loc_4A49 + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_4A43 + jmp loc_4AC3 +; --------------------------------------------------------------------------- + +loc_4A43: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_4AC3 + +loc_4A49: ; 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_4AC3 + cmp es:[bx+0Ch], ax + jnz short loc_4AC3 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_4AC3 +; --------------------------------------------------------------------------- + +loc_4A78: ; 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_4AC3 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_4AC3 + or word ptr es:[bx+2], 10h + +loc_4ABE: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_4AC5 +; --------------------------------------------------------------------------- + +loc_4AC3: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_4AC5: ; 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_E420 + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 0C60h + jmp short loc_4B04 +; --------------------------------------------------------------------------- + +loc_4AE8: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_4B00 + 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_4B00: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_4B04: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_4AE8 + 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_4B17 proc near ; CODE XREF: _fseek+2Ep sub_4C4C+8Fp ... + +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_4B34 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_4B41 +; --------------------------------------------------------------------------- + +loc_4B34: ; CODE XREF: sub_4B17+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_4B41: ; CODE XREF: sub_4B17+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_4B95 + 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_4B8E + jmp short loc_4B76 +; --------------------------------------------------------------------------- + +loc_4B67: ; CODE XREF: sub_4B17+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4B76 + inc [bp+var_2] + +loc_4B76: ; CODE XREF: sub_4B17+4Ej sub_4B17+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_4B67 + jmp short loc_4B95 +; --------------------------------------------------------------------------- + +loc_4B7F: ; CODE XREF: sub_4B17+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4B8E + inc [bp+var_2] + +loc_4B8E: ; CODE XREF: sub_4B17+4Cj sub_4B17+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_4B7F + +loc_4B95: ; CODE XREF: sub_4B17+35j sub_4B17+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_4B17 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_4BBB + mov ax, 0FFFFh + jmp short loc_4C1E +; --------------------------------------------------------------------------- + +loc_4BBB: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_4BD8 + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_4BD8 + push word ptr [bp+stream+2] + push bx + call sub_4B17 + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_4BD8: ; 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_4C1C + cmp ax, 0FFFFh + jnz short loc_4C1C + mov ax, 0FFFFh + jmp short loc_4C1E +; --------------------------------------------------------------------------- + +loc_4C1C: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_4C1E: ; 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 near + +var_4 = word ptr -4 +var_2 = word ptr -2 +stream = dword ptr 4 + + 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+2] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov [bp+var_2], dx + mov [bp+var_4], ax + cmp dx, 0FFFFh +_ftell endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4C4C proc far ; CODE XREF: sub_9996+22Fp + ; DATA XREF: dseg:off_D636o + jnz short loc_4C56 + cmp ax, 0FFFFh + jnz short loc_4C56 + jmp loc_4CF7 +; --------------------------------------------------------------------------- + +loc_4C56: ; CODE XREF: sub_4C4Cj sub_4C4C+5j + les bx, [bp+6] + cmp word ptr es:[bx], 0 + jl short loc_4C62 + jmp loc_4CE7 +; --------------------------------------------------------------------------- + +loc_4C62: ; CODE XREF: sub_4C4C+11j + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+0DF3h], 8 + jz short loc_4CD5 + mov ax, 2 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + mov bx, [bp+6] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov [bp-6], dx + mov [bp-8], ax + cmp dx, 0FFFFh + jnz short loc_4C9D + cmp ax, 0FFFFh + jnz short loc_4C9D + jmp short loc_4CFD +; --------------------------------------------------------------------------- + +loc_4C9D: ; CODE XREF: sub_4C4C+48j sub_4C4C+4Dj + xor ax, ax + push ax ; fromwhere + push word ptr [bp-2] + push word ptr [bp-4] ; offset + les bx, [bp+6] + 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_4CC9 + cmp ax, 0FFFFh + jnz short loc_4CC9 + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_4CFD +; --------------------------------------------------------------------------- + +loc_4CC9: ; CODE XREF: sub_4C4C+6Ej sub_4C4C+73j + mov dx, [bp-6] + mov ax, [bp-8] + mov [bp-2], dx + mov [bp-4], ax + +loc_4CD5: ; CODE XREF: sub_4C4C+24j + push word ptr [bp+8] + push word ptr [bp+6] + call sub_4B17 + cwd + add [bp-4], ax + adc [bp-2], dx + jmp short loc_4CF7 +; --------------------------------------------------------------------------- + +loc_4CE7: ; CODE XREF: sub_4C4C+13j + push word ptr [bp+8] + push word ptr [bp+6] + call sub_4B17 + cwd + sub [bp-4], ax + sbb [bp-2], dx + +loc_4CF7: ; CODE XREF: sub_4C4C+7j sub_4C4C+99j + mov dx, [bp-2] + mov ax, [bp-4] + +loc_4CFD: ; CODE XREF: sub_4C4C+4Fj sub_4C4C+7Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4C4C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4D03 proc near ; CODE XREF: sub_4D22+Ep sub_4D5C+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_4D15 + cmp ax, 2Fh ; '/' + jnz short loc_4D1A + +loc_4D15: ; CODE XREF: sub_4D03+Bj + mov ax, 1 + jmp short loc_4D1C +; --------------------------------------------------------------------------- + +loc_4D1A: ; CODE XREF: sub_4D03+10j + xor ax, ax + +loc_4D1C: ; CODE XREF: sub_4D03+15j + pop di + pop si + pop bp + retn 2 +sub_4D03 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4D22 proc near ; CODE XREF: sub_4D5C+CDp + ; sub_4D5C+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_4D03 + or ax, ax + jz short loc_4D54 + 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_4977 + add sp, 8 + or ax, ax + jz short loc_4D54 + mov ax, 1 + jmp short loc_4D56 +; --------------------------------------------------------------------------- + +loc_4D54: ; CODE XREF: sub_4D22+13j sub_4D22+2Bj + xor ax, ax + +loc_4D56: ; CODE XREF: sub_4D22+30j + pop di + pop si + pop bp + retn 8 +sub_4D22 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4D5C proc far ; CODE XREF: sub_52A4+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_4285 + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_4D7B + jmp loc_4FBE +; --------------------------------------------------------------------------- + +loc_4D7B: ; CODE XREF: sub_4D5C+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+0E91h], 0Ch + jz short loc_4DBB + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_4DBB + mov al, es:[bx] + cbw + mov [bp+var_10], ax + push ax ; ch + nop + push cs + call near ptr _toupper + pop cx + add ax, 0FFC0h + mov [bp+drive], ax + add word ptr [bp+src], 2 + jmp short loc_4DD1 +; --------------------------------------------------------------------------- + +loc_4DBB: ; CODE XREF: sub_4D5C+39j sub_4D5C+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_4DD1: ; CODE XREF: sub_4D5C+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_4D03 + or ax, ax + jnz short loc_4E39 + 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_4E09 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + jmp loc_4FBE +; --------------------------------------------------------------------------- + +loc_4E09: ; CODE XREF: sub_4D5C+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_4D22 + or ax, ax + jnz short loc_4E5B + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_4E58 +; --------------------------------------------------------------------------- + +loc_4E39: ; CODE XREF: sub_4D5C+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_4E58: ; CODE XREF: sub_4D5C+DBj + inc word ptr [bp+dest] + +loc_4E5B: ; CODE XREF: sub_4D5C+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_4E81: ; CODE XREF: sub_4D5C+28Cj + ; sub_4D5C+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_4E9D + push ax + call sub_4D03 + or ax, ax + jnz short loc_4E9D + jmp loc_4FCF +; --------------------------------------------------------------------------- + +loc_4E9D: ; CODE XREF: sub_4D5C+134j + ; sub_4D5C+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4EC4 + 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_4D22 + or ax, ax + jz short loc_4EC4 + sub word ptr [bp+dest], 2 + jmp short loc_4F3B +; --------------------------------------------------------------------------- + +loc_4EC4: ; CODE XREF: sub_4D5C+149j + ; sub_4D5C+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4F3B + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_4F3B + 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_4D22 + or ax, ax + jz short loc_4F3B + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4F24 + 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_4977 + add sp, 8 + or ax, ax + jz short loc_4F24 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + jmp loc_4FBE +; --------------------------------------------------------------------------- + +loc_4F24: ; CODE XREF: sub_4D5C+19Cj + ; sub_4D5C+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_4D22 + or ax, ax + jz short loc_4F24 + +loc_4F3B: ; CODE XREF: sub_4D5C+166j + ; sub_4D5C+170j ... + cmp [bp+var_E], 0 + jz short loc_4F44 + jmp loc_4FC4 +; --------------------------------------------------------------------------- + +loc_4F44: ; CODE XREF: sub_4D5C+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_4D22 + or ax, ax + jz short loc_4F5C + dec word ptr [bp+dest] + +loc_4F5C: ; CODE XREF: sub_4D5C+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4F8A + 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_4977 + add sp, 8 + or ax, ax + jz short loc_4F8A + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_4F8A: ; CODE XREF: sub_4D5C+208j + ; sub_4D5C+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_4FAC + jmp loc_5030 +; --------------------------------------------------------------------------- + +loc_4FAC: ; CODE XREF: sub_4D5C+24Bj + cmp dx, [bp+arg_8] + jbe short loc_5009 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + +loc_4FBE: ; CODE XREF: sub_4D5C+1Cj sub_4D5C+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_503F +; --------------------------------------------------------------------------- + +loc_4FC4: ; CODE XREF: sub_4D5C+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_5003 +; --------------------------------------------------------------------------- + +loc_4FCF: ; CODE XREF: sub_4D5C+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_4952 + pop cx + or ax, ax + jnz short loc_4FEB + jmp loc_4E81 +; --------------------------------------------------------------------------- + +loc_4FEB: ; CODE XREF: sub_4D5C+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_4FF7 + jmp loc_4E81 +; --------------------------------------------------------------------------- + +loc_4FF7: ; CODE XREF: sub_4D5C+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_5003: ; CODE XREF: sub_4D5C+271j + inc word ptr [bp+dest] + jmp loc_4E81 +; --------------------------------------------------------------------------- + +loc_5009: ; CODE XREF: sub_4D5C+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_4152 + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_503F +; --------------------------------------------------------------------------- + +loc_5030: ; CODE XREF: sub_4D5C+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_43EC + add sp, 6 + +loc_503F: ; CODE XREF: sub_4D5C+266j + ; sub_4D5C+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4D5C 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_4D5C+93p sub_52A4+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_5061 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_5061: ; 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_50BD + 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_509C + mov word_D6AE, 22h ; '"' + jmp short loc_50BD +; --------------------------------------------------------------------------- + +loc_509C: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_50C3 + push [bp+len] + nop + push cs + call near ptr sub_4285 + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_50C3 + mov word_D6AE, 8 + +loc_50BD: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_50DC +; --------------------------------------------------------------------------- + +loc_50C3: ; 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_50DC: ; 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_9996+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_5113 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_5113 + les di, dword_E740 + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_5120 + +loc_5113: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_514C +; --------------------------------------------------------------------------- + +loc_5119: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_5120: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_5113 + mov al, es:[di] + or al, al + jz short loc_5113 + cmp ah, al + jnz short loc_5119 + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_5119 + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_5119 + inc di + mov ax, di + mov dx, es + +loc_514C: ; CODE XREF: _getenv+35j + pop di + pop si + mov sp, bp + pop bp + retf +_getenv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl memcmp(const void *s1, const void *s2, size_t n) +_memcmp proc far ; CODE XREF: __CurrExcContext+39p + +s1 = dword ptr 6 +s2 = dword ptr 0Ah +n = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push ds + mov ax, [bp+n] + mov cx, ax + jcxz short loc_5173 + 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_5173: ; 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_695E+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_5192 + movsb + +loc_5192: ; 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_51B9 + jcxz short loc_51C0 + stosb + dec cx + +loc_51B9: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_51C0 + stosb + +loc_51C0: ; 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_760A+CFp seg007:09D3P + +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_5203 + std + mov ax, 1 + jmp short loc_5206 +; --------------------------------------------------------------------------- + +loc_5203: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_5206: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_5219 + add si, cx + dec si + add di, cx + dec di + +loc_5219: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_5223 + jcxz short loc_5232 + movsb + dec cx + +loc_5223: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_5232 + add si, ax + add di, ax + movsb + +loc_5232: ; 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: seg007:098FP seg007:09B8P + +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_990D+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_5284 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 10F4h + +loc_5284: ; 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_52A4 + 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_52A4(char *src, __int32, char *pathname) +sub_52A4 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_52C9 + xor dx, dx + jmp short loc_52D8 +; --------------------------------------------------------------------------- + +loc_52C9: ; CODE XREF: sub_52A4+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_52D8: ; CODE XREF: sub_52A4+23j sub_52A4+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_532D + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_52FE + cmp bl, 2Fh ; '/' + jz short loc_52FE + cmp bl, 3Ah ; ':' + jnz short loc_531A + +loc_52FE: ; CODE XREF: sub_52A4+4Ej sub_52A4+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_4977 + add sp, 8 + or ax, ax + jnz short loc_532D + +loc_531A: ; CODE XREF: sub_52A4+58j + push ds + mov ax, 10F6h + 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_532D: ; CODE XREF: sub_52A4+3Fj sub_52A4+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_53A1 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5368 + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_53E0 +; --------------------------------------------------------------------------- + +loc_5368: ; CODE XREF: sub_52A4+B9j + xor dx, dx + jmp short loc_5380 +; --------------------------------------------------------------------------- + +loc_536C: ; CODE XREF: sub_52A4+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_5380: ; CODE XREF: sub_52A4+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_538F + cmp byte ptr es:[bx], 0 + jnz short loc_536C + +loc_538F: ; CODE XREF: sub_52A4+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_539B + jmp loc_52D8 +; --------------------------------------------------------------------------- + +loc_539B: ; CODE XREF: sub_52A4+F2j + inc word ptr [bp+arg_4] + jmp loc_52D8 +; --------------------------------------------------------------------------- + +loc_53A1: ; CODE XREF: sub_52A4+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_4D5C + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_53E0 + 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_4152 + add sp, 0Ch + +loc_53E0: ; CODE XREF: sub_52A4+C2j + ; sub_52A4+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_52A4 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:3C2Cp seg000:3C65p + +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_53FA + jmp loc_54D1 +; --------------------------------------------------------------------------- + +loc_53FA: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_5403 + jmp loc_54D1 +; --------------------------------------------------------------------------- + +loc_5403: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_540D + jmp loc_54D1 +; --------------------------------------------------------------------------- + +loc_540D: ; CODE XREF: _setvbuf+22j + cmp word_E72A, 0 + jnz short loc_5423 + cmp word ptr [bp+stream], 0C74h + jnz short loc_5423 + mov word_E72A, 1 + jmp short loc_5437 +; --------------------------------------------------------------------------- + +loc_5423: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_E728, 0 + jnz short loc_5437 + cmp word ptr [bp+stream], 0C60h + jnz short loc_5437 + mov word_E728, 1 + +loc_5437: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_5454 + 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_5454: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_546D + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + +loc_546D: ; 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_5501 + cmp [bp+_size], 0 + jbe short loc_5501 + mov word ptr off_E284+2, seg seg000 + mov word ptr off_E284, 580Fh + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_54D6 + push [bp+_size] + nop + push cs + call near ptr sub_4285 + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_54D1 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_54D6 +; --------------------------------------------------------------------------- + +loc_54D1: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_5503 +; --------------------------------------------------------------------------- + +loc_54D6: ; 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_5501 + or word ptr es:[bx+2], 8 + +loc_5501: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_5503: ; 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_52A4+83p sub_52A4+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_5537 + movsb + dec cx + +loc_5537: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_553E + movsb + +loc_553E: ; 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 near ; CODE XREF: typeinfo::before(typeinfo &)+61p + +s1 = dword ptr 4 +s2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov dx, ds + cld +_strcmp endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_554E proc far ; CODE XREF: sub_9996+22Fp + ; DATA XREF: dseg:off_D634o + xor ax, ax + mov bx, ax + les di, [bp+0Ah] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + mov di, si + lds si, [bp+6] + repe cmpsb + mov al, [si-1] + mov bl, es:[di-1] + sub ax, bx + mov ds, dx + pop di + pop si + pop bp + retf +sub_554E endp ; sp-analysis failed + + +; =============== 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_4D5C+10Dp + ; sub_4D5C+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_9996+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_55B4: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_55D8 + scasb + jz short loc_55B4 + cmp al, ch + jb short loc_55C9 + cmp al, cl + ja short loc_55C9 + sub al, 20h ; ' ' + +loc_55C9: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_55D4 + cmp bl, cl + ja short loc_55D4 + sub bl, 20h ; ' ' + +loc_55D4: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_55B4 + +loc_55D8: ; 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_55F3 + cmp ax, di + jz short loc_55FD + +loc_55F3: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_55FD: ; 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_5601(char *s, char) +sub_5601 proc far ; CODE XREF: sub_9996+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_5640 +; --------------------------------------------------------------------------- + +loc_5629: ; CODE XREF: sub_5601+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_563F + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_5648 +; --------------------------------------------------------------------------- + +loc_563F: ; CODE XREF: sub_5601+34j + dec cx + +loc_5640: ; CODE XREF: sub_5601+26j + or cx, cx + jnz short loc_5629 + xor dx, dx + xor ax, ax + +loc_5648: ; CODE XREF: sub_5601+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5601 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_E420 + jb short loc_566A + mov ax, 6 + push ax + call __IOERROR + jmp loc_57AE +; --------------------------------------------------------------------------- + +loc_566A: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_5678 + xor ax, ax + jmp loc_57AE +; --------------------------------------------------------------------------- + +loc_5678: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0DF3h], 8 + jz short loc_5697 + 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_5697: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0DF3h], 40h + jnz short loc_56BA + 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_57AE +; --------------------------------------------------------------------------- + +loc_56BA: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+0DF2h], 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_5754 +; --------------------------------------------------------------------------- + +loc_56D9: ; 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_56F6 + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_56F6: ; 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_575E + jnz short loc_571C + cmp dx, 80h ; '€' + jb short loc_575E + +loc_571C: ; 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_5754 + cmp dx, 0FFFFh + jnz short loc_574C + mov ax, 0FFFFh + jmp short loc_57A9 +; --------------------------------------------------------------------------- + +loc_574C: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_57A4 +; --------------------------------------------------------------------------- + +loc_5754: ; 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_575E: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_5767 + jmp loc_56D9 +; --------------------------------------------------------------------------- + +loc_5767: ; 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_57AB + 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_57AB + cmp dx, 0FFFFh + jnz short loc_57A1 + mov ax, 0FFFFh + jmp short loc_57A9 +; --------------------------------------------------------------------------- + +loc_57A1: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_57A4: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_57A9: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_57AE +; --------------------------------------------------------------------------- + +loc_57AB: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_57AE: ; 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+0DF2h], 1 + jz short loc_57CB + mov ax, 5 + push ax + jmp short loc_57EC +; --------------------------------------------------------------------------- + +loc_57CB: ; 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_57EB + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+0DF2h], 1000h + pop ax + jmp short loc_57EF +; --------------------------------------------------------------------------- + +loc_57EB: ; CODE XREF: __rtl_write+26j + push ax + +loc_57EC: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_57EF: ; 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], 0C60h + jmp short loc_5842 +; --------------------------------------------------------------------------- + +loc_5826: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_583B + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_583B: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_5842: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_5826 + 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_586F + 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_588D + +loc_586F: ; 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_588D: ; 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_5988 + db 4 dup(0), 88h, 59h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 0A9h, 58h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 0B1h, 58h + +; =============== 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_D1BF+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, 58BFh + 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, 5945h + 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, 5988h + 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_5988 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:58A9o + db 0Dh dup(0), 2, 0, 2, 0, 0CAh, 59h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 17h, 5Ah + dw seg seg000 + db 0 + db 0 + db 3, 0Dh dup(0) +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_5A11 + 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_5A0F + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_5A13 +; --------------------------------------------------------------------------- + +loc_5A0F: ; CODE XREF: seg000:59FEj + jmp short loc_5A13 +; --------------------------------------------------------------------------- + +loc_5A11: ; CODE XREF: seg000:59D5j + xor ax, ax + +loc_5A13: ; CODE XREF: seg000:5A0Dj + ; seg000:loc_5A0Fj + 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, 0E9h, 5Bh + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0BDh + db 5Dh + 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), 4Fh, 5Ah + +; =============== 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, 5A5Dh + 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_5AA2 + 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_5AF4 + +loc_5AA2: ; 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_5AE4 + 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_5AE4: ; 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_5AF4: ; 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_5DBD + 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), 1Ah, 5Bh + +; =============== 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:38F1p seg000:39B9p ... + +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, 5B28h + 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_5B6D + 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_5BC3 + +loc_5B6D: ; 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_5BB3 + 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_5BB3: ; 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_5BC3: ; 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:3A88p seg000:3B37p ... + +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_5C43 + 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_5C43 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_5C43: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_5D85 + db 4 dup(0), 47h, 5Ch + 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, 5C4Fh + 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, 5B3Eh + 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, 5D85h + 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_5DBD + 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), 0A8h, 5Ch + +; =============== 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, 5CB6h + 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_5CEF + cmp ax, word ptr [bp+arg_4] + jz short loc_5D6D + +loc_5CEF: ; 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_5D5D + 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_5D5D: ; 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_5D6D: ; 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_5D85 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:5C47o + db 0Dh dup(0), 1, 0, 1, 0, 0E9h, 5Bh + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_5DBD db 4, 0, 10h, 20h, 0Ah, 0, 0D0h, 5Dh ; DATA XREF: seg000:5B1Ao + ; seg000:5CA8o + 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, 6, 3 + dw seg seg007 + 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_5E16 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_5E2A + mov dx, ds + mov ax, 10FEh + jmp short loc_5E37 +; --------------------------------------------------------------------------- + +loc_5E2A: ; CODE XREF: sub_5E16+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_5E37: ; CODE XREF: sub_5E16+12j + pop di + pop si + pop bp + retf +sub_5E16 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5E3B proc far ; CODE XREF: sub_5ED8+69p + ; sub_5ED8+106p ... + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + cmp dx, word ptr [bp+arg_4+2] + jnz short loc_5E53 + cmp ax, word ptr [bp+arg_4] + jz short loc_5ECF + +loc_5E53: ; CODE XREF: sub_5E3B+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_5EC7 + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_5EC7 + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + or ax, es:[bx+2] + test al, 80h + jnz short loc_5EC7 + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+4] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_5EA9: ; CODE XREF: sub_5E3B+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_5ECB + +loc_5EC7: ; CODE XREF: sub_5E3B+26j sub_5E3B+34j ... + xor ax, ax + jmp short loc_5ED2 +; --------------------------------------------------------------------------- + +loc_5ECB: ; CODE XREF: sub_5E3B+8Aj + or dx, dx + jnz short loc_5EA9 + +loc_5ECF: ; CODE XREF: sub_5E3B+16j + mov ax, 1 + +loc_5ED2: ; CODE XREF: sub_5E3B+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5E3B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5ED8 proc near ; CODE XREF: sub_5ED8+9Bp + ; sub_5ED8+135p ... + +var_A = dword ptr -0Ah +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+0Ch] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_5EF3: ; CODE XREF: sub_5ED8+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_5F87 + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_5F80 + cmp [bp+arg_C], 0 + jz short loc_5F2F + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5F2F + mov ax, 1 + jmp short loc_5F31 +; --------------------------------------------------------------------------- + +loc_5F2F: ; CODE XREF: sub_5ED8+41j sub_5ED8+50j + xor ax, ax + +loc_5F31: ; CODE XREF: sub_5ED8+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_5E3B + add sp, 8 + or ax, ax + jz short loc_5F54 + cmp [bp+var_6], 0 + jz short loc_5F54 + jmp loc_6017 +; --------------------------------------------------------------------------- + +loc_5F54: ; CODE XREF: sub_5ED8+71j sub_5ED8+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5F80 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_5ED8 + add sp, 0Eh + or ax, ax + jz short loc_5F80 + jmp loc_6017 +; --------------------------------------------------------------------------- + +loc_5F80: ; CODE XREF: sub_5ED8+3Bj sub_5ED8+84j ... + add word ptr [bp+var_4], 8 + jmp loc_5EF3 +; --------------------------------------------------------------------------- + +loc_5F87: ; CODE XREF: sub_5ED8+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_5F9A: ; CODE XREF: sub_5ED8+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_6023 + cmp [bp+arg_C], 0 + jz short loc_5FCC + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5FCC + mov ax, 1 + jmp short loc_5FCE +; --------------------------------------------------------------------------- + +loc_5FCC: ; CODE XREF: sub_5ED8+DEj sub_5ED8+EDj + xor ax, ax + +loc_5FCE: ; CODE XREF: sub_5ED8+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_5E3B + add sp, 8 + or ax, ax + jz short loc_5FEE + cmp [bp+var_6], 0 + jnz short loc_6017 + +loc_5FEE: ; CODE XREF: sub_5ED8+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_601C + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_5ED8 + add sp, 0Eh + or ax, ax + jz short loc_601C + +loc_6017: ; CODE XREF: sub_5ED8+79j sub_5ED8+A5j ... + mov ax, 1 + jmp short loc_6025 +; --------------------------------------------------------------------------- + +loc_601C: ; CODE XREF: sub_5ED8+11Ej + ; sub_5ED8+13Dj + add word ptr [bp+var_4], 8 + jmp loc_5F9A +; --------------------------------------------------------------------------- + +loc_6023: ; CODE XREF: sub_5ED8+D8j + xor ax, ax + +loc_6025: ; CODE XREF: sub_5ED8+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5ED8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_602B proc near ; CODE XREF: sub_6234+1Dp sub_6234+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_6036: ; CODE XREF: sub_602B+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_6049 + cmp ax, word ptr [bp+arg_4] + jnz short loc_6049 + jmp loc_615E +; --------------------------------------------------------------------------- + +loc_6049: ; CODE XREF: sub_602B+14j sub_602B+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_60D9 + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_607C + jmp loc_611F +; --------------------------------------------------------------------------- + +loc_607C: ; CODE XREF: sub_602B+4Cj + or cx, cx + jz short loc_6083 + jmp loc_6197 +; --------------------------------------------------------------------------- + +loc_6083: ; CODE XREF: sub_602B+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_60B9 + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_60A7 + jmp loc_6197 +; --------------------------------------------------------------------------- + +loc_60A7: ; CODE XREF: sub_602B+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_611F + +loc_60B9: ; CODE XREF: sub_602B+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_60CD + jmp loc_6197 +; --------------------------------------------------------------------------- + +loc_60CD: ; CODE XREF: sub_602B+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_60D6 + jmp loc_6197 +; --------------------------------------------------------------------------- + +loc_60D6: ; CODE XREF: sub_602B+A6j + jmp loc_615E +; --------------------------------------------------------------------------- + +loc_60D9: ; CODE XREF: sub_602B+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_6147 + les bx, [bp+arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+arg_4] + cmp dx, es:[bx+0Ch] + jnz short loc_60FE + cmp ax, es:[bx+0Ah] + jz short loc_611F + +loc_60FE: ; CODE XREF: sub_602B+CBj + or cx, cx + jz short loc_6105 + jmp loc_6197 +; --------------------------------------------------------------------------- + +loc_6105: ; CODE XREF: sub_602B+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_6197 + +loc_611F: ; CODE XREF: sub_602B+4Ej sub_602B+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_6036 +; --------------------------------------------------------------------------- + +loc_6147: ; CODE XREF: sub_602B+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_5E3B + add sp, 8 + or ax, ax + jz short loc_6163 + +loc_615E: ; CODE XREF: sub_602B+1Bj + ; sub_602B:loc_60D6j + mov ax, 1 + jmp short loc_6199 +; --------------------------------------------------------------------------- + +loc_6163: ; CODE XREF: sub_602B+131j + test byte ptr [bp+var_2], 2 + jz short loc_6197 + test byte ptr [bp+var_4], 1 + jz short loc_6197 + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_6197 + mov ax, 1 + push ax + push [bp+arg_C] + push [bp+arg_A] + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5ED8 + add sp, 0Eh + jmp short loc_6199 +; --------------------------------------------------------------------------- + +loc_6197: ; CODE XREF: sub_602B+55j sub_602B+79j ... + xor ax, ax + +loc_6199: ; CODE XREF: sub_602B+136j + ; sub_602B+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_602B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_619F proc far ; CODE XREF: sub_695E+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_4285 + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+var_4] + or ax, [bp+var_2] + jnz short loc_61EF + cmp [bp+arg_0], 80h ; '€' + ja short loc_61D1 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_61D6 + +loc_61D1: ; CODE XREF: sub_619F+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_61D6: ; CODE XREF: sub_619F+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_61F5 +; --------------------------------------------------------------------------- + +loc_61EF: ; CODE XREF: sub_619F+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_61F5: ; CODE XREF: sub_619F+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_619F endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + cmp dx, [bp+8] + jnz short loc_6223 + cmp ax, [bp+6] + jnz short loc_6223 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_6230 +; --------------------------------------------------------------------------- + +loc_6223: ; CODE XREF: seg000:6210j seg000:6215j + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + +loc_6230: ; CODE XREF: seg000:6221j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6234 proc near ; CODE XREF: sub_7AC5+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_602B + add sp, 0Eh + or ax, ax + jz short loc_625E + jmp loc_62FA +; --------------------------------------------------------------------------- + +loc_625E: ; CODE XREF: sub_6234+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_62EE + push [bp+arg_6] + push [bp+arg_4] + mov ax, 1 + push ax + les bx, [bp+arg_8] + push word ptr es:[bx+8] + push word ptr es:[bx+6] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_602B + add sp, 0Eh + or ax, ax + jnz short loc_62FA + les bx, [bp+arg_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+arg_8+2], dx + mov word ptr [bp+arg_8], ax + les bx, [bp+arg_8] + mov ax, es:[bx+2] + mov [bp+var_4], ax + test byte ptr [bp+var_4], 10h + jz short loc_6331 + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_8+2] + push word ptr [bp+arg_8] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_602B + add sp, 0Eh + or ax, ax + jnz short loc_62FA + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_6331 + +loc_62EE: ; CODE XREF: sub_6234+42j + test byte ptr [bp+var_4], 10h + jz short loc_6331 + test [bp+arg_C], 1 + jz short loc_62FF + +loc_62FA: ; CODE XREF: sub_6234+27j sub_6234+67j ... + mov ax, 1 + jmp short loc_6333 +; --------------------------------------------------------------------------- + +loc_62FF: ; CODE XREF: sub_6234+C4j + test byte ptr [bp+var_2], 10h + jz short loc_6331 + test byte ptr [bp+var_2+1], 20h + jz short loc_6311 + test byte ptr [bp+var_4+1], 20h + jz short loc_6331 + +loc_6311: ; CODE XREF: sub_6234+D5j + test byte ptr [bp+var_4], 40h + jz short loc_6331 + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_632D + mov ax, 1 + jmp short loc_632F +; --------------------------------------------------------------------------- + +loc_632D: ; CODE XREF: sub_6234+F2j + xor ax, ax + +loc_632F: ; CODE XREF: sub_6234+F7j + jmp short loc_6333 +; --------------------------------------------------------------------------- + +loc_6331: ; CODE XREF: sub_6234+88j sub_6234+B8j ... + xor ax, ax + +loc_6333: ; CODE XREF: sub_6234+C9j + ; sub_6234:loc_632Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_6234 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6339 proc near ; CODE XREF: sub_695E+263p + ; sub_760A+1FDp + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = dword ptr 0Ch +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+var_2], ax + push ds + mov ds, [bp+var_2] + mov ax, [bp+arg_C] + and ax, 1 + mov [bp+var_4], ax + test byte ptr [bp+arg_C], 4 + jz short loc_6364 + or [bp+var_4], 2 + +loc_6364: ; CODE XREF: sub_6339+25j + test byte ptr [bp+arg_C], 2 + jz short loc_6378 + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_6378 + or [bp+var_4], 20h + +loc_6378: ; CODE XREF: sub_6339+2Fj sub_6339+39j + test byte ptr [bp+arg_C], 20h + jz short loc_6382 + or [bp+var_4], 8 + +loc_6382: ; CODE XREF: sub_6339+43j + test byte ptr [bp+arg_C], 80h + jz short loc_638C + or [bp+var_4], 10h + +loc_638C: ; CODE XREF: sub_6339+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_6395 + jmp loc_651A +; --------------------------------------------------------------------------- + +loc_6395: ; CODE XREF: sub_6339+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_63A0 + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_63A0: ; CODE XREF: sub_6339+62j + add bx, bx + jmp cs:off_6657[bx] + +loc_63A7: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:off_6657o + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + add sp, 6 + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_63B9: ; CODE XREF: sub_6339+69j + ; sub_6339+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_6620 +; --------------------------------------------------------------------------- + +loc_63CB: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_63F1 +; --------------------------------------------------------------------------- + +loc_63DF: ; CODE XREF: sub_6339+69j + ; sub_6339+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_63F1: ; CODE XREF: sub_6339+A4j + add sp, 0Ah + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_63F7: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6406: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6415: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_643B +; --------------------------------------------------------------------------- + +loc_6429: ; CODE XREF: sub_6339+69j + ; sub_6339+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_643B: ; CODE XREF: sub_6339+EEj + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_643E: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + push bx + pop bx + call word ptr [bp+arg_8] + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_644E: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_6456: ; CODE XREF: sub_6339+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_645E: ; CODE XREF: sub_6339+69j + ; sub_6339+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_646C: ; CODE XREF: sub_6339+263j + call word ptr [bp+arg_8] + jmp short loc_6482 +; --------------------------------------------------------------------------- + +loc_6471: ; CODE XREF: sub_6339+69j + ; sub_6339+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_647F: ; CODE XREF: sub_6339+272j + call [bp+arg_8] + +loc_6482: ; CODE XREF: sub_6339+136j + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6485: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + call word ptr [bp+arg_8] + jmp short loc_649F +; --------------------------------------------------------------------------- + +loc_6493: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_649C: ; CODE XREF: sub_6339+205j + call [bp+arg_8] + +loc_649F: ; CODE XREF: sub_6339+158j + ; sub_6339+1FCj + pop cx + pop cx + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_64A4: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + call word ptr [bp+arg_8] + add sp, 6 + pop ds + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_64BB: ; CODE XREF: sub_6339+69j + ; sub_6339+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_6620 +; --------------------------------------------------------------------------- + +loc_64D2: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_64DB: ; CODE XREF: sub_6339+234j + call word ptr [bp+arg_8] + jmp short loc_64EC +; --------------------------------------------------------------------------- + +loc_64E0: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_64E9: ; CODE XREF: sub_6339+23Dj + call [bp+arg_8] + +loc_64EC: ; CODE XREF: sub_6339+1A5j + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_64EF: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop ds + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6503: ; CODE XREF: sub_6339+69j + ; sub_6339+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_6620 +; --------------------------------------------------------------------------- + +loc_6517: ; CODE XREF: sub_6339+69j + ; sub_6339+1EEj + ; DATA XREF: ... + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_651A: ; CODE XREF: sub_6339+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_6525 + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6525: ; CODE XREF: sub_6339+1E7j + add bx, bx + jmp cs:off_6627[bx] + +loc_652C: ; DATA XREF: seg000:off_6627o + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_649F +; --------------------------------------------------------------------------- + +loc_6538: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6629o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_649C +; --------------------------------------------------------------------------- + +loc_6541: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:662Bo + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_6561 +; --------------------------------------------------------------------------- + +loc_6552: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:662Do + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_8] + +loc_6561: ; CODE XREF: sub_6339+217j + add sp, 8 + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6567: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:662Fo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_64DB +; --------------------------------------------------------------------------- + +loc_6570: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6631o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_64E9 +; --------------------------------------------------------------------------- + +loc_6579: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6637o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + call word ptr [bp+arg_8] + jmp loc_6620 +; --------------------------------------------------------------------------- + +loc_6587: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6639o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_6456 +; --------------------------------------------------------------------------- + +loc_6590: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6633o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_646C +; --------------------------------------------------------------------------- + +loc_659F: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6635o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_647F +; --------------------------------------------------------------------------- + +loc_65AE: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6647o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop cx + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_65BA: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6649o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_65C6: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:664Bo + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_65D8: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:664Do + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_65EA: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:664Fo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_65F5: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6651o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_6600: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6653o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop ds + jmp short loc_6620 +; --------------------------------------------------------------------------- + +loc_6610: ; CODE XREF: sub_6339+1EEj + ; DATA XREF: seg000:6655o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop ds + jmp short $+2 + +loc_6620: ; CODE XREF: sub_6339+64j sub_6339+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6339 endp + +; --------------------------------------------------------------------------- +off_6627 dw offset loc_652C ; DATA XREF: sub_6339+1EEr + dw offset loc_6538 + dw offset loc_6541 + dw offset loc_6552 + dw offset loc_6567 + dw offset loc_6570 + dw offset loc_6590 + dw offset loc_659F + dw offset loc_6579 + dw offset loc_6587 + dw offset loc_6590 + dw offset loc_659F + dw offset loc_6620 + dw offset loc_6620 + dw offset loc_6620 + dw offset loc_6620 + dw offset loc_65AE + dw offset loc_65BA + dw offset loc_65C6 + dw offset loc_65D8 + dw offset loc_65EA + dw offset loc_65F5 + dw offset loc_6600 + dw offset loc_6610 +off_6657 dw offset loc_63A7 ; DATA XREF: sub_6339+69r + dw offset loc_63B9 + dw offset loc_63CB + dw offset loc_63DF + dw offset loc_63F7 + dw offset loc_6406 + dw offset loc_6415 + dw offset loc_6429 + dw offset loc_643E + dw offset loc_644E + dw offset loc_645E + dw offset loc_6471 + dw offset loc_6517 + dw offset loc_6517 + dw offset loc_6517 + dw offset loc_6517 + dw offset loc_6485 + dw offset loc_6493 + dw offset loc_64A4 + dw offset loc_64BB + dw offset loc_64D2 + dw offset loc_64E0 + dw offset loc_64EF + dw offset loc_6503 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6687 proc near ; CODE XREF: sub_695E+2BCp + ; sub_7316+2Bp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp [bp+arg_A], 0 + jz short loc_669A + mov ax, 2 + jmp short loc_669C +; --------------------------------------------------------------------------- + +loc_669A: ; CODE XREF: sub_6687+Cj + xor ax, ax + +loc_669C: ; CODE XREF: sub_6687+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_66C2 + or [bp+var_6], 2 + +loc_66C2: ; CODE XREF: sub_6687+35j + test byte ptr [bp+arg_8], 2 + jz short loc_66D6 + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_66D6 + or [bp+var_6], 20h + +loc_66D6: ; CODE XREF: sub_6687+3Fj sub_6687+49j + test byte ptr [bp+arg_8], 20h + jz short loc_66E0 + or [bp+var_6], 8 + +loc_66E0: ; CODE XREF: sub_6687+53j + test byte ptr [bp+arg_8], 80h + jz short loc_66EA + or [bp+var_6], 10h + +loc_66EA: ; CODE XREF: sub_6687+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_66F5 + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_66F5: ; CODE XREF: sub_6687+69j + add bx, bx + jmp cs:off_680F[bx] + +loc_66FC: ; DATA XREF: seg000:off_680Fo + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_670A: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6811o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_6718: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6813o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + add sp, 6 + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_672A: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6815o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + add sp, 6 + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_673C: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6817o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_67A2 +; --------------------------------------------------------------------------- + +loc_6747: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6819o + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_679F +; --------------------------------------------------------------------------- + +loc_674F: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:681Bo + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6769 +; --------------------------------------------------------------------------- + +loc_675D: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:681Do + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_6769: ; CODE XREF: sub_6687+D4j + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_676C: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:681Fo + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_677A: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6821o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_6808 +; --------------------------------------------------------------------------- + +loc_6788: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6823o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_67A2 +; --------------------------------------------------------------------------- + +loc_6796: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6825o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_679F: ; CODE XREF: sub_6687+C6j + call [bp+arg_4] + +loc_67A2: ; CODE XREF: sub_6687+BEj + ; sub_6687+10Dj + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67A4: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:682Fo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67B0: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6831o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67BC: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6833o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop ds + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67CA: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6835o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67D8: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6837o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67E3: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:6839o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67EE: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:683Bo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_6808 +; --------------------------------------------------------------------------- + +loc_67FB: ; CODE XREF: sub_6687+70j + ; DATA XREF: seg000:683Do + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_6808: ; CODE XREF: sub_6687+6Bj sub_6687+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6687 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_680F dw offset loc_66FC ; DATA XREF: sub_6687+70r + dw offset loc_670A + dw offset loc_6718 + dw offset loc_672A + dw offset loc_673C + dw offset loc_6747 + dw offset loc_674F + dw offset loc_675D + dw offset loc_676C + dw offset loc_677A + dw offset loc_6788 + dw offset loc_6796 + dw offset loc_6808 + dw offset loc_6808 + dw offset loc_6808 + dw offset loc_6808 + dw offset loc_67A4 + dw offset loc_67B0 + dw offset loc_67BC + dw offset loc_67CA + dw offset loc_67D8 + dw offset loc_67E3 + dw offset loc_67EE + dw offset loc_67FB + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_683F proc near ; CODE XREF: sub_8486+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_686A + or [bp+var_4], 2 + +loc_686A: ; CODE XREF: sub_683F+25j + test byte ptr [bp+arg_8], 2 + jz short loc_6874 + or [bp+var_4], 4 + +loc_6874: ; CODE XREF: sub_683F+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_687E + or [bp+var_4], 8 + +loc_687E: ; CODE XREF: sub_683F+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_68F1 + add bx, bx + jmp cs:off_68F8[bx] + +loc_688D: ; DATA XREF: seg000:off_68F8o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_6896: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:68FAo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_689F: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:68FCo + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_68B3 +; --------------------------------------------------------------------------- + +loc_68AA: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:68FEo + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_68B3: ; CODE XREF: sub_683F+69j + pop cx + pop cx + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_68B7: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:6900o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_68C5 +; --------------------------------------------------------------------------- + +loc_68BF: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:6902o + push [bp+arg_0] + call [bp+arg_4] + +loc_68C5: ; CODE XREF: sub_683F+7Ej + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_68C7: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:6908o + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_68D1: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:690Ao + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_68F1 +; --------------------------------------------------------------------------- + +loc_68DB: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:6904o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_68EF +; --------------------------------------------------------------------------- + +loc_68E6: ; CODE XREF: sub_683F+49j + ; DATA XREF: seg000:6906o ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_68EF: ; CODE XREF: sub_683F+A5j + jmp short $+2 + +loc_68F1: ; CODE XREF: sub_683F+45j sub_683F+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_683F endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_68F8 dw offset loc_688D ; DATA XREF: sub_683F+49r + dw offset loc_6896 + dw offset loc_689F + dw offset loc_68AA + dw offset loc_68B7 + dw offset loc_68BF + dw offset loc_68DB + dw offset loc_68E6 + dw offset loc_68C7 + dw offset loc_68D1 + dw offset loc_68DB + dw offset loc_68E6 + db 4 dup(0), 0CEh, 6Bh + dw seg seg000 + db 14h dup(0), 27h, 6Ch + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 10h, 69h + dw seg seg000 + db 0 + db 0 + db 4, 3 dup(0), 3, 0, 28h, 69h + dw seg seg000 + db 0 + db 0 + db 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_695E(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_695E proc far ; 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, 6940h + 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_69EA +; --------------------------------------------------------------------------- + +loc_69C7: ; CODE XREF: sub_695E+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_69E7 + les bx, [bp+var_34] + mov al, es:[bx] + les bx, [bp+var_38] + mov es:[bx], al + inc word ptr [bp+var_38] + +loc_69E7: ; CODE XREF: sub_695E+78j + inc word ptr [bp+var_34] + +loc_69EA: ; CODE XREF: sub_695E+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_69C7 + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + les bx, [bp+var_22] + mov ax, es:[bx] + mov [bp+n], ax + les bx, [bp+var_22] + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_6A47 + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_6A49 +; --------------------------------------------------------------------------- + +loc_6A47: ; CODE XREF: sub_695E+DEj + xor ax, ax + +loc_6A49: ; CODE XREF: sub_695E+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_6A63 + les bx, [bp+var_26] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + +loc_6A63: ; CODE XREF: sub_695E+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_619F + pop cx + mov word ptr [bp+var_30+2], dx + mov word ptr [bp+var_30], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + mov es:[bx+0Ch], ax + les bx, [bp+var_30] + mov ax, [bp+n] + mov es:[bx+0Eh], ax + les bx, [bp+var_30] + mov ax, [bp+var_2A] + mov es:[bx+14h], ax + les bx, [bp+var_30] + mov ax, [bp+var_2C] + mov es:[bx+16h], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_26+2] + mov ax, word ptr [bp+var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, [bp+var_30] + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, [bp+var_30] + mov word ptr es:[bx+24h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+18h], ds + les bx, [bp+var_30] + mov word ptr es:[bx+1Ch], seg seg000 + mov word ptr es:[bx+1Ah], 61FBh + les bx, [bp+var_30] + mov ax, [bp+arg_14] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_10] + mov es:[bx+22h], ax + les bx, [bp+var_30] + mov byte ptr es:[bx+39h], 0 + les bx, [bp+var_30] + mov byte ptr es:[bx+38h], 1 + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_6BED + 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_6339 + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_6BD8 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6BD8: ; CODE XREF: sub_695E+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_6BED: ; CODE XREF: sub_695E+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_6C31 + test byte ptr [bp+var_2C], 2 + jz short loc_6C31 + mov [bp+var_12], 12h + mov ax, 1 + push ax + les bx, [bp+var_22] + push word ptr es:[bx+22h] + les bx, [bp+var_22] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_6687 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6C31 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6C31: ; CODE XREF: sub_695E+293j + ; sub_695E+299j ... + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+var_46], dx + mov [bp+var_48], ax + mov dx, [bp+arg_1C] + mov ax, [bp+arg_1A] + mov [bp+var_42], dx + mov [bp+var_44], ax + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov [bp+var_3E], dx + mov [bp+var_40], ax + push ss + lea ax, [bp+var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nop + push cs + call near ptr _RaiseException + add sp, 10h + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_695E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:391Bp + ; xalloc::raise(void)+6Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], bp + mov bx, [bp+var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + xor ax, ax + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_18] ; int + push [bp+arg_16] ; int + push [bp+arg_14] ; int + push [bp+arg_12] ; int + push [bp+arg_10] ; int + push [bp+arg_E] ; int + push [bp+arg_C] ; int + push [bp+arg_A] ; int + push [bp+arg_8] ; int + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push [bp+arg_2] ; int + push [bp+arg_0] ; int + push cs + call near ptr sub_695E + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ThrowException$qnvt1t1t1uiuiuinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _ReThrowException(unsigned int, unsigned char *) +@_ReThrowException$quinuc proc far + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+var_A], bp + mov bx, [bp+var_A] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, word ptr [bp+var_8] + or ax, word ptr [bp+var_8+2] + jnz short loc_6D21 + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_6D21: ; 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_6D6D + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_6D76 +; --------------------------------------------------------------------------- + +loc_6D6D: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_6D76: ; 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_695E + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ReThrowException$quinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_6D90 proc far ; CODE XREF: sub_6D95+22p + push si + push di + pop di + pop si + retf +sub_6D90 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6D95 proc far ; 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_6DAF + inc [bp+var_4] + +loc_6DAF: ; CODE XREF: sub_6D95+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_6D90 + jmp short loc_6DFD +; --------------------------------------------------------------------------- + +loc_6DBC: ; CODE XREF: sub_6D95+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_6DE7 + mov ax, dx + jmp short loc_6E1B +; --------------------------------------------------------------------------- + +loc_6DE7: ; CODE XREF: sub_6D95+4Cj + cmp [bp+var_4], 0 + jz short loc_6DF4 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_6DF4: ; CODE XREF: sub_6D95+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_6DFD: ; CODE XREF: sub_6D95+25j + cmp [bp+var_2], 0FFFFh + jz short loc_6E0B + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_6DBC + +loc_6E0B: ; CODE XREF: sub_6D95+6Cj + cmp [bp+var_4], 0 + jz short loc_6E18 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_6E18: ; CODE XREF: sub_6D95+7Aj + mov ax, 1 + +loc_6E1B: ; CODE XREF: sub_6D95+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_6D95 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Global_unwind proc far ; 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_6E4C + mov [bp+var_4A], 0 + mov [bp+var_4C], 26h ; '&' + mov [bp+var_46], 0 + mov [bp+var_48], 2 + mov [bp+var_3E], 0 + lea dx, [bp+var_4C] + +loc_6E4C: ; 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_6D95 + add sp, 8 + pop di + pop si + mov sp, bp + pop bp + retf +__Global_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_6E68 proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_6E68 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_695E+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 72DF SIZE 0000000D BYTES + + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, sp + sub sp, 186h + lea ax, [bp+var_86] + push ax + push cs + call near ptr sub_6E68 + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_E6EA, 3 + jnb short loc_6E96 + jmp loc_6F4C +; --------------------------------------------------------------------------- + +loc_6E96: ; 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_6F95 +; --------------------------------------------------------------------------- + +loc_6F4C: ; 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_6F95: ; 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_6FC6 + cmp [bp+arg_0], 0FACEh + jnz short loc_6FC6 + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_6FD4 +; --------------------------------------------------------------------------- + +loc_6FC6: ; 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_6FD4: ; 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_70A5 + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_70A5: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_70BD + ja short loc_70B3 + cmp [bp+arg_8], 0Fh + jbe short loc_70BD + +loc_70B3: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_70BD: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_70F3 +; --------------------------------------------------------------------------- + +loc_70CA: ; 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_70F3: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_70CA + jnz short loc_7104 + cmp ax, [bp+arg_8] + jb short loc_70CA + +loc_7104: ; 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_6D95 + add sp, 8 + or ax, ax + jnz short loc_714F + test byte ptr [bp+arg_4], 1 + jz short loc_716F + mov [bp+var_54], 0C000h + mov [bp+var_56], 25h ; '%' + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov [bp+var_50], dx + mov [bp+var_52], ax + mov [bp+var_4A], 0 + mov [bp+var_4C], 0 + mov [bp+var_4E], 0 + mov [bp+var_48], 0 + jmp short loc_7104 +; --------------------------------------------------------------------------- + +loc_714F: ; 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_6D95 + add sp, 8 + or ax, ax + jz short loc_716F + jmp loc_72DA +; --------------------------------------------------------------------------- + +loc_716F: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_E6EA, 3 + jnb short loc_7179 + jmp loc_7259 +; --------------------------------------------------------------------------- + +loc_7179: ; 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_72DF +; --------------------------------------------------------------------------- + +loc_7259: ; 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_72DF +; --------------------------------------------------------------------------- + +loc_72DA: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_72DF: ; 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 +; --------------------------------------------------------------------------- + dd 0 + dd loc_734E + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0ECh, 72h + dw seg seg000 + dw 0 + db 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7316 proc near ; CODE XREF: sub_7366+58p sub_7366+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, 7304h + 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_6687 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_7358 +; --------------------------------------------------------------------------- +loc_734E: + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7358: ; CODE XREF: sub_7316+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_7316 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7366 proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_78B0+138p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + cmp byte ptr es:[bx+38h], 0 + jz short loc_73E1 + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_73D9 + 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_7316 + 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_73D9: ; CODE XREF: sub_7366+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_73E1: ; CODE XREF: sub_7366+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_7438 + les bx, [bp+arg_0] + mov dx, es:[bx+34h] + mov ax, es:[bx+32h] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + test byte ptr es:[bx+2], 2 + jz short loc_7430 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_7430 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push ss + les bx, [bp+arg_0] + push word ptr es:[bx+36h] + call sub_7316 + add sp, 0Ah + +loc_7430: ; CODE XREF: sub_7366+9Ej sub_7366+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_7438: ; CODE XREF: sub_7366+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7366 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _CatchCleanup(void) +@_CatchCleanup$qv proc far ; CODE XREF: ___call_terminate+69p + ; sub_695E+277p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_4] + mov ax, es:[bx+24h] + mov [bp+var_6], ax + mov bx, [bp+var_6] + les ax, ss:[bx+arg_0] + mov bx, [bp+var_6] + add ax, ss:[bx+arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+var_6] + mov ss:[bx+arg_6], ax + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + call sub_7366 + pop cx + pop cx + push ds + les bx, [bp+var_4] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + les bx, [bp+var_4] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + pop di + pop si + mov sp, bp + pop bp + retf +@_CatchCleanup$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_74BB proc near ; CODE XREF: sub_74BB+A0p sub_7587+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_74C3: ; CODE XREF: sub_74BB+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_74E0 + xor ax, ax + jmp loc_7581 +; --------------------------------------------------------------------------- + +loc_74E0: ; CODE XREF: sub_74BB+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_750C + les bx, [bp+var_8] + mov ax, es:[bx] + mov dx, word ptr [bp+var_8+2] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_750C: ; CODE XREF: sub_74BB+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_5E3B + add sp, 8 + or ax, ax + jnz short loc_7565 + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_757A + les bx, [bp+var_4] + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + add ax, es:[bx+0Ah] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_C] + or ax, [bp+var_A] + jz short loc_757A + lea ax, [bp+var_8] + push ax + push [bp+arg_8] + push [bp+arg_6] + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + call sub_74BB + add sp, 0Ch + or ax, ax + jz short loc_757A + +loc_7565: ; CODE XREF: sub_74BB+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_7581 +; --------------------------------------------------------------------------- + +loc_757A: ; CODE XREF: sub_74BB+70j sub_74BB+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_74C3 +; --------------------------------------------------------------------------- + +loc_7581: ; CODE XREF: sub_74BB+22j sub_74BB+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_74BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7587 proc far ; CODE XREF: sub_760A+159p + ; sub_760A+1C2p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_75F8 + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + xor ax, ax + push ax + push [bp+var_2] + push [bp+var_4] + call sub_74BB + add sp, 0Ch + or ax, ax + jnz short loc_75F8 + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ch] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + mov ax, 1 + push ax + push [bp+var_2] + push [bp+var_4] + call sub_74BB + add sp, 0Ch + or ax, ax + jz short loc_7600 + +loc_75F8: ; CODE XREF: sub_7587+Ej sub_7587+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_7604 +; --------------------------------------------------------------------------- + +loc_7600: ; CODE XREF: sub_7587+6Fj + xor dx, dx + xor ax, ax + +loc_7604: ; CODE XREF: sub_7587+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_7587 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_760A proc near ; 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_7639 + jmp loc_78AA +; --------------------------------------------------------------------------- + +loc_7639: ; CODE XREF: sub_760A+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_7646 + jmp loc_78AA +; --------------------------------------------------------------------------- + +loc_7646: ; CODE XREF: sub_760A+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_76BA + les bx, [bp+var_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov dx, es:[bx+2] + +loc_76BA: ; CODE XREF: sub_760A+96j + test cl, 10h + jz short loc_76E2 + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_76E2 + push [bp+n] ; n + xor ax, ax + push ax ; c + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; s + nop + push cs + call near ptr _memset + add sp, 8 + jmp loc_780D +; --------------------------------------------------------------------------- + +loc_76E2: ; CODE XREF: sub_760A+B3j sub_760A+BDj + test dl, 1 + jnz short loc_76EA + jmp loc_778E +; --------------------------------------------------------------------------- + +loc_76EA: ; CODE XREF: sub_760A+DBj + test cl, 30h + jnz short loc_76F2 + jmp loc_778E +; --------------------------------------------------------------------------- + +loc_76F2: ; CODE XREF: sub_760A+E3j + test cl, 20h + jz short loc_76F9 + jmp short loc_771C +; --------------------------------------------------------------------------- + +loc_76F9: ; CODE XREF: sub_760A+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_7723 + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_771C: ; CODE XREF: sub_760A+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_7723: ; CODE XREF: sub_760A+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_5E3B + add sp, 8 + or ax, ax + jnz short loc_7784 + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + mov [bp+var_16], dx + mov [bp+var_18], ax + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_7587 + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + cmp dx, [bp+var_16] + jnz short loc_777F + cmp ax, [bp+var_18] + jz short loc_7784 + +loc_777F: ; CODE XREF: sub_760A+16Ej + mov [bp+var_14], 1 + +loc_7784: ; CODE XREF: sub_760A+133j + ; sub_760A+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_7858 +; --------------------------------------------------------------------------- + +loc_778E: ; CODE XREF: sub_760A+DDj sub_760A+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_7814 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push cs + call near ptr sub_5E3B + add sp, 8 + or ax, ax + jnz short loc_77DD + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_7587 + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_77DD: ; CODE XREF: sub_760A+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_785B + les bx, [bp+arg_0] + push word ptr es:[bx+0Eh] + les bx, [bp+arg_0] + push word ptr es:[bx+0Ch] + push word ptr es:[bx+0Ah] + push word ptr [bp+src+2] + push word ptr [bp+src] + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] + call sub_6339 + add sp, 0Eh + +loc_780D: ; CODE XREF: sub_760A+D5j + ; sub_760A+227j + mov [bp+var_14], 1 + jmp short loc_7874 +; --------------------------------------------------------------------------- + +loc_7814: ; CODE XREF: sub_760A+18Cj + test cl, 20h + jz short loc_7833 + push [bp+n] ; n + push ss + lea ax, [bp+src] + push ax ; src + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + jmp short loc_780D +; --------------------------------------------------------------------------- + +loc_7833: ; CODE XREF: sub_760A+20Dj + test cl, 10h + jz short loc_785B + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_785B + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_10], ds + mov [bp+var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+var_12] + +loc_7858: ; CODE XREF: sub_760A+181j + push ax + jmp short loc_7864 +; --------------------------------------------------------------------------- + +loc_785B: ; CODE XREF: sub_760A+1DBj + ; sub_760A+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_7864: ; CODE XREF: sub_760A+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_7874: ; CODE XREF: sub_760A+208j + cmp [bp+var_14], 0 + jnz short loc_78AA + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_78A2 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_7316 + add sp, 0Ah + +loc_78A2: ; CODE XREF: sub_760A+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_78AA: ; CODE XREF: sub_760A+2Cj sub_760A+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_760A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_78B0 proc near ; 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_7A55 +; --------------------------------------------------------------------------- + +loc_7908: ; CODE XREF: sub_78B0+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_7943 + jmp loc_7A52 +; --------------------------------------------------------------------------- + +loc_7943: ; CODE XREF: sub_78B0+8Ej + add bx, bx + jmp cs:off_7A6F[bx] + +loc_794A: ; DATA XREF: seg000:off_7A6Fo + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_F966+2, dx + mov word ptr dword_F966, ax + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 1 + push ds + pop es + assume es:dseg + push ds + mov ds, [bp+var_C] + push bp + mov bp, [bp+var_A] + call es:dword_F966 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_7A52 +; --------------------------------------------------------------------------- + +loc_7985: ; CODE XREF: sub_78B0+95j + ; DATA XREF: seg000:7A77o + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_79B4 +; --------------------------------------------------------------------------- + +loc_7994: ; CODE XREF: sub_78B0+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_79AE + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_79AE + jmp short loc_79CE +; --------------------------------------------------------------------------- + +loc_79AE: ; CODE XREF: sub_78B0+EEj sub_78B0+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_79B4: ; CODE XREF: sub_78B0+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_7994 + +loc_79CE: ; CODE XREF: sub_78B0+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_7366 + pop cx + pop cx + push ds + les bx, [bp+var_16] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_16+2] + push word ptr [bp+var_16] + les bx, [bp+var_16] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + jmp short loc_7A52 +; --------------------------------------------------------------------------- + +loc_7A07: ; CODE XREF: sub_78B0+95j + ; DATA XREF: seg000:7A79o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1C], ax + add [bp+var_12], 2 + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1E], ds + mov [bp+var_20], ax + mov ax, word ptr [bp+var_4+2] + mov dx, [bp+var_20] + mov [bp+var_1E], ax + mov [bp+var_20], dx + push [bp+var_A] + push [bp+arg_0] + mov ax, [bp+var_1C] + add ax, [bp+var_E] + cwd + push dx + push ax + push [bp+var_1E] + push [bp+var_20] + call sub_8486 + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_7A52: ; CODE XREF: sub_78B0+90j sub_78B0+95j ... + mov ax, [bp+var_8] + +loc_7A55: ; CODE XREF: sub_78B0+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_7A69 + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_7A69 + jmp loc_7908 +; --------------------------------------------------------------------------- + +loc_7A69: ; CODE XREF: sub_78B0+1ACj + ; sub_78B0+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_78B0 endp + +; --------------------------------------------------------------------------- +off_7A6F dw offset loc_794A ; DATA XREF: sub_78B0+95r + dw offset loc_7A52 + dw offset loc_7A52 + dw offset loc_7A52 + dw offset loc_7985 + dw offset loc_7A07 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Local_unwind proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + push [bp+arg_0] + push [bp+var_2] + call sub_78B0 + pop cx + pop cx + pop di + pop si + mov sp, bp + pop bp + retf +__Local_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Return_unwind proc far + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + xor ax, ax + push ax + push [bp+var_2] + call sub_78B0 + pop cx + pop cx + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov ss:14h, ax + pop di + pop si + mov sp, bp + pop bp + retf +__Return_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7AC5 proc near ; 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_7B33 +; --------------------------------------------------------------------------- + +loc_7ADE: ; CODE XREF: sub_7AC5+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_7B27 + xor ax, ax + push ax + les bx, [bp+arg_4] + push word ptr es:[bx+0Ch] + push [bp+var_6] + push [bp+var_8] + les bx, [bp+arg_4] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call sub_6234 + add sp, 10h + or ax, ax + jz short loc_7B2F + +loc_7B27: ; CODE XREF: sub_7AC5+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_7B43 +; --------------------------------------------------------------------------- + +loc_7B2F: ; CODE XREF: sub_7AC5+60j + add word ptr [bp+var_4], 10h + +loc_7B33: ; CODE XREF: sub_7AC5+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7ADE + xor dx, dx + xor ax, ax + +loc_7B43: ; CODE XREF: sub_7AC5+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7AC5 endp + +; --------------------------------------------------------------------------- + db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__ExceptionHandler proc far ; 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_7BDD + jmp loc_7C85 +; --------------------------------------------------------------------------- + +loc_7BDD: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_78B0 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_7BF6 + jmp loc_7EB8 +; --------------------------------------------------------------------------- + +loc_7BF6: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_7C00 + jmp loc_7EB8 +; --------------------------------------------------------------------------- + +loc_7C00: ; 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_7C1B + jmp loc_7EB8 +; --------------------------------------------------------------------------- + +loc_7C1B: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_7C59 +; --------------------------------------------------------------------------- + +loc_7C1D: ; 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_6234 + add sp, 10h + or ax, ax + jz short loc_7C55 + jmp loc_7EB8 +; --------------------------------------------------------------------------- + +loc_7C55: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_7C59: ; CODE XREF: __ExceptionHandler:loc_7C1Bj + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7C1D + mov ax, ss:14h + mov word ptr [bp+var_24+2], ax + mov bx, [bp+var_4] + mov ax, ss:[bx] + mov ss:14h, ax + nop + push cs + call near ptr ___call_unexpected +; --------------------------------------------------------------------------- + mov ax, word ptr [bp+var_24+2] + mov ss:14h, ax + jmp loc_7EB8 +; --------------------------------------------------------------------------- + +loc_7C85: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_7EAC +; --------------------------------------------------------------------------- + +loc_7C8F: ; 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_7CC0 + jmp loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7CC0: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_7EC1[bx] + +loc_7CC7: ; DATA XREF: seg000:7EC7o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_7CD5 + jmp loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7CD5: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_7CDF + jmp loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7CDF: ; 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_7AC5 + add sp, 8 + mov word ptr [bp+var_24+2], dx + mov word ptr [bp+var_24], ax + mov ax, word ptr [bp+var_24] + or ax, word ptr [bp+var_24+2] + jnz short loc_7D19 + jmp loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7D19: ; 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_7D4D: ; 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_78B0 + pop cx + pop cx + mov bx, [bp+var_4] + mov ax, [bp+var_2E] + mov ss:[bx+arg_6], ax + cmp word ptr [bp+var_20+2], 3 + jnz short loc_7D9F + push [bp+var_16] + push [bp+var_26] + push [bp+var_28] + push word ptr [bp+var_C+2] + push word ptr [bp+var_C] + push [bp+var_4] + push word ptr [bp+var_24+2] + push word ptr [bp+var_24] + call sub_760A + add sp, 10h + +loc_7D9F: ; 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_7EA9 +; --------------------------------------------------------------------------- + +loc_7DB8: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7EC3o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7DCD + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7DCD + jmp loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7DCD: ; 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_F96A+2, dx + mov word ptr dword_F96A, ax + mov ax, ds + mov es, ax + assume es:dseg + push si + mov si, [bp+var_1C] + push ds + mov ds, [bp+var_1A] + push bp + mov bp, [bp+var_16] + call es:dword_F96A + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_7E64 +; --------------------------------------------------------------------------- + +loc_7E2F: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7EC5o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7E43 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7E43 + jmp short loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7E43: ; 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_7E64: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_7E82 + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_7E7E + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_7E7E: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_7EBB +; --------------------------------------------------------------------------- + +loc_7E82: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_7E8A + jmp short loc_7EA9 +; --------------------------------------------------------------------------- + +loc_7E8A: ; 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_7D4D +; --------------------------------------------------------------------------- + +loc_7EA9: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_7EAC: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_7EB8 + jmp loc_7C8F +; --------------------------------------------------------------------------- + +loc_7EB8: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_7EBB: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_7EC1 dw offset loc_7EA9 ; DATA XREF: __ExceptionHandler+171r + dw offset loc_7DB8 + dw offset loc_7E2F + dw offset loc_7CC7 + dw offset loc_7EA9 + dw offset loc_7EA9 + db 4 dup(0), 60h, 7Fh + dw seg seg000 + db 14h dup(0), 70h, 7Fh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0E5h, 7Eh + dw seg seg000 + db 2 dup(0), 4, 0, 6, 0, 3, 0, 0CDh, 7Eh + dw seg seg000 + db 6, 0, 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7F1B proc far ; CODE XREF: sub_8008+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, 7EFDh + 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_6687 + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_7F69 +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7F69: ; CODE XREF: sub_7F1B+43j + mov [bp+var_12], 0 + jmp short loc_7F79 +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7F79: ; CODE XREF: sub_7F1B+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_7F1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7F87 proc far ; CODE XREF: sub_8008+DCp + ; sub_8008+162p ... + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_C] + jmp short loc_7FF6 +; --------------------------------------------------------------------------- + +loc_7F94: ; CODE XREF: sub_7F87+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_7FBC + les bx, [bp+var_4] + mov ax, es:[bx] + mov dx, word ptr [bp+var_4+2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_7FBC: ; CODE XREF: sub_7F87+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_7FF6 + push [bp+arg_10] + xor ax, ax + push ax + xor ax, ax + push ax + push cx + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + nop + push cs + call near ptr sub_8008 + add sp, 10h + xor cx, cx + +loc_7FF6: ; CODE XREF: sub_7F87+Bj sub_7F87+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_7F94 + pop di + pop si + mov sp, bp + pop bp + retf +sub_7F87 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8008 proc far ; CODE XREF: sub_7F87+67p + ; sub_8008+25Ep ... + +var_2A = word ptr -2Ah +var_28 = word ptr -28h +var_26 = word ptr -26h +var_24 = word ptr -24h +var_22 = dword ptr -22h +var_1E = word ptr -1Eh +var_1C = word ptr -1Ch +var_1A = word ptr -1Ah +var_18 = dword ptr -18h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 2Ah + push si + push di + cmp [bp+arg_C], 0 + jz short loc_801F + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_8026 +; --------------------------------------------------------------------------- + +loc_801F: ; CODE XREF: sub_8008+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_8026: ; CODE XREF: sub_8008+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8048 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_8061 + jnz short loc_8048 + cmp ax, [bp+var_1C] + jb short loc_8061 + +loc_8048: ; CODE XREF: sub_8008+2Cj sub_8008+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_7F1B + add sp, 0Ah + jmp loc_82CD +; --------------------------------------------------------------------------- + +loc_8061: ; CODE XREF: sub_8008+37j sub_8008+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_80FA + +loc_808C: ; CODE XREF: sub_8008+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_80FA + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_80F4 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_80ED + jnz short loc_80C3 + cmp bx, [bp+var_1C] + jb short loc_80ED + +loc_80C3: ; CODE XREF: sub_8008+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_80DD: ; CODE XREF: sub_8008+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_7F87 + add sp, 12h + jmp loc_82CD +; --------------------------------------------------------------------------- + +loc_80ED: ; CODE XREF: sub_8008+B2j sub_8008+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_80F4: ; CODE XREF: sub_8008+A4j + add word ptr [bp+var_10], 8 + jmp short loc_808C +; --------------------------------------------------------------------------- + +loc_80FA: ; CODE XREF: sub_8008+82j sub_8008+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_8113: ; CODE XREF: sub_8008+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_8189 + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_8183 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_817C + jnz short loc_814A + cmp bx, [bp+var_1C] + jb short loc_817C + +loc_814A: ; CODE XREF: sub_8008+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_7F87 + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_8179 + jmp loc_82CD +; --------------------------------------------------------------------------- + +loc_8179: ; CODE XREF: sub_8008+16Cj + jmp loc_82AD +; --------------------------------------------------------------------------- + +loc_817C: ; CODE XREF: sub_8008+139j + ; sub_8008+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_8183: ; CODE XREF: sub_8008+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_8113 +; --------------------------------------------------------------------------- + +loc_8189: ; CODE XREF: sub_8008+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_81A2: ; CODE XREF: sub_8008+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_81DC + les bx, [bp+var_22] + mov ax, es:[bx+0Ah] + mov [bp+var_1E], ax + les bx, [bp+var_22] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_22+2], dx + mov word ptr [bp+var_22], ax + +loc_81DC: ; CODE XREF: sub_8008+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_8200 + jb short loc_81F6 + cmp bx, [bp+var_1C] + jnb short loc_8200 + +loc_81F6: ; CODE XREF: sub_8008+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_82C6 +; --------------------------------------------------------------------------- + +loc_8200: ; CODE XREF: sub_8008+1E5j + ; sub_8008+1ECj ... + les bx, [bp+var_18] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+4] + mov [bp+var_24], dx + mov [bp+var_26], ax + les bx, [bp+var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+var_28], dx + mov [bp+var_2A], ax + cmp [bp+var_1E], 1 + jbe short loc_824C + push [bp+arg_E] + push [bp+var_1A] + push [bp+var_1C] + les bx, [bp+var_18] + push word ptr es:[bx+2] + push word ptr es:[bx] + push [bp+var_24] + push [bp+var_26] + nop + push cs + call near ptr sub_82D3 + add sp, 0Eh + jmp short loc_826C +; --------------------------------------------------------------------------- + +loc_824C: ; CODE XREF: sub_8008+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_8008 + add sp, 10h + +loc_826C: ; CODE XREF: sub_8008+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_8285 + jmp loc_8200 +; --------------------------------------------------------------------------- + +loc_8285: ; CODE XREF: sub_8008+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_7F87 + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_82CD + +loc_82AD: ; CODE XREF: sub_8008:loc_8179j + push [bp+arg_E] + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + push word ptr [bp+var_10+2] + push word ptr [bp+var_10] + jmp loc_80DD +; --------------------------------------------------------------------------- + +loc_82C6: ; CODE XREF: sub_8008+1F5j + add word ptr [bp+var_18], 6 + jmp loc_81A2 +; --------------------------------------------------------------------------- + +loc_82CD: ; CODE XREF: sub_8008+56j sub_8008+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_8008 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_82D3 proc far ; CODE XREF: sub_8008+23Cp + ; sub_8486+316p + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+0Ah] + mov [bp+var_6], ax + les bx, [bp+var_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+1Ah] + mov [bp+var_8], 0 + mov [bp+var_A], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jnz short loc_832D + mov bx, [bp+var_6] + xor cx, cx + mov dx, [bp+var_8] + mov ax, [bp+var_A] + call N_LXMUL@ + mov [bp+arg_A], dx + mov [bp+arg_8], ax + +loc_832D: ; CODE XREF: sub_82D3+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_83BD + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_83AA +; --------------------------------------------------------------------------- + +loc_838B: ; CODE XREF: sub_82D3+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_83AA: ; CODE XREF: sub_82D3+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_8008 + add sp, 10h + +loc_83BD: ; CODE XREF: sub_82D3+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_838B + pop di + pop si + mov sp, bp + pop bp + retf +sub_82D3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_83D5 proc far ; CODE XREF: sub_8486+1B1p + ; sub_8486+2E4p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_4] + mov bx, cx + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+8] + and ax, 50h + cmp ax, 50h ; 'P' + jnz short loc_847A + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_847A + les bx, [bp+var_4] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_4] + test byte ptr es:[bx+9], 10h + jz short loc_8434 + les bx, [bp+var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + jmp short loc_843D +; --------------------------------------------------------------------------- + +loc_8434: ; CODE XREF: sub_83D5+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_843D: ; CODE XREF: sub_83D5+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_847A: ; CODE XREF: sub_83D5+27j sub_83D5+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_83D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8486 proc near ; CODE XREF: sub_78B0+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_849C + jmp loc_8889 +; --------------------------------------------------------------------------- + +loc_849C: ; CODE XREF: sub_8486+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_84F5 + les bx, [bp+arg_0] + les bx, es:[bx] + les bx, es:[bx+6] + mov ax, es:[bx+1Ah] + mov [bp+var_6], 0 + mov [bp+var_8], ax + +loc_84F5: ; CODE XREF: sub_8486+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_850C + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_888B +; --------------------------------------------------------------------------- + +loc_850C: ; CODE XREF: sub_8486+77j + cmp [bp+var_6], 0 + jg short loc_853E + jnz short loc_851A + cmp [bp+var_8], 0 + ja short loc_853E + +loc_851A: ; CODE XREF: sub_8486+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_852C + jmp loc_8889 +; --------------------------------------------------------------------------- + +loc_852C: ; CODE XREF: sub_8486+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_86A3 +; --------------------------------------------------------------------------- + +loc_853E: ; CODE XREF: sub_8486+8Aj sub_8486+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_854A: ; CODE XREF: sub_8486+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_855D + sub word ptr [bp+var_C], 0Ah + jmp loc_86A3 +; --------------------------------------------------------------------------- + +loc_855D: ; CODE XREF: sub_8486+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_8585 + jmp loc_864F +; --------------------------------------------------------------------------- + +loc_8585: ; CODE XREF: sub_8486+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_85A9 + jmp loc_864F +; --------------------------------------------------------------------------- + +loc_85A9: ; CODE XREF: sub_8486+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_85B6 + jmp loc_864F +; --------------------------------------------------------------------------- + +loc_85B6: ; CODE XREF: sub_8486+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_85C3 + jmp loc_864F +; --------------------------------------------------------------------------- + +loc_85C3: ; CODE XREF: sub_8486+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_85DC + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_1C+2], ss + jmp short loc_85EA +; --------------------------------------------------------------------------- + +loc_85DC: ; CODE XREF: sub_8486+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_85EA: ; CODE XREF: sub_8486+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_8612 + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_861B +; --------------------------------------------------------------------------- + +loc_8612: ; CODE XREF: sub_8486+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_861B: ; CODE XREF: sub_8486+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_862C + add word ptr [bp+var_1C], 4 + +loc_862C: ; CODE XREF: sub_8486+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_83D5 + add sp, 6 + mov word ptr [bp+var_1C+2], dx + mov word ptr [bp+var_1C], ax + mov dx, word ptr [bp+var_12+2] + mov ax, word ptr [bp+var_12] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_864F: ; CODE XREF: sub_8486+FCj + ; sub_8486+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8674 + les bx, [bp+var_16] + mov ax, es:[bx+0Ah] + mov [bp+var_18], ax + les bx, [bp+var_16] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_8674: ; CODE XREF: sub_8486+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_8692 + jnz short loc_86A3 + cmp ax, [bp+var_8] + jnb short loc_86A3 + +loc_8692: ; CODE XREF: sub_8486+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_854A +; --------------------------------------------------------------------------- + +loc_86A3: ; CODE XREF: sub_8486+B5j sub_8486+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_86D2 + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_16], ss + jmp short loc_86E0 +; --------------------------------------------------------------------------- + +loc_86D2: ; CODE XREF: sub_8486+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_86E0: ; CODE XREF: sub_8486+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_86EC + jmp loc_8776 +; --------------------------------------------------------------------------- + +loc_86EC: ; CODE XREF: sub_8486+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_871E + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_8727 +; --------------------------------------------------------------------------- + +loc_871E: ; CODE XREF: sub_8486+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_8727: ; CODE XREF: sub_8486+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_8745 + add [bp+var_18], 4 + +loc_8745: ; CODE XREF: sub_8486+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_8776 + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_8776 + test byte ptr [bp+var_16+2], 8 + jz short loc_8776 + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_83D5 + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_8776: ; CODE XREF: sub_8486+263j + ; sub_8486+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_87C4 + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_87A4 + push [bp+arg_A] + push [bp+var_6] + push [bp+var_8] + push word ptr [bp+var_12+2] + push word ptr [bp+var_12] + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_82D3 + add sp, 0Eh + jmp short loc_87C4 +; --------------------------------------------------------------------------- + +loc_87A4: ; CODE XREF: sub_8486+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_8008 + add sp, 10h + +loc_87C4: ; CODE XREF: sub_8486+2F4j + ; sub_8486+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_87D2 + jmp loc_8870 +; --------------------------------------------------------------------------- + +loc_87D2: ; CODE XREF: sub_8486+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_87E1 + sub word ptr [bp+driver], 4 + +loc_87E1: ; CODE XREF: sub_8486+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8830 + les bx, [bp+var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_12+2], dx + mov word ptr [bp+var_12], ax + les bx, [bp+var_12] + mov ax, es:[bx+16h] + or ax, es:[bx+18h] + jz short loc_881D + les bx, [bp+var_12] + push word ptr es:[bx+14h] + les bx, [bp+var_12] + push word ptr es:[bx+18h] + push word ptr es:[bx+16h] + jmp short loc_884F +; --------------------------------------------------------------------------- + +loc_881D: ; CODE XREF: sub_8486+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_8870 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_886E +; --------------------------------------------------------------------------- + +loc_8830: ; CODE XREF: sub_8486+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_885D + les bx, [bp+var_12] + push word ptr es:[bx+12h] + les bx, [bp+var_12] + push word ptr es:[bx+10h] + push word ptr es:[bx+0Eh] + +loc_884F: ; CODE XREF: sub_8486+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_683F + add sp, 0Ah + jmp short loc_8870 +; --------------------------------------------------------------------------- + +loc_885D: ; CODE XREF: sub_8486+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_8870 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_886E: ; CODE XREF: sub_8486+3A8j + pop cx + pop cx + +loc_8870: ; CODE XREF: sub_8486+349j + ; sub_8486+39Bj ... + mov [bp+var_6], 0 + mov [bp+var_8], 0 + mov ax, word ptr [bp+var_C] + sub word ptr [bp+var_C], 0Ah + cmp ax, word ptr [bp+arg_0] + jbe short loc_8889 + jmp loc_86A3 +; --------------------------------------------------------------------------- + +loc_8889: ; CODE XREF: sub_8486+13j sub_8486+A3j ... + xor ax, ax + +loc_888B: ; CODE XREF: sub_8486+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8486 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__CurrExcContext proc far + +s1 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, [bp+arg_0] + mov [bp+var_2], ax + cmp [bp+var_2], 0FFFFh + jz short loc_88D4 + mov bx, [bp+var_2] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + add ax, 0FFF8h + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + mov ax, 8 + push ax ; n + push ds + mov ax, 1107h + push ax ; s2 + push word ptr [bp+s1+2] + push word ptr [bp+s1] ; s1 + nop + push cs + call near ptr _memcmp + add sp, 0Ah + or ax, ax + jz short loc_88D9 + +loc_88D4: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_88E0 +; --------------------------------------------------------------------------- + +loc_88D9: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_88E0: ; 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_893C + mov ax, 8 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+arg_0+2], dx + mov word ptr [bp+arg_0], ax + or ax, dx + jz short loc_897A + +loc_893C: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8F18h + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_2], 0 + mov [bp+src], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 8EFAh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_897A: ; 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 ; DATA XREF: seg000:8F18o + +driver = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_4] + mov ax, word ptr [bp+driver] + or ax, word ptr [bp+driver+2] + jz short loc_89C5 + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8F18h + test dl, 1 + jz short loc_89C5 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_89C5: ; 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_5E3B + add sp, 8 + pop di + pop si + pop bp + retf +@typeinfo@0$beql$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::operator!=(typeinfo const &)const +@typeinfo@0$bneq$xqmx8typeinfo proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) + add sp, 8 + neg ax + sbb ax, ax + inc ax + pop di + pop si + pop bp + retf +@typeinfo@0$bneq$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far typeinfo__before(int, int, int, __int32, __int32) +@typeinfo@0before$xqmx8typeinfo proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_8A29 + xor ax, ax + jmp short loc_8A82 +; --------------------------------------------------------------------------- + +loc_8A29: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_8A3B + mov ax, 1 + jmp short loc_8A82 +; --------------------------------------------------------------------------- + +loc_8A3B: ; 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 + les bx, [bp+arg_0] + mov dx, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov ax, es:[bx+4] + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + add ax, es:[bx+4] + push dx ; s2 + push ax + nop + push cs ; s1 + call _strcmp + add sp, 8 + or ax, ax + jge short loc_8A80 + mov ax, 1 + jmp short loc_8A82 +; --------------------------------------------------------------------------- + +loc_8A80: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_8A82: ; CODE XREF: typeinfo::before(typeinfo &)+17j + ; typeinfo::before(typeinfo &)+29j ... + pop di + pop si + mov sp, bp + pop bp + retf +@typeinfo@0before$xqmx8typeinfo endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::name(void)const +@typeinfo@0name$xqv proc far + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push si + push di + les bx, [bp+arg_0] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + push cs + call near ptr sub_5E16 + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) +@__GetTypeInfo$qnvt1t1t1 proc far + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_8AE4 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 233Eh + push ax ; src + push cs ; int + mov ax, 8EE4h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_8AE4: ; 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_8B25 proc near ; CODE XREF: sub_8B25+143p + ; sub_8B25+1C4p ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_1C = dword ptr -1Ch +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h +arg_10 = word ptr 14h +arg_12 = word ptr 16h +arg_14 = word ptr 18h +arg_16 = word ptr 1Ah +arg_18 = word ptr 1Ch +arg_1A = word ptr 1Eh +arg_1C = word ptr 20h +arg_1E = word ptr 22h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+var_8], 0 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + mov [bp+var_E], 0 + mov ax, [bp+arg_14] + or ax, [bp+arg_16] + jz short loc_8B60 + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push [bp+arg_16] + push [bp+arg_14] + push cs + call near ptr sub_5E3B + add sp, 8 + or ax, ax + jnz short loc_8B6A + +loc_8B60: ; CODE XREF: sub_8B25+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_8B71 + +loc_8B6A: ; CODE XREF: sub_8B25+39j + xor dx, dx + xor ax, ax + jmp loc_8D65 +; --------------------------------------------------------------------------- + +loc_8B71: ; CODE XREF: sub_8B25+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_8B83: ; CODE XREF: sub_8B25+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_8B89: ; CODE XREF: sub_8B25+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_8BA4 + jmp loc_8D2D +; --------------------------------------------------------------------------- + +loc_8BA4: ; CODE XREF: sub_8B25+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_8BB1 + jmp loc_8D26 +; --------------------------------------------------------------------------- + +loc_8BB1: ; CODE XREF: sub_8B25+87j + cmp [bp+arg_1A], 0 + jz short loc_8BCB + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_8BCB + mov ax, 1 + jmp short loc_8BCD +; --------------------------------------------------------------------------- + +loc_8BCB: ; CODE XREF: sub_8B25+90j sub_8B25+9Fj + xor ax, ax + +loc_8BCD: ; CODE XREF: sub_8B25+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_8C14 + les bx, [bp+var_14] + mov ax, es:[bx] + mov dx, word ptr [bp+var_14+2] + mov word ptr [bp+var_14+2], dx + mov word ptr [bp+var_14], ax + mov dx, word ptr [bp+var_1C+2] + mov ax, word ptr [bp+var_1C] + mov [bp+var_16], dx + mov [bp+var_18], ax + +loc_8C14: ; CODE XREF: sub_8B25+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_5E3B + add sp, 8 + or ax, ax + jnz short loc_8C96 + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_8C38 + jmp loc_8D26 +; --------------------------------------------------------------------------- + +loc_8C38: ; CODE XREF: sub_8B25+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_8B25 + add sp, 20h + mov [bp+var_1E], dx + mov [bp+var_20], ax + mov ax, [bp+var_20] + or ax, [bp+var_1E] + jnz short loc_8C7F + jmp loc_8D26 +; --------------------------------------------------------------------------- + +loc_8C7F: ; CODE XREF: sub_8B25+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_8CF3 +; --------------------------------------------------------------------------- + +loc_8C96: ; CODE XREF: sub_8B25+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8CB7 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_8D26 + cmp ax, word ptr [bp+var_14] + jnz short loc_8D26 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_8D65 +; --------------------------------------------------------------------------- + +loc_8CB7: ; CODE XREF: sub_8B25+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_8CF3 + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push [bp+arg_18] + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+arg_16] + push [bp+arg_14] + push [bp+arg_12] + push [bp+arg_10] + push word ptr [bp+var_1C+2] + push word ptr [bp+var_1C] + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + call sub_8B25 + add sp, 20h + or ax, dx + jz short loc_8D26 + +loc_8CF3: ; CODE XREF: sub_8B25+16Fj + ; sub_8B25+198j + cmp [bp+var_E], 0 + jz short loc_8D11 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_8D11 + cmp ax, [bp+var_C] + jnz short loc_8D11 + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_8D26 +; --------------------------------------------------------------------------- + +loc_8D11: ; CODE XREF: sub_8B25+1D2j + ; sub_8B25+1DDj ... + inc [bp+var_E] + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_10] + mov [bp+var_8], ax + +loc_8D26: ; CODE XREF: sub_8B25+89j + ; sub_8B25+110j ... + add word ptr [bp+var_4], 8 + jmp loc_8B89 +; --------------------------------------------------------------------------- + +loc_8D2D: ; CODE XREF: sub_8B25+7Cj + cmp [bp+var_6], 0 + jnz short loc_8D46 + inc [bp+var_6] + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + jmp loc_8B83 +; --------------------------------------------------------------------------- + +loc_8D46: ; CODE XREF: sub_8B25+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_8D5F + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_8D5F: ; CODE XREF: sub_8B25+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_8D65: ; CODE XREF: sub_8B25+49j + ; sub_8B25+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_8B25 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) +@__DynamicCast$qnvt1t1t1i proc far + +var_16 = word ptr -16h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_8D96 + jmp loc_8E9A +; --------------------------------------------------------------------------- + +loc_8D96: ; 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_8DEC + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_5E3B + add sp, 8 + or ax, ax + jz short loc_8DF5 + +loc_8DEC: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_8ECA +; --------------------------------------------------------------------------- + +loc_8DF5: ; 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_5E3B + add sp, 8 + or ax, ax + jnz short loc_8E4E + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+var_16] + push ax + push [bp+var_2] + push [bp+var_4] + push [bp+arg_2] + push [bp+arg_0] + push [bp+var_6] + push [bp+var_8] + xor ax, ax + push ax + push ax + push [bp+var_A] + push [bp+var_C] + push [bp+var_E] + push [bp+var_10] + call sub_8B25 + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jnz short loc_8E92 + +loc_8E4E: ; 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_8B25 + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jz short loc_8E9A + cmp [bp+var_16], 0 + jz short loc_8E9A + +loc_8E92: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_8ECA +; --------------------------------------------------------------------------- + +loc_8E9A: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_8EC6 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 233Fh + push ax ; src + push cs ; int + mov ax, 8ED0h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_8EC6: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_8ECA: ; 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, 1Ch, 8Fh + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0 + dd byte_8F1C + dd 0 + dd @typeinfo@0$bdtr$qv ; typeinfo::~typeinfo(void) +byte_8F1C db 8 ; DATA XREF: seg000:8F10o + ; Method + db 0 + db 3 ; Destructor/SafeFunction + db 0 + db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 + db 0, 1, 0, 95h, 89h + dw seg seg000 + db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh + db 0Eh dup(0) + +; =============== 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_9996:loc_9B01p + +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_8F81 + 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_8F81: ; 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_8FAB +; --------------------------------------------------------------------------- + +loc_8F8F: ; 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_8FAB: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8F8F + push [bp+var_2] + nop + push cs + call near ptr sub_4285 + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_8FD1 + xor dx, dx + xor ax, ax + jmp loc_9087 +; --------------------------------------------------------------------------- + +loc_8FD1: ; 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_9014 + 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_9014: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_9062 + 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_9056 +; --------------------------------------------------------------------------- + +loc_902A: ; 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_9056: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_902A + +loc_9062: ; 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_9087: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_911E dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_9170 db 0 ; DATA XREF: __exec+50w +byte_9171 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 +byte_91EF db 0FFh ; DATA XREF: __exec+22Dr + db 0 +word_91F1 dw 0 ; DATA XREF: __exec+1D0w +word_91F3 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_93EFr ... +byte_91F5 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_D6A6 + mov cs:word_91F3, 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_921A + jmp loc_9428 +; --------------------------------------------------------------------------- + +loc_921A: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_911E, 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_9170, al + +loc_924A: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_925B + cmp al, 9 + jz short loc_925B + cmp al, 0Dh + jz short loc_925B + inc si + jmp short loc_924A +; --------------------------------------------------------------------------- + +loc_925B: ; 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_9171, 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_D6AC, 3 + jnb short loc_927A + sub bx, 280h + +loc_927A: ; 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_928F + xor ax, ax + mov di, ax + jmp short loc_92AC +; --------------------------------------------------------------------------- + +loc_928F: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_9299: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_9299 + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_92AC: ; 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_D6A6 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_92D4 + dec cs:byte_91F5 + inc ax + sub [bp+var_4], ax + +loc_92D4: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 9120h + +loc_92DC: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_92DC + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 908Fh + 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_931E + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_932A + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_931B + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_931B + jmp short loc_9366 +; --------------------------------------------------------------------------- + +loc_931B: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_931E: ; 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_9428 +; --------------------------------------------------------------------------- + +loc_932A: ; 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_9344: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_9344 + 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_9390 +; --------------------------------------------------------------------------- + +loc_9366: ; 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_9372: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_9372 + 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_9390: ; 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_93A6 + jmp loc_931E +; --------------------------------------------------------------------------- + +loc_93A6: ; 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_93BD + jmp loc_931E +; --------------------------------------------------------------------------- + +loc_93BD: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_91F1, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 908Fh + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_91F5, 0 + jnz short loc_93EF + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_9428 + jmp short loc_93F3 +; --------------------------------------------------------------------------- + +loc_93EF: ; CODE XREF: __exec+1EDj + mov ax, cs:word_91F3 + +loc_93F3: ; 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_91F5, 0 + jnz short loc_9422 + mov es, cs:word_91F3 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_9422: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:byte_91EF +; --------------------------------------------------------------------------- + +loc_9428: ; 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: sub_9FAF:loc_A01DP + ; sub_A027+95P ... + +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, 91F6h + push ax ; int + call sub_9996 + 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_446D+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_946D + mov ax, 0FFFFh + jmp short loc_9473 +; --------------------------------------------------------------------------- + +loc_946D: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_9473: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_D6A6 + xor di, di + push es + push word_D6A8 + nop + push cs + call near ptr sub_4285 + pop bx + mov bx, ax + pop es + mov word ptr dword_E740, ax + mov word ptr dword_E740+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_94A0 + nop + nop + jmp near ptr sub_3328 +; --------------------------------------------------------------------------- + +loc_94A0: ; CODE XREF: seg000:9499j + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_94BA + +loc_94AB: ; CODE XREF: seg000:94B8j + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_94AB + +loc_94BA: ; CODE XREF: seg000:94A9j + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_E740+2 + mov word_D6A2, ax + mov ax, word ptr dword_E740 + 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_CA50 + db 4 dup(0), 0D4h, 94h + 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_9529 + 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_9527 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_952B +; --------------------------------------------------------------------------- + +loc_9527: ; CODE XREF: seg000:9516j + jmp short loc_952B +; --------------------------------------------------------------------------- + +loc_9529: ; CODE XREF: seg000:94EDj + xor ax, ax + +loc_952B: ; CODE XREF: seg000:9525j + ; seg000:loc_9527j + 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_CBF8 + dd byte_CBAA + dd 0 + dd byte_CB93 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 34h, 95h + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 40h, 95h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_95AB + 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_95A9 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_95AD +; --------------------------------------------------------------------------- + +loc_95A9: ; CODE XREF: seg000:9598j + jmp short loc_95AD +; --------------------------------------------------------------------------- + +loc_95AB: ; CODE XREF: seg000:956Fj + xor ax, ax + +loc_95AD: ; CODE XREF: seg000:95A7j + ; seg000:loc_95A9j + 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_95F8 + 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_95F6 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_95FA +; --------------------------------------------------------------------------- + +loc_95F6: ; CODE XREF: seg000:95E5j + jmp short loc_95FA +; --------------------------------------------------------------------------- + +loc_95F8: ; CODE XREF: seg000:95BCj + xor ax, ax + +loc_95FA: ; CODE XREF: seg000:95F4j + ; seg000:loc_95F6j + 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), 3, 96h + dw seg seg000 + db 0E2h, 0FFh, 0FBh, 0Bh + dw seg seg007 + db 4 dup(0), 0C1h, 0Bh + dw seg seg007 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FBh, 0Bh + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 89h, 0Bh + dw seg seg007 + db 0 + db 2 dup(1), 7 dup(0), 0Dh, 96h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 15h, 96h, 6, 0, 5 + db 0, 1, 0, 2Dh, 96h, 0FBh, 0Bh + dw seg seg007 + db 4 dup(0), 0C1h, 0Bh + dw seg seg007 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FBh, 0Bh + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 89h, 0Bh + dw seg seg007 + db 0 + db 2 dup(1), 7 dup(0), 51h, 96h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 59h, 96h, 6, 0, 5 + db 0, 1, 0, 71h, 96h, 0FBh, 0Bh + dw seg seg007 + db 4 dup(0), 0C1h, 0Bh + dw seg seg007 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FBh, 0Bh + dw seg seg007 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 89h, 0Bh + dw seg seg007 + db 0 + db 2 dup(1), 7 dup(0), 95h, 96h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 9Dh, 96h, 6, 0, 5 + db 0, 1, 0, 0B5h, 96h, 4 dup(0), 0D9h, 96h + dw seg seg000 + db 0E2h, 0FFh, 47h, 0Bh + dw seg seg007 + dd byte_D5DB + db 4 dup(0), 0E3h, 96h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0F5h, 96h + dw seg seg000 + db 0E2h, 0FFh, 47h, 0Bh + dw seg seg007 + dd byte_D4D9 + db 4 dup(0), 0FFh, 96h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 11h, 97h + dw seg seg000 + db 0E2h, 0FFh, 47h, 0Bh + dw seg seg007 + dd byte_D4D9 + db 4 dup(0), 1Bh, 97h + 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_97A9 + 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_97A7 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_97AB +; --------------------------------------------------------------------------- + +loc_97A7: ; CODE XREF: seg000:9796j + jmp short loc_97AB +; --------------------------------------------------------------------------- + +loc_97A9: ; CODE XREF: seg000:976Dj + xor ax, ax + +loc_97AB: ; CODE XREF: seg000:97A5j + ; seg000:loc_97A7j + 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_97F6 + 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_97F4 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_97F8 +; --------------------------------------------------------------------------- + +loc_97F4: ; CODE XREF: seg000:97E3j + jmp short loc_97F8 +; --------------------------------------------------------------------------- + +loc_97F6: ; CODE XREF: seg000:97BAj + xor ax, ax + +loc_97F8: ; CODE XREF: seg000:97F2j + ; seg000:loc_97F4j + 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_9843 + 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_9841 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9845 +; --------------------------------------------------------------------------- + +loc_9841: ; CODE XREF: seg000:9830j + jmp short loc_9845 +; --------------------------------------------------------------------------- + +loc_9843: ; CODE XREF: seg000:9807j + xor ax, ax + +loc_9845: ; CODE XREF: seg000:983Fj + ; seg000:loc_9841j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9849 proc far ; CODE XREF: sub_AB4D+7BP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + cmp ah, 81h ; '' + jb short loc_9883 + cmp ah, 0A0h ; ' ' + jb short loc_9865 + cmp ah, 0E0h ; 'à' + jb short loc_9883 + cmp ah, 0F0h ; 'ð' + jnb short loc_9883 + +loc_9865: ; CODE XREF: sub_9849+10j + cmp al, 40h ; '@' + jb short loc_9883 + cmp al, 0FDh ; 'ý' + jnb short loc_9883 + cmp al, 7Fh ; '' + jz short loc_9883 + cmp al, 80h ; '€' + adc al, 61h ; 'a' + jb short loc_9879 + sub al, 0A2h ; '¢' + +loc_9879: ; CODE XREF: sub_9849+2Cj + rcl ah, 1 + and ah, 7Fh + add ax, 1F21h + jmp short loc_9885 +; --------------------------------------------------------------------------- + +loc_9883: ; CODE XREF: sub_9849+Bj sub_9849+15j ... + xor ax, ax + +loc_9885: ; CODE XREF: sub_9849+38j + pop di + pop si + pop bp + retf +sub_9849 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9889 proc far ; CODE XREF: sub_9996+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_98FA +; --------------------------------------------------------------------------- + +loc_989F: ; CODE XREF: sub_9889+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_4952 + pop cx + or ax, ax + jz short loc_98BE + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_98F7 + jmp short loc_9903 +; --------------------------------------------------------------------------- + +loc_98BE: ; CODE XREF: sub_9889+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_98DD +; --------------------------------------------------------------------------- + +loc_98CC: ; CODE XREF: sub_9889+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_98E6 + inc word ptr [bp+var_8] + +loc_98DD: ; CODE XREF: sub_9889+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_98CC + +loc_98E6: ; CODE XREF: sub_9889+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_98F7 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_9907 +; --------------------------------------------------------------------------- + +loc_98F7: ; CODE XREF: sub_9889+31j sub_9889+64j + inc word ptr [bp+var_4] + +loc_98FA: ; CODE XREF: sub_9889+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_989F + +loc_9903: ; CODE XREF: sub_9889+33j + xor dx, dx + xor ax, ax + +loc_9907: ; CODE XREF: sub_9889+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_9889 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_990D(int, int, char *pathname, char *src, int) +sub_990D proc far ; CODE XREF: sub_9996+7Fp sub_9996+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_9961 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 127Ch + 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_998E + jmp short loc_9989 +; --------------------------------------------------------------------------- + +loc_9961: ; CODE XREF: sub_990D+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_998E + +loc_9989: ; CODE XREF: sub_990D+52j + mov ax, 1 + jmp short loc_9990 +; --------------------------------------------------------------------------- + +loc_998E: ; CODE XREF: sub_990D+50j sub_990D+7Aj + xor ax, ax + +loc_9990: ; CODE XREF: sub_990D+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_990D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_9996(int, char *s, int, int, int, int, int) +sub_9996 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 +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_99B0 + sub dx, 20h ; ' ' + +loc_99B0: ; CODE XREF: sub_9996+15j + cmp dx, 41h ; 'A' + jb short loc_99C4 + cmp dx, 5Ah ; 'Z' + ja short loc_99C4 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_99DA + +loc_99C4: ; CODE XREF: sub_9996+1Dj sub_9996+22j + push ds + mov ax, 1281h + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_9889 + add sp, 8 + or ax, dx + jz short loc_99DF + +loc_99DA: ; CODE XREF: sub_9996+2Cj + mov [bp+arg_E], 0 + +loc_99DF: ; CODE XREF: sub_9996+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_5601 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_9A3E + push [bp+arg_E] ; int + push ds + mov ax, 1284h + 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_990D + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_9A25 + jmp loc_9AA9 +; --------------------------------------------------------------------------- + +loc_9A25: ; CODE XREF: sub_9996+8Aj + push ds + mov ax, 1285h + 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_9AA9 + jmp short loc_9AA4 +; --------------------------------------------------------------------------- + +loc_9A3E: ; CODE XREF: sub_9996+68j + push [bp+arg_E] ; int + push ds + mov ax, 128Ah + 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_990D + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_9AA9 + push [bp+arg_E] ; int + push ds + mov ax, 128Fh + 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_990D + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_9AA9 + push [bp+arg_E] ; int + push ds + mov ax, 1294h + 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_990D + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_9AA9 + +loc_9AA4: ; CODE XREF: sub_9996+A6j + mov [bp+var_1A], 1 + +loc_9AA9: ; CODE XREF: sub_9996+8Cj sub_9996+A4j ... + cmp [bp+var_18], 0 + jz short loc_9ACB + cmp [bp+var_1A], 0 + jz short loc_9AD4 + push ds + mov ax, 1299h + 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_9AD4 + +loc_9ACB: ; CODE XREF: sub_9996+117j + mov word_D6AE, 2 + jmp loc_9B9A +; --------------------------------------------------------------------------- + +loc_9AD4: ; CODE XREF: sub_9996+11Dj + ; sub_9996+133j + cmp [bp+var_1A], 0 + jz short loc_9AED + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 12A1h + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_9B01 +; --------------------------------------------------------------------------- + +loc_9AED: ; CODE XREF: sub_9996+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_9B01: ; CODE XREF: sub_9996+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_9B1B + mov word_D6AE, 8 + jmp loc_9B9A +; --------------------------------------------------------------------------- + +loc_9B1B: ; CODE XREF: sub_9996+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_9B44 + mov word_D6AE, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + jmp short loc_9B9A +; --------------------------------------------------------------------------- + +loc_9B44: ; CODE XREF: sub_9996+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_9B59 + mov dx, word ptr dword_E740+2 + mov ax, word ptr dword_E740 + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_9B59: ; CODE XREF: sub_9996+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_9B6D + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_9B73 +; --------------------------------------------------------------------------- + +loc_9B6D: ; CODE XREF: sub_9996+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_9B73: ; CODE XREF: sub_9996+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_9B9F + mov word_D6AE, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4152 + pop cx + pop cx + +loc_9B9A: ; CODE XREF: sub_9996+13Bj + ; sub_9996+182j ... + mov ax, 0FFFFh + jmp short loc_9BEA +; --------------------------------------------------------------------------- + +loc_9B9F: ; CODE XREF: sub_9996+1EFj + call off_E284 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_9BBD + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_9BC3 +; --------------------------------------------------------------------------- + +loc_9BBD: ; CODE XREF: sub_9996+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_9BC3: ; CODE XREF: sub_9996+225j + push dx + push ax + ; Hack + db 0ffh + db 056h + db 004h + 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_4152 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4152 + add sp, 8 + mov ax, [bp+var_16] + +loc_9BEA: ; CODE XREF: sub_9996+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_9996 endp + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + 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_9BF0 proc far ; CODE XREF: _main+2Dp + +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = byte ptr -4 +var_3 = word ptr -3 +var_1 = byte ptr -1 + + enter 0Ch, 0 + mov [bp+var_A], ds + mov [bp+var_C], 163h + push [bp+var_A] + push [bp+var_C] + call sub_804 + or ax, ax + jnz short loc_9C0E + jmp loc_9C9D +; --------------------------------------------------------------------------- + +loc_9C0E: ; CODE XREF: sub_9BF0+19j + push [bp+var_A] + push [bp+var_C] + call sub_8D4 + push ss + lea ax, [bp+var_8] + push ax + push 8 + call sub_820 + mov al, [bp+var_8] + mov byte_DC34, al + mov al, [bp+var_7] + mov byte_E8F9, al + mov al, [bp+var_6] + mov byte_F3E2, al + mov al, [bp+var_5] + mov byte_F3E1, al + mov ax, [bp+var_3] + mov word_E900, ax + cmp word_E900, 0 + jz short loc_9C9D + mov ax, word_E900 + mov word ptr dword_F3DC+2, ax + mov word ptr dword_F3DC, 0 + les bx, dword_F3DC + mov al, [bp+var_4] + mov es:[bx+24h], al + mov al, [bp+var_1] + mov es:[bx+0Ch], al + call sub_7B4 + cmp byte_E8F9, 0 + jnz short loc_9C80 + mov byte_F3CA, 0 + mov byte_DBEE, 0 + jmp short loc_9C99 +; --------------------------------------------------------------------------- + +loc_9C80: ; CODE XREF: sub_9BF0+82j + cmp byte_E8F9, 1 + jnz short loc_9C8E + mov byte_F3CB, 0 + jmp short loc_9C94 +; --------------------------------------------------------------------------- + +loc_9C8E: ; CODE XREF: sub_9BF0+95j + mov al, byte_F3CD + mov byte_F3CB, al + +loc_9C94: ; CODE XREF: sub_9BF0+9Cj + call sub_B092 + +loc_9C99: ; CODE XREF: sub_9BF0+8Ej + xor ax, ax + leave + retf +; --------------------------------------------------------------------------- + +loc_9C9D: ; CODE XREF: sub_9BF0+1Bj sub_9BF0+58j + mov ax, 1 + leave + retf +sub_9BF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9CA2 proc far ; CODE XREF: sub_9FAF+17p sub_A027+3Fp ... + +var_C = byte ptr -0Ch +var_B = byte ptr -0Bh +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ch, 0 + mov [bp+var_2], ds + mov [bp+var_4], 163h + mov [bp+var_5], 0 + mov al, byte_DC34 + mov [bp+var_C], al + mov al, byte_E8F9 + mov [bp+var_B], al + mov al, byte_F3E2 + mov [bp+var_A], al + mov al, byte_F3E1 + mov [bp+var_9], al + les bx, dword_F3DC + mov al, es:[bx+24h] + mov [bp+var_8], al + push [bp+var_2] + push [bp+var_4] + call sub_7C4 + push ss + lea ax, [bp+var_C] + push ax + push 5 + call sub_952 + push ds + push offset word_E900 + push 2 + call sub_952 + push ss + lea ax, [bp+var_5] + push ax + push 1 + call sub_952 + call sub_7B4 + leave + retf +sub_9CA2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9D0A proc far ; CODE XREF: sub_9D5C+13p + push bp + mov bp, sp + call sub_2430 + push 20h ; ' ' + push 5 + call sub_2490 + pop bp + retf +sub_9D0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9D1D proc near ; CODE XREF: sub_9D5C+27p sub_9D5C+2Fp + +arg_0 = byte ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push ds + push [bp+arg_2] + push 0 + call sub_ADD5 + mov dx, 0A6h ; '¦' + mov al, [bp+arg_0] + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_B15A + push 0 + push 0 + push 0 + call sub_B17D + add sp, 0Eh + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + pop bp + retn 4 +sub_9D1D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9D5C proc far ; CODE XREF: _main+D7p + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + mov dx, word_D6C6 + mov ax, word_D6C4 + mov [bp+var_4], dx + mov [bp+var_6], ax + push cs + call near ptr sub_9D0A + push 0B00h + push ds + push offset aHuuma_efc ; "huuma.efc" + call sub_B0EA + push 177h + push 1 + call sub_9D1D + push 17Eh + push 0 + call sub_9D1D + push ds + push offset aOpa_pi ; "opa.pi" + push 0 + call sub_ADD5 + push ds + push offset aOpb_pi ; "opb.pi" + push 1 + call sub_ADD5 + push ds + push offset aOpc_pi ; "opc.pi" + push 2 + call sub_ADD5 + add sp, 18h + mov word_D876, 0C8h ; 'È' + call far ptr loc_1D0A + mov [bp+var_2], 0 + jmp short loc_9E0F +; --------------------------------------------------------------------------- + +loc_9DC4: ; CODE XREF: sub_9D5C+B7j + xor si, si + jmp short loc_9DED +; --------------------------------------------------------------------------- + +loc_9DC8: ; CODE XREF: sub_9D5C+94j + mov ax, 27h ; ''' + sub ax, [bp+var_2] + push ax + push si + push 20h ; ' ' + push 0E1h ; 'á' + call sub_24C8 + mov ax, [bp+var_2] + add ax, 28h ; '(' + push ax + push si + push 20h ; ' ' + push 0E1h ; 'á' + call sub_24C8 + inc si + +loc_9DED: ; CODE XREF: sub_9D5C+6Aj + cmp si, 19h + jl short loc_9DC8 + mov ax, [bp+var_2] + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_D876, dx + call far ptr loc_1D0A + push 1 + call sub_B2D2 + inc [bp+var_2] + +loc_9E0F: ; CODE XREF: sub_9D5C+66j + cmp [bp+var_2], 28h ; '(' + jl short loc_9DC4 + mov [bp+var_2], 28h ; '(' + jmp short loc_9E39 +; --------------------------------------------------------------------------- + +loc_9E1C: ; CODE XREF: sub_9D5C+E1j + mov ax, [bp+var_2] + add ax, ax + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_D876, dx + call far ptr loc_1D0A + push 1 + call sub_B2D2 + inc [bp+var_2] + +loc_9E39: ; CODE XREF: sub_9D5C+BEj + cmp [bp+var_2], 32h ; '2' + jl short loc_9E1C + mov word_D876, 64h ; 'd' + call far ptr loc_1D0A + les bx, dword_F3DC + cmp byte ptr es:[bx+27h], 0 + jnz short loc_9E97 + mov [bp+var_2], 0 + cmp byte_F3CD, 0 + jz short loc_9E7D + mov al, byte_F3CB + mov ah, 0 + mov [bp+var_2], ax + mov byte_F3CB, 1 + push 600h + push ds + push offset aOp_m ; "op.m" + call sub_B0EA + add sp, 6 + +loc_9E7D: ; CODE XREF: sub_9D5C+103j + mov byte_F3CB, 0 + push 600h + push ds + push offset aOp_m ; "op.m" + call sub_B0EA + add sp, 6 + mov al, byte ptr [bp+var_2] + mov byte_F3CB, al + +loc_9E97: ; CODE XREF: sub_9D5C+F7j + push 12h + call sub_B2D2 + call sub_B2E8 + mov word_D876, 0C8h ; 'È' + call far ptr loc_1D0A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 224h + push 180h + push 0DFh ; 'ß' + push 0 + call sub_133C + push 234h + push 180h + push 10h + push ss + lea ax, [bp+var_6] + push ax + push 0 + call sub_13D0 + push 220h + push 17Ch + push 0DFh ; 'ß' + push 6 + call sub_133C + push 230h + push 17Ch + push 10h + push ss + lea ax, [bp+var_6] + push ax + push 6 + call sub_13D0 + push 0 + call sub_1290 + les bx, dword_F3DC + cmp byte ptr es:[bx+27h], 0 + jnz short loc_9F16 + push 0 + call sub_B203 + pop cx + +loc_9F16: ; CODE XREF: sub_9D5C+1B0j + les bx, dword_F3DC + mov byte ptr es:[bx+27h], 0 + push ds + push offset aOp_rgb ; "op.rgb" + call sub_1FA2 + call far ptr loc_1D0A + push 6 + call sub_26B2 + pop si + leave + retf +sub_9D5C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9F37 proc near ; CODE XREF: sub_9FAF+3p sub_A0C6+3p + push bp + mov bp, sp + call sub_B252 + push 0Dh + call sub_B25E + pop cx + call sub_B296 + push 14h + call sub_B2D2 + les bx, dword_F3DC + mov al, byte_F3E1 + mov es:[bx+15h], al + mov al, byte_F3E2 + mov es:[bx+14h], al + mov al, byte_F3E1 + mov es:[bx+1Ah], al + mov al, byte_F3E2 + mov es:[bx+19h], al + mov al, byte_E8F9 + mov es:[bx+18h], al + mov byte ptr es:[bx+17h], 0 + mov word ptr es:[bx+10h], 0 + mov word ptr es:[bx+0Eh], 0 + mov word ptr es:[bx+12h], 0 + mov byte ptr es:[bx+25h], 0 + mov word ptr es:[bx+20h], 0 + mov byte ptr es:[bx+27h], 0 + mov word ptr es:[bx+2Eh], 0 + mov word ptr es:[bx+2Ch], 0 + pop bp + retn +sub_9F37 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9FAF proc far ; CODE XREF: sub_A2FB+B4p + push bp + mov bp, sp + call sub_9F37 + les bx, dword_F3DC + mov al, byte_DC34 + mov es:[bx+16h], al + mov byte ptr es:[bx+0Bh], 0 + push cs + call near ptr sub_9CA2 + push ds + push offset aTs1_pi ; "ts1.pi" + push 0 + call sub_ADD5 + call sub_2430 + call sub_BD24 + push 20Fh + call sub_B203 + add sp, 8 + call sub_FE0 + call sub_2966 + call sub_B019 + les bx, dword_F3DC + cmp byte ptr es:[bx+0Ch], 0 + jz short loc_A011 + push 0 + push 0 + push ds + push offset aSelect ; "select" + push ds + push offset aSelect ; "select" + jmp short loc_A01D +; --------------------------------------------------------------------------- + +loc_A011: ; CODE XREF: sub_9FAF+52j + push 0 + push 0 + push ds + push offset path ; "main" + push ds + push offset path ; "main" + +loc_A01D: ; CODE XREF: sub_9FAF+60j + call _execl + add sp, 0Ch + pop bp + retf +sub_9FAF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A027 proc far ; CODE XREF: sub_A2FB+174p + push bp + mov bp, sp + les bx, dword_F3DC + mov byte ptr es:[bx+15h], 2 + mov byte ptr es:[bx+14h], 3 + mov byte ptr es:[bx+1Ah], 2 + mov byte ptr es:[bx+19h], 3 + mov al, byte_E8F9 + mov es:[bx+18h], al + mov byte ptr es:[bx+16h], 1 + mov word ptr es:[bx+12h], 0 + mov byte ptr es:[bx+25h], 0 + mov al, byte_E8FE + mov es:[bx+27h], al + mov byte ptr es:[bx+26h], 0 + push cs + call near ptr sub_9CA2 + call sub_2430 + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + push ds + push offset unk_F1DC + push word_F182 + push word_F180 + call sub_147A + push ds + push offset unk_F224 + push word_F186 + push word_F184 + call sub_147A + call sub_FE0 + call sub_2966 + call sub_B019 + push 0 + push 0 + push ds + push offset path ; "main" + push ds + push offset path ; "main" + call _execl + add sp, 0Ch + pop bp + retf +sub_A027 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A0C6 proc far ; CODE XREF: sub_A2FB+BBp + push bp + mov bp, sp + call sub_9F37 + les bx, dword_F3DC + mov byte ptr es:[bx+16h], 4 + mov byte ptr es:[bx+0Bh], 5 + mov byte ptr es:[bx+15h], 2 + mov byte ptr es:[bx+14h], 1 + mov byte ptr es:[bx+1Ah], 2 + mov byte ptr es:[bx+19h], 1 + push cs + call near ptr sub_9CA2 + push ds + push offset aTs1_pi ; "ts1.pi" + push 0 + call sub_ADD5 + call sub_2430 + call sub_BD24 + push 20Fh + call sub_B203 + add sp, 8 + call sub_FE0 + call sub_2966 + call sub_B019 + les bx, dword_F3DC + cmp byte ptr es:[bx+0Ch], 0 + jz short loc_A13A + push 0 + push 0 + push ds + push offset aSelect ; "select" + push ds + push offset aSelect ; "select" + jmp short loc_A146 +; --------------------------------------------------------------------------- + +loc_A13A: ; CODE XREF: sub_A0C6+64j + push 0 + push 0 + push ds + push offset path ; "main" + push ds + push offset path ; "main" + +loc_A146: ; CODE XREF: sub_A0C6+72j + call _execl + add sp, 0Ch + pop bp + retf +sub_A0C6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A150 proc near ; CODE XREF: sub_A2FB+27p + push bp + mov bp, sp + push 11Ch + push 104h + push 10h + push ds + push offset aK ; "¼½ª»½" + push 0 + call sub_13D0 + push 0ECh ; 'ì' + push 114h + push 10h + push ds + push offset aOKK ; "®Á½»ªÏ¼½ª»½" + push 0 + call sub_13D0 + push 10Ch + push 124h + push 10h + push ds + push offset aMO ; "±²¼¬¸»®" + push 0 + call sub_13D0 + push 114h + push 134h + push 10h + push ds + push offset asc_D718 ; "¸¹½²¸¶" + push 0 + call sub_13D0 + push 0F4h ; 'ô' + push 144h + push 10h + push ds + push offset aMNo ; "·¾¼²¬Ï·¸­®" + push 0 + call sub_13D0 + push 124h + push 154h + push 10h + push ds + push offset asc_D722 ; "º¾²½" + push 0 + call sub_13D0 + push 0D4h ; 'Ô' + push 174h + push 10h + push ds + push offset aK_0 ; "»ª¶´" + push 0 + call sub_13D0 + push 134h + push 174h + push 10h + push ds + mov al, byte_DC34 + cbw + shl ax, 3 + add ax, 98h ; '˜' + push ax + push 0 + call sub_13D0 + pop bp + retn +sub_A150 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A1F5 proc near ; CODE XREF: sub_A2FB+4Cp + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + or si, si + jnz short loc_A20E + push 23h ; '#' + push 10h + push ds + push offset aK ; "¼½ª»½" + jmp short loc_A248 +; --------------------------------------------------------------------------- + +loc_A20E: ; CODE XREF: sub_A1F5+Dj + cmp si, 2 + jnz short loc_A21D + push 21h ; '!' + push 12h + push ds + push offset aMO ; "±²¼¬¸»®" + jmp short loc_A248 +; --------------------------------------------------------------------------- + +loc_A21D: ; CODE XREF: sub_A1F5+1Cj + cmp si, 3 + jnz short loc_A22C + push 22h ; '"' + push 13h + push ds + push offset asc_D718 ; "¸¹½²¸¶" + jmp short loc_A248 +; --------------------------------------------------------------------------- + +loc_A22C: ; CODE XREF: sub_A1F5+2Bj + cmp si, 4 + jnz short loc_A23B + push 1Eh + push 14h + push ds + push offset aMNo ; "·¾¼²¬Ï·¸­®" + jmp short loc_A248 +; --------------------------------------------------------------------------- + +loc_A23B: ; CODE XREF: sub_A1F5+3Aj + cmp si, 5 + jnz short loc_A24E + push 24h ; '$' + push 15h + push ds + push offset asc_D722 ; "º¾²½" + +loc_A248: ; CODE XREF: sub_A1F5+17j sub_A1F5+26j ... + push di + call sub_10D6 + +loc_A24E: ; CODE XREF: sub_A1F5+49j + cmp si, 1 + jnz short loc_A274 + cmp byte_F4A2, 0 + jz short loc_A265 + push 1Dh + push 11h + push ds + push offset aOKK ; "®Á½»ªÏ¼½ª»½" + push di + jmp short loc_A26F +; --------------------------------------------------------------------------- + +loc_A265: ; CODE XREF: sub_A1F5+63j + push 1Dh + push 11h + push ds + push offset aOKK ; "®Á½»ªÏ¼½ª»½" + push 21h ; '!' + +loc_A26F: ; CODE XREF: sub_A1F5+6Ej + call sub_10D6 + +loc_A274: ; CODE XREF: sub_A1F5+5Cj + push 1Ah + push 17h + push ds + push offset aK_0 ; "»ª¶´" + push 81h ; '' + call sub_10D6 + push 26h ; '&' + push 17h + push ds + mov al, byte_DC34 + cbw + shl ax, 3 + add ax, 98h ; '˜' + push ax + push 81h ; '' + call sub_10D6 + pop di + pop si + pop bp + retn 4 +sub_A1F5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A2A2 proc near ; CODE XREF: sub_A2FB+7Cp sub_A2FB+8Ap ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + mov al, byte_D6C0 + cbw + push ax + push 0C1h ; 'Á' + call word_E902 + mov al, [bp+arg_0] + add byte_D6C0, al + cmp byte_D6C1, 0 + jnz short loc_A2D1 + cmp byte_F4A2, 0 + jnz short loc_A2D1 + cmp byte_D6C0, 1 + jnz short loc_A2D1 + add byte_D6C0, al + +loc_A2D1: ; CODE XREF: sub_A2A2+1Bj sub_A2A2+22j ... + cmp byte_D6C0, 0 + jge short loc_A2DE + mov al, [bp+arg_2] + mov byte_D6C0, al + +loc_A2DE: ; CODE XREF: sub_A2A2+34j + mov al, byte_D6C0 + cmp al, [bp+arg_2] + jle short loc_A2EB + mov byte_D6C0, 0 + +loc_A2EB: ; CODE XREF: sub_A2A2+42j + mov al, byte_D6C0 + cbw + push ax + push 0E1h ; 'á' + call word_E902 + pop bp + retn 4 +sub_A2A2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A2FB proc far ; CODE XREF: _main+10Ep + push bp + mov bp, sp + push si + cmp byte_D790, 0 + jnz short loc_A356 + mov byte_E8F8, 0 + mov byte_D790, 1 + call sub_2430 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_1290 + call sub_A150 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov word_E8FC, 0 + xor si, si + jmp short loc_A34B +; --------------------------------------------------------------------------- + +loc_A335: ; CODE XREF: sub_A2FB+53j + push si + mov al, byte_D6C0 + cbw + cmp ax, si + jnz short loc_A343 + mov ax, 0E1h ; 'á' + jmp short loc_A346 +; --------------------------------------------------------------------------- + +loc_A343: ; CODE XREF: sub_A2FB+41j + mov ax, 0C1h ; 'Á' + +loc_A346: ; CODE XREF: sub_A2FB+46j + push ax + call sub_A1F5 + inc si + +loc_A34B: ; CODE XREF: sub_A2FB+38j + cmp si, 6 + jl short loc_A335 + mov word_E902, 605h + +loc_A356: ; CODE XREF: sub_A2FB+9j + cmp word_F3C8, 0 + jnz short loc_A362 + mov byte_E8F8, 1 + +loc_A362: ; CODE XREF: sub_A2FB+60j + cmp byte_E8F8, 0 + jnz short loc_A36C + jmp loc_A466 +; --------------------------------------------------------------------------- + +loc_A36C: ; CODE XREF: sub_A2FB+6Cj + test byte ptr word_F3C8, 1 + jz short loc_A37A + push 5 + push 0FFFFh + call sub_A2A2 + +loc_A37A: ; CODE XREF: sub_A2FB+76j + test byte ptr word_F3C8, 2 + jz short loc_A388 + push 5 + push 1 + call sub_A2A2 + +loc_A388: ; CODE XREF: sub_A2FB+84j + test byte ptr word_F3C8, 10h + jnz short loc_A399 + test byte ptr word_F3C8, 80h + jnz short loc_A399 + jmp loc_A448 +; --------------------------------------------------------------------------- + +loc_A399: ; CODE XREF: sub_A2FB+92j sub_A2FB+99j + mov al, byte_D6C0 + cbw + mov bx, ax + cmp bx, 5 + jbe short loc_A3A7 + jmp loc_A448 +; --------------------------------------------------------------------------- + +loc_A3A7: ; CODE XREF: sub_A2FB+A7j + add bx, bx + jmp cs:off_A475[bx] + +loc_A3AE: ; DATA XREF: seg001:off_A475o + push cs + call near ptr sub_9FAF + jmp loc_A448 +; --------------------------------------------------------------------------- + +loc_A3B5: ; CODE XREF: sub_A2FB+AEj + ; DATA XREF: seg001:0887o + push cs + call near ptr sub_A0C6 + jmp loc_A448 +; --------------------------------------------------------------------------- + +loc_A3BC: ; CODE XREF: sub_A2FB+AEj + ; DATA XREF: seg001:0889o + mov word_F4A4, 7D0h + call sub_2430 + call sub_B77E + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aOp2_pi ; "op2.pi" + push 0 + call sub_ADD5 + push 0 + call sub_B15A + push 0 + push 0 + push 0 + call sub_B17D + add sp, 0Eh + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + push ds + push offset aOp_rgb ; "op.rgb" + call sub_1FA2 + call far ptr loc_1D0A + push 0 + call sub_1290 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + +loc_A424: ; CODE XREF: sub_A2FB+13Aj + ; sub_A2FB+146j + mov byte_D790, 0 + jmp short loc_A448 +; --------------------------------------------------------------------------- + +loc_A42B: ; CODE XREF: sub_A2FB+AEj + ; DATA XREF: seg001:088Bo + mov byte_D6C0, 0 + mov byte_D6C1, 1 + jmp short loc_A424 +; --------------------------------------------------------------------------- + +loc_A437: ; CODE XREF: sub_A2FB+AEj + ; DATA XREF: seg001:088Do + call sub_2430 + call sub_C7A0 + jmp short loc_A424 +; --------------------------------------------------------------------------- + +loc_A443: ; CODE XREF: sub_A2FB+AEj + ; DATA XREF: seg001:088Fo + mov byte_D6C2, 1 + +loc_A448: ; CODE XREF: sub_A2FB+9Bj sub_A2FB+A9j ... + test byte ptr word_F3C8, 40h + jz short loc_A454 + mov byte_D6C2, 1 + +loc_A454: ; CODE XREF: sub_A2FB+152j + cmp word_F3C8, 0 + jz short loc_A466 + mov byte_E8F8, 0 + mov word_E8FC, 0 + +loc_A466: ; CODE XREF: sub_A2FB+6Ej + ; sub_A2FB+15Ej + cmp word_E8FC, 280h + jbe short loc_A472 + push cs + call near ptr sub_A027 + +loc_A472: ; CODE XREF: sub_A2FB+171j + pop si + pop bp + retf +sub_A2FB endp + +; --------------------------------------------------------------------------- +off_A475 dw offset loc_A3AE ; DATA XREF: sub_A2FB+AEr + dw offset loc_A3B5 + dw offset loc_A3BC + dw offset loc_A42B + dw offset loc_A437 + dw offset loc_A443 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A481 proc near ; CODE XREF: sub_A74A+27p + push bp + mov bp, sp + push 0C4h ; 'Ä' + push 104h + push 10h + push ds + push offset aK_0 ; "»ª¶´" + push 0 + call sub_13D0 + push 0C4h ; 'Ä' + push 114h + push 10h + push ds + push offset aM ; "·¾¼²¬" + push 0 + call sub_13D0 + push 0C4h ; 'Ä' + push 124h + push 10h + push ds + push offset aKO ; "¹µªÂ®»" + push 0 + call sub_13D0 + push 0C4h ; 'Ä' + push 134h + push 10h + push ds + push offset aLL ; "«¸·«" + push 0 + call sub_13D0 + push seg_D786 + push word_D784 + push 0 + push 144h + push 0C4h ; 'Ä' + call sub_AB4D + add sp, 0Ah + push 11Ch + push 154h + push 10h + push ds + push offset aOO ; "»®¼®½" + push 0 + call sub_13D0 + push 124h + push 174h + push 10h + push ds + push offset asc_D722 ; "º¾²½" + push 0 + call sub_13D0 + pop bp + retn +sub_A481 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A510 proc near ; CODE XREF: sub_A74A+46p sub_A74A+99p ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_2] + mov si, [bp+arg_0] + or di, di + jnz short loc_A568 + push 18h + push 10h + push ds + push offset aK_0 ; "»ª¶´" + push si + call sub_10D6 + push 2Ah ; '*' + push 10h + push ds + mov al, byte_DC34 + cbw + shl ax, 3 + add ax, 98h ; '˜' + push ax + push si + call sub_10D6 + push 150h + push 104h + push 80h ; '€' + push 10h + call sub_AE00 + push 154h + push 104h + push 10h + push ds + mov al, byte_DC34 + cbw + shl ax, 3 + add ax, 98h ; '˜' + jmp short loc_A5B3 +; --------------------------------------------------------------------------- + +loc_A568: ; CODE XREF: sub_A510+Dj + cmp di, 1 + jnz short loc_A5BE + push 18h + push 11h + push ds + push offset aM ; "·¾¼²¬" + push si + call sub_10D6 + push 2Fh ; '/' + push 11h + push ds + mov al, byte_E8F9 + cbw + imul ax, 5 + add ax, 145h + push ax + push si + call sub_10D6 + push 178h + push 114h + push 40h ; '@' + push 10h + call sub_AE00 + push 17Ch + push 114h + push 10h + push ds + mov al, byte_E8F9 + cbw + imul ax, 5 + add ax, 145h + +loc_A5B3: ; CODE XREF: sub_A510+56j + push ax + push 0 + call sub_13D0 + jmp loc_A6E9 +; --------------------------------------------------------------------------- + +loc_A5BE: ; CODE XREF: sub_A510+5Bj + cmp di, 2 + jnz short loc_A60A + push 18h + push 12h + push ds + push offset aKO ; "¹µªÂ®»" + push si + call sub_10D6 + push 31h ; '1' + push 12h + mov al, byte_F3E1 + cbw + add ax, 0A1h ; '¡' + push ax + push si + call sub_1092 + push 188h + push 124h + push 20h ; ' ' + push 10h + call sub_AE00 + push 18Ch + push 124h + mov al, byte_F3E1 + cbw + add ax, 0A1h ; '¡' + push ax + push 0 + call sub_133C + jmp loc_A6E9 +; --------------------------------------------------------------------------- + +loc_A60A: ; CODE XREF: sub_A510+B1j + cmp di, 3 + jnz short loc_A656 + push 18h + push 13h + push ds + push offset aLL ; "«¸·«" + push si + call sub_10D6 + push 31h ; '1' + push 13h + mov al, byte_F3E2 + cbw + add ax, 0A0h ; ' ' + push ax + push si + call sub_1092 + push 188h + push 134h + push 20h ; ' ' + push 10h + call sub_AE00 + push 18Ch + push 134h + mov al, byte_F3E2 + cbw + add ax, 0A0h ; ' ' + push ax + push 0 + call sub_133C + jmp loc_A6E9 +; --------------------------------------------------------------------------- + +loc_A656: ; CODE XREF: sub_A510+FDj + cmp di, 4 + jnz short loc_A6C7 + push 18h + push 14h + push seg_D786 + push word_D784 + push si + call sub_2520 + push 2Dh ; '-' + push 14h + les bx, dword_F3DC + mov al, es:[bx+24h] + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+15Ah] + push word ptr [bx+158h] + push si + call sub_2520 + push 168h + push 144h + push 80h ; '€' + push 10h + call sub_AE00 + les bx, dword_F3DC + mov al, es:[bx+24h] + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+15Ah] + push word ptr [bx+158h] + push 0 + push 144h + push 16Ch + call sub_AB4D + add sp, 0Ah + jmp short loc_A6E9 +; --------------------------------------------------------------------------- + +loc_A6C7: ; CODE XREF: sub_A510+149j + cmp di, 5 + jnz short loc_A6D6 + push 23h ; '#' + push 15h + push ds + push offset aOO ; "»®¼®½" + jmp short loc_A6E3 +; --------------------------------------------------------------------------- + +loc_A6D6: ; CODE XREF: sub_A510+1BAj + cmp di, 6 + jnz short loc_A6E9 + push 24h ; '$' + push 17h + push ds + push offset asc_D722 ; "º¾²½" + +loc_A6E3: ; CODE XREF: sub_A510+1C4j + push si + call sub_10D6 + +loc_A6E9: ; CODE XREF: sub_A510+ABj sub_A510+F7j ... + pop di + pop si + pop bp + retn 4 +sub_A510 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A6EF proc near ; CODE XREF: sub_A74A:loc_A81Ap + ; sub_A74A:loc_A8A5p + push bp + mov bp, sp + cmp byte_E8F9, 0 + jnz short loc_A70E + mov byte_F3CA, 0 + push 100h + call sub_B203 + pop cx + mov byte_DBEE, 0 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_A70E: ; CODE XREF: sub_A6EF+8j + cmp byte_E8F9, 1 + jnz short loc_A725 + push 100h + call sub_B203 + pop cx + mov byte_F3CB, 0 + jmp short loc_A73B +; --------------------------------------------------------------------------- + +loc_A725: ; CODE XREF: sub_A6EF+24j + cmp byte_E8F9, 2 + jnz short loc_A748 + push 100h + call sub_B203 + pop cx + mov al, byte_F3CD + mov byte_F3CB, al + +loc_A73B: ; CODE XREF: sub_A6EF+34j + call sub_B092 + push 0 + call sub_B203 + pop cx + +loc_A748: ; CODE XREF: sub_A6EF+3Bj + pop bp + retn +sub_A6EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A74A proc far ; CODE XREF: _main+11Bp + push bp + mov bp, sp + push si + cmp byte_D792, 0 + jnz short loc_A79F + mov byte_D791, 0 + mov byte_D792, 1 + call sub_2430 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_1290 + call sub_A481 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + xor si, si + jmp short loc_A794 +; --------------------------------------------------------------------------- + +loc_A77E: ; CODE XREF: sub_A74A+4Dj + push si + mov al, byte_D6C0 + cbw + cmp ax, si + jnz short loc_A78C + mov ax, 0E1h ; 'á' + jmp short loc_A78F +; --------------------------------------------------------------------------- + +loc_A78C: ; CODE XREF: sub_A74A+3Bj + mov ax, 0C1h ; 'Á' + +loc_A78F: ; CODE XREF: sub_A74A+40j + push ax + call sub_A510 + inc si + +loc_A794: ; CODE XREF: sub_A74A+32j + cmp si, 7 + jl short loc_A77E + mov word_E902, 920h + +loc_A79F: ; CODE XREF: sub_A74A+9j + cmp word_F3C8, 0 + jnz short loc_A7AB + mov byte_D791, 1 + +loc_A7AB: ; CODE XREF: sub_A74A+5Aj + cmp byte_D791, 0 + jnz short loc_A7B5 + jmp loc_A9A1 +; --------------------------------------------------------------------------- + +loc_A7B5: ; CODE XREF: sub_A74A+66j + test byte ptr word_F3C8, 1 + jz short loc_A7C3 + push 6 + push 0FFFFh + call sub_A2A2 + +loc_A7C3: ; CODE XREF: sub_A74A+70j + test byte ptr word_F3C8, 2 + jz short loc_A7D1 + push 6 + push 1 + call sub_A2A2 + +loc_A7D1: ; CODE XREF: sub_A74A+7Ej + test byte ptr word_F3C8, 8 + jnz short loc_A7DB + jmp loc_A85C +; --------------------------------------------------------------------------- + +loc_A7DB: ; CODE XREF: sub_A74A+8Cj + mov al, byte_D6C0 + cbw + push ax + push 0C1h ; 'Á' + call sub_A510 + mov al, byte_D6C0 + cbw + mov bx, ax + cmp bx, 4 + ja short loc_A851 + add bx, bx + jmp cs:off_A9AF[bx] + +loc_A7F8: ; CODE XREF: sub_A74A+134j + ; DATA XREF: seg001:off_A9AFo + inc byte_DC34 + cmp byte_DC34, 3 + jle short loc_A851 + mov byte_DC34, 0 + jmp short loc_A851 +; --------------------------------------------------------------------------- + +loc_A80A: ; CODE XREF: sub_A74A+A9j + ; sub_A74A+134j + ; DATA XREF: ... + inc byte_E8F9 + cmp byte_E8F9, 2 + jle short loc_A81A + mov byte_E8F9, 0 + +loc_A81A: ; CODE XREF: sub_A74A+C9j + call sub_A6EF + jmp short loc_A851 +; --------------------------------------------------------------------------- + +loc_A81F: ; CODE XREF: sub_A74A+A9j + ; sub_A74A+134j + ; DATA XREF: ... + inc byte_F3E1 + cmp byte_F3E1, 4 + jle short loc_A851 + mov byte_F3E1, 0 + jmp short loc_A851 +; --------------------------------------------------------------------------- + +loc_A831: ; CODE XREF: sub_A74A+A9j + ; sub_A74A+134j + ; DATA XREF: ... + inc byte_F3E2 + cmp byte_F3E2, 3 + jle short loc_A851 + mov byte_F3E2, 0 + jmp short loc_A851 +; --------------------------------------------------------------------------- + +loc_A843: ; CODE XREF: sub_A74A+A9j + ; sub_A74A+134j + ; DATA XREF: ... + les bx, dword_F3DC + mov al, 1 + sub al, es:[bx+24h] + mov es:[bx+24h], al + +loc_A851: ; CODE XREF: sub_A74A+A5j sub_A74A+B7j ... + mov al, byte_D6C0 + cbw + push ax + push 0E1h ; 'á' + call sub_A510 + +loc_A85C: ; CODE XREF: sub_A74A+8Ej + test byte ptr word_F3C8, 4 + jnz short loc_A866 + jmp loc_A8E7 +; --------------------------------------------------------------------------- + +loc_A866: ; CODE XREF: sub_A74A+117j + mov al, byte_D6C0 + cbw + push ax + push 0C1h ; 'Á' + call sub_A510 + mov al, byte_D6C0 + cbw + mov bx, ax + cmp bx, 4 + ja short loc_A8DC + add bx, bx + jmp cs:off_A9A5[bx] + +loc_A883: ; DATA XREF: seg001:off_A9A5o + dec byte_DC34 + cmp byte_DC34, 0 + jge short loc_A8DC + mov byte_DC34, 3 + jmp short loc_A8DC +; --------------------------------------------------------------------------- + +loc_A895: ; CODE XREF: sub_A74A+134j + ; DATA XREF: seg001:0DB7o + dec byte_E8F9 + cmp byte_E8F9, 0 + jge short loc_A8A5 + mov byte_E8F9, 2 + +loc_A8A5: ; CODE XREF: sub_A74A+154j + call sub_A6EF + jmp short loc_A8DC +; --------------------------------------------------------------------------- + +loc_A8AA: ; CODE XREF: sub_A74A+134j + ; DATA XREF: seg001:0DB9o + dec byte_F3E1 + cmp byte_F3E1, 0 + jge short loc_A8DC + mov byte_F3E1, 4 + jmp short loc_A8DC +; --------------------------------------------------------------------------- + +loc_A8BC: ; CODE XREF: sub_A74A+134j + ; DATA XREF: seg001:0DBBo + dec byte_F3E2 + cmp byte_F3E2, 0 + jge short loc_A8DC + mov byte_F3E2, 3 + jmp short loc_A8DC +; --------------------------------------------------------------------------- + +loc_A8CE: ; CODE XREF: sub_A74A+134j + ; DATA XREF: seg001:0DBDo + les bx, dword_F3DC + mov al, 1 + sub al, es:[bx+24h] + mov es:[bx+24h], al + +loc_A8DC: ; CODE XREF: sub_A74A+130j + ; sub_A74A+142j ... + mov al, byte_D6C0 + cbw + push ax + push 0E1h ; 'á' + call sub_A510 + +loc_A8E7: ; CODE XREF: sub_A74A+119j + test byte ptr word_F3C8, 10h + jnz short loc_A8F8 + test byte ptr word_F3C8, 80h + jnz short loc_A8F8 + jmp loc_A97F +; --------------------------------------------------------------------------- + +loc_A8F8: ; CODE XREF: sub_A74A+1A2j + ; sub_A74A+1A9j + mov al, byte_D6C0 + cbw + cmp ax, 5 + jz short loc_A908 + cmp ax, 6 + jz short loc_A970 + jmp short loc_A97F +; --------------------------------------------------------------------------- + +loc_A908: ; CODE XREF: sub_A74A+1B5j + mov byte_DC34, 1 + mov byte_E8F9, 1 + push 100h + call sub_B203 + mov byte_F3CB, 0 + call sub_B092 + push 0 + call sub_B203 + add sp, 4 + mov byte_F3E1, 2 + mov byte_F3E2, 3 + les bx, dword_F3DC + mov byte ptr es:[bx+22h], 1 + mov byte ptr es:[bx+24h], 0 + push 0 + push 0C1h ; 'Á' + call sub_A510 + push 1 + push 0C1h ; 'Á' + call sub_A510 + push 2 + push 0C1h ; 'Á' + call sub_A510 + push 3 + push 0C1h ; 'Á' + call sub_A510 + push 4 + push 0C1h ; 'Á' + call sub_A510 + jmp short loc_A97F +; --------------------------------------------------------------------------- + +loc_A970: ; CODE XREF: sub_A74A+1BAj + mov byte_D6C0, 3 + mov byte_D6C1, 0 + mov byte_D792, 0 + +loc_A97F: ; CODE XREF: sub_A74A+1ABj + ; sub_A74A+1BCj ... + test byte ptr word_F3C8, 40h + jz short loc_A995 + mov byte_D6C0, 3 + mov byte_D6C1, 0 + mov byte_D792, 0 + +loc_A995: ; CODE XREF: sub_A74A+23Aj + cmp word_F3C8, 0 + jz short loc_A9A1 + mov byte_D791, 0 + +loc_A9A1: ; CODE XREF: sub_A74A+68j + ; sub_A74A+250j + pop si + pop bp + retf +sub_A74A endp + +; --------------------------------------------------------------------------- + db 0 +off_A9A5 dw offset loc_A883 ; DATA XREF: sub_A74A+134r + dw offset loc_A895 + dw offset loc_A8AA + dw offset loc_A8BC + dw offset loc_A8CE +off_A9AF dw offset loc_A7F8 ; DATA XREF: sub_A74A+A9r + dw offset loc_A80A + dw offset loc_A81F + dw offset loc_A831 + dw offset loc_A843 + +; =============== 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_B0B0 + or ax, ax + jz short loc_A9EE + call sub_B058 + call sub_AFB0 + or ax, ax + jz short loc_A9DD + push 3 + call sub_AB41 + jmp short loc_A9EE +; --------------------------------------------------------------------------- + +loc_A9DD: ; CODE XREF: _main+19j + call sub_B86E + mov byte_F4A2, al + push cs + call near ptr sub_9BF0 + cmp ax, 1 + jnz short loc_A9F3 + +loc_A9EE: ; CODE XREF: _main+Bj _main+22j + mov ax, 1 + leave + retf +; --------------------------------------------------------------------------- + +loc_A9F3: ; CODE XREF: _main+33j + call sub_FBC + push ds + push offset aMikoft_bft ; "MIKOFT.bft" + call sub_FFC + les bx, dword_F3DC + cmp byte ptr es:[bx+27h], 0 + jnz short loc_AA1C + mov byte_E8FE, 1 + push 100h + call sub_B203 + pop cx + jmp short loc_AA4A +; --------------------------------------------------------------------------- + +loc_AA1C: ; CODE XREF: _main+51j + les bx, dword_F3DC + mov al, es:[bx+27h] + inc al + mov byte_E8FE, al + cmp byte_E8FE, 3 + jbe short loc_AA35 + mov byte_E8FE, 1 + +loc_AA35: ; CODE XREF: _main+75j + mov word_F4A4, 15Eh + call sub_B77E + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + +loc_AA4A: ; CODE XREF: _main+61j + mov word_F3C8, 0 + mov al, byte_E8F9 + mov byte_DBEE, al + les bx, dword_F3DC + cmp byte ptr es:[bx+27h], 0 + jnz short loc_AA8F + cmp byte_F3CD, 0 + jz short loc_AA8F + mov al, byte_F3CB + mov [bp+var_2], al + mov byte_F3CB, 1 + push 600h + push ds + push offset aGminit_m ; "gminit.m" + call sub_B0EA + push 0 + call sub_B203 + add sp, 8 + mov al, [bp+var_2] + mov byte_F3CB, al + +loc_AA8F: ; CODE XREF: _main+A6j _main+ADj + push cs + call near ptr sub_9D5C + push ds + push offset aTs3_pi ; "ts3.pi" + push 2 + call sub_ADD5 + push ds + push offset aTs2_pi ; "ts2.pi" + push 1 + call sub_ADD5 + add sp, 0Ch + mov word_F3C8, 0 + mov word_E8FC, 0 + jmp short loc_AAF0 +; --------------------------------------------------------------------------- + +loc_AABA: ; CODE XREF: _main+13Cj + call sub_AED0 + cmp byte_D6C1, 0 + jnz short loc_AACC + push cs + call near ptr sub_A2FB + jmp short loc_AAD7 +; --------------------------------------------------------------------------- + +loc_AACC: ; CODE XREF: _main+10Bj + cmp byte_D6C1, 1 + jnz short loc_AAD7 + push cs + call near ptr sub_A74A + +loc_AAD7: ; CODE XREF: _main+111j _main+118j + les bx, dword_F3DC + add word ptr es:[bx+1Ch], 1 + adc word ptr es:[bx+1Eh], 0 + inc word_E8FC + push 1 + call sub_B2D2 + +loc_AAF0: ; CODE XREF: _main+FFj + cmp byte_D6C2, 0 + jz short loc_AABA + les bx, dword_F3DC + mov al, es:[bx+23h] + mov [bp+var_1], al + mov word_E900, 0 + push cs + call near ptr sub_9CA2 + call sub_2430 + call sub_1256 + call sub_AB28 + call sub_FE0 +_main endp ; sp-analysis failed + + mov al, [bp-1] + mov ah, 0 + leave + retf +seg001 ends + +; =========================================================================== + +; Segment type: Pure code +seg002 segment byte public 'CODE' use16 + assume cs:seg002 + ;org 7 + 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_AB28 proc far ; CODE XREF: _main+15DP + push bp + mov bp, sp + nop + push cs + call near ptr sub_B019 + call sub_1BC6 + call sub_2474 + call sub_2468 + pop bp + retf +sub_AB28 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AB41 proc far ; CODE XREF: _main+1DP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov ax, [bp+arg_0] + int 59h ; GSS Computer Graphics Interface (GSS*CGI) + ; DS:DX -> block of 5 array pointers + ; Return: CF set on error, AX = error code + ; CF clear if successful, AX = return code + pop bp + retf 2 +sub_AB41 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AB4D proc far ; CODE XREF: sub_A481+5FP + ; sub_A510+1ADP ... + +var_32 = byte ptr -32h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = dword ptr 0Ch + + enter 32h, 0 + push si + push di + mov di, [bp+arg_0] + mov ax, [bp+arg_4] + sar ax, 4 + and ax, 3 + mov [bp+var_E], ax + mov ax, [bp+arg_4] + sar ax, 6 + and ax, 7 + mov [bp+var_10], ax + push 0C0h ; 'À' + push [bp+arg_4] + call sub_F8C + mov dx, 68h ; 'h' + mov al, 0Bh + out dx, al + jmp loc_AD92 +; --------------------------------------------------------------------------- + +loc_AB82: ; CODE XREF: sub_AB4D+24Cj + mov ax, [bp+arg_2] + imul ax, 50h + push ax + mov ax, di + mov bx, 8 + cwd + idiv bx + pop dx + add dx, ax + mov word ptr [bp+var_8+2], 0A800h + mov word ptr [bp+var_8], dx + mov ax, di + cwd + idiv bx + mov [bp+var_C], dx + les bx, [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+117Bh], 4 + jz short loc_ABD7 + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + cbw + shl ax, 8 + mov dl, es:[bx+1] + mov dh, 0 + add ax, dx + push ax + call sub_9849 + pop cx + mov [bp+var_2], ax + add word ptr [bp+arg_6], 2 + jmp short loc_AC1D +; --------------------------------------------------------------------------- + +loc_ABD7: ; CODE XREF: sub_AB4D+66j + les bx, [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+117Bh], 3 + jz short loc_ABF5 + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + add ax, 2980h + jmp short loc_AC10 +; --------------------------------------------------------------------------- + +loc_ABF5: ; CODE XREF: sub_AB4D+99j + les bx, [bp+arg_6] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0E91h], 5Eh + jz short loc_AC15 + mov bx, word ptr [bp+arg_6] + mov al, es:[bx] + mov ah, 0 + add ax, 2900h + +loc_AC10: ; CODE XREF: sub_AB4D+A6j + mov [bp+var_2], ax + jmp short loc_AC1A +; --------------------------------------------------------------------------- + +loc_AC15: ; CODE XREF: sub_AB4D+B6j + mov [bp+var_2], 2B21h + +loc_AC1A: ; CODE XREF: sub_AB4D+C6j + inc word ptr [bp+arg_6] + +loc_AC1D: ; CODE XREF: sub_AB4D+88j + mov al, byte ptr [bp+var_2] + and al, 0FFh + mov dx, 0A1h ; '¡' + out dx, al ; Interrupt Controller #2, 8259A + mov ax, [bp+var_2] + shr ax, 8 + sub al, 20h ; ' ' + mov dx, 0A3h ; '£' + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+var_2], 2921h + jb short loc_AC7E + cmp [bp+var_2], 2B7Eh + ja short loc_AC7E + cmp di, 278h + jg loc_AD9D + mov [bp+var_12], 0 + jmp short loc_AC71 +; --------------------------------------------------------------------------- + +loc_AC4F: ; CODE XREF: sub_AB4D+128j + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + inc [bp+var_12] + +loc_AC71: ; CODE XREF: sub_AB4D+100j + cmp [bp+var_12], 10h + jl short loc_AC4F + mov [bp+var_A], 0 + jmp short loc_ACD4 +; --------------------------------------------------------------------------- + +loc_AC7E: ; CODE XREF: sub_AB4D+EAj sub_AB4D+F1j + cmp di, 270h + jg loc_AD9D + mov [bp+var_12], 0 + jmp short loc_ACC9 +; --------------------------------------------------------------------------- + +loc_AC8D: ; CODE XREF: sub_AB4D+180j + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + mov dx, 0A5h ; '¥' + mov al, byte ptr [bp+var_12] + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + add ss:[bx], ax + inc [bp+var_12] + +loc_ACC9: ; CODE XREF: sub_AB4D+13Ej + cmp [bp+var_12], 10h + jl short loc_AC8D + mov [bp+var_A], 1 + +loc_ACD4: ; CODE XREF: sub_AB4D+12Fj + mov [bp+var_12], 0 + jmp loc_AD79 +; --------------------------------------------------------------------------- + +loc_ACDC: ; CODE XREF: sub_AB4D+230j + mov bx, [bp+var_12] + add bx, bx + lea ax, [bp+var_32] + add bx, ax + mov ax, ss:[bx] + mov [bp+var_4], ax + mov ax, [bp+var_E] + cmp ax, 1 + jz short loc_AD00 + cmp ax, 2 + jz short loc_AD16 + cmp ax, 3 + jz short loc_AD0C + jmp short loc_AD2C +; --------------------------------------------------------------------------- + +loc_AD00: ; CODE XREF: sub_AB4D+1A5j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + jmp short loc_AD2C +; --------------------------------------------------------------------------- + +loc_AD0C: ; CODE XREF: sub_AB4D+1AFj + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + +loc_AD16: ; CODE XREF: sub_AB4D+1AAj + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + xor si, [bp+var_4] + mov ax, si + add ax, ax + not ax + and [bp+var_4], ax + +loc_AD2C: ; CODE XREF: sub_AB4D+1B1j + ; sub_AB4D+1BDj + cmp [bp+var_C], 0 + jz short loc_AD5F + 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_AD72 +; --------------------------------------------------------------------------- + +loc_AD5F: ; CODE XREF: sub_AB4D+1E3j + mov ax, [bp+var_4] + shr ax, 8 + les bx, [bp+var_8] + mov es:[bx], al + mov al, byte ptr [bp+var_4] + mov es:[bx+1], al + +loc_AD72: ; CODE XREF: sub_AB4D+210j + add word ptr [bp+var_8], 50h ; 'P' + inc [bp+var_12] + +loc_AD79: ; CODE XREF: sub_AB4D+18Cj + cmp [bp+var_12], 10h + jl loc_ACDC + cmp [bp+var_A], 0 + jz short loc_AD8A + add di, 8 + +loc_AD8A: ; CODE XREF: sub_AB4D+238j + mov ax, [bp+var_10] + add ax, 8 + add di, ax + +loc_AD92: ; CODE XREF: sub_AB4D+32j + les bx, [bp+arg_6] + cmp byte ptr es:[bx], 0 + jnz loc_AB82 + +loc_AD9D: ; CODE XREF: sub_AB4D+F7j + ; sub_AB4D+135j + mov dx, 68h ; 'h' + mov al, 0Ah + out dx, al + call sub_FB6 + pop di + pop si + leave + retf +sub_AB4D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADAC proc far ; CODE XREF: sub_AFB0+16p + push bp + mov bp, sp + mov dword_F16C, 0A8000000h + mov dword_F170, 0B0000000h + mov dword_F174, 0B8000000h + mov dword_F178, 0E0000000h + pop bp + retf +sub_ADAC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADD5 proc far ; CODE XREF: sub_9D1D+9P sub_9D5C+38P ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + enter 2, 0 + push si + mov si, [bp+arg_0] + push large [bp+arg_2] + mov ax, si + imul ax, 48h + add ax, 1B64h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 1B4Ch + push ds + push ax + call sub_14D2 + mov [bp+var_2], ax + pop si + leave + retf +sub_ADD5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE00 proc far ; CODE XREF: sub_A510+3EP sub_A510+8BP ... + +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_6 = word ptr 0Ch + + enter 0Ah, 0 + push si + push di + 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 + xor di, di + jmp loc_AEAE +; --------------------------------------------------------------------------- + +loc_AE23: ; CODE XREF: sub_AE00+B1j + mov [bp+var_2], 0 + mov cx, si + jmp short loc_AE9F +; --------------------------------------------------------------------------- + +loc_AE2C: ; CODE XREF: sub_AE00+A8j + or si, si + jl short loc_AE99 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F16C + add bx, cx + mov ax, es:[bx] + mov [bp+var_A], ax + les bx, dword_F170 + add bx, cx + mov ax, es:[bx] + mov [bp+var_8], ax + les bx, dword_F174 + add bx, cx + mov ax, es:[bx] + mov [bp+var_6], ax + les bx, dword_F178 + add bx, cx + mov ax, es:[bx] + mov [bp+var_4], ax + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F16C + add bx, cx + mov ax, [bp+var_A] + mov es:[bx], ax + les bx, dword_F170 + add bx, cx + mov ax, [bp+var_8] + mov es:[bx], ax + les bx, dword_F174 + add bx, cx + mov ax, [bp+var_6] + mov es:[bx], ax + les bx, dword_F178 + add bx, cx + mov ax, [bp+var_4] + mov es:[bx], ax + +loc_AE99: ; CODE XREF: sub_AE00+2Ej + inc [bp+var_2] + add cx, 2 + +loc_AE9F: ; CODE XREF: sub_AE00+2Aj + mov ax, [bp+arg_2] + sar ax, 4 + cmp ax, [bp+var_2] + jg short loc_AE2C + add si, 50h ; 'P' + inc di + +loc_AEAE: ; CODE XREF: sub_AE00+20j + cmp di, [bp+arg_0] + jl loc_AE23 + pop di + pop si + leave + retf 8 +sub_AE00 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AEBB proc far ; CODE XREF: seg002:070Dp seg002:0716p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_E958, 0 + +loc_AEC4: ; CODE XREF: sub_AEBB+Fj + mov ax, word_E958 + cmp ax, [bp+arg_0] + jb short loc_AEC4 + pop bp + retf 2 +sub_AEBB endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_AED0 proc far ; CODE XREF: _main:loc_AABAP + ; sub_B77E:loc_B808P ... + mov word_F3C8, 0 + mov al, 7 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov bh, ah + mov al, 8 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 4 + jnz short loc_AEEE + test ah, 8 + jz short loc_AEF3 + +loc_AEEE: ; CODE XREF: sub_AED0+17j + or word_F3C8, 1 + +loc_AEF3: ; CODE XREF: sub_AED0+1Cj + test bh, 8 + jnz short loc_AEFD + test ah, 40h + jz short loc_AF02 + +loc_AEFD: ; CODE XREF: sub_AED0+26j + or word_F3C8, 4 + +loc_AF02: ; CODE XREF: sub_AED0+2Bj + test ah, 4 + jz short loc_AF0D + or word_F3C8, 1000h + +loc_AF0D: ; CODE XREF: sub_AED0+35j + test ah, 10h + jz short loc_AF18 + or word_F3C8, 2000h + +loc_AF18: ; CODE XREF: sub_AED0+40j + mov al, 9 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test bh, 20h + jnz short loc_AF28 + test ah, 8 + jz short loc_AF2D + +loc_AF28: ; CODE XREF: sub_AED0+51j + or word_F3C8, 2 + +loc_AF2D: ; CODE XREF: sub_AED0+56j + test bh, 10h + jnz short loc_AF37 + test ah, 1 + jz short loc_AF3C + +loc_AF37: ; CODE XREF: sub_AED0+60j + or word_F3C8, 8 + +loc_AF3C: ; CODE XREF: sub_AED0+65j + test ah, 4 + jz short loc_AF47 + or word_F3C8, 4000h + +loc_AF47: ; CODE XREF: sub_AED0+6Fj + test ah, 10h + jz short loc_AF52 + or word_F3C8, 8000h + +loc_AF52: ; CODE XREF: sub_AED0+7Aj + mov al, 5 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 2 + jz short loc_AF62 + or word_F3C8, 10h + +loc_AF62: ; CODE XREF: sub_AED0+8Bj + test ah, 4 + jz short loc_AF6C + or word_F3C8, 20h + +loc_AF6C: ; CODE XREF: sub_AED0+95j + mov al, 0 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_AF7C + or word_F3C8, 40h + +loc_AF7C: ; CODE XREF: sub_AED0+A5j + mov al, 3 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short loc_AF8D + or word_F3C8, 80h + +loc_AF8D: ; CODE XREF: sub_AED0+B5j + mov al, 2 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 1 + jz short loc_AF9E + or word_F3C8, 100h + +loc_AF9E: ; CODE XREF: sub_AED0+C6j + mov al, 6 + mov ah, 4 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + test ah, 10h + jz short locret_AFAE + or word_F3C8, 10h + +locret_AFAE: ; CODE XREF: sub_AED0+D7j + retf +sub_AED0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AFB0 proc far ; CODE XREF: _main+12P + push bp + mov bp, sp + push 3E80h + call sub_2726 + or ax, ax + jz short loc_AFC4 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_AFC4: ; CODE XREF: sub_AFB0+Dj + nop + push cs + call near ptr sub_ADAC + call sub_1B94 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + 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_2596 + call sub_1BBA + call sub_246E + call sub_2462 + call sub_71C + mov byte_D8B2, 12h + push ds + push offset aUmx ; "“Œ•û••–‚.˜^" + call sub_2F56 + xor ax, ax + pop bp + retf +sub_AFB0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B019 proc far ; CODE XREF: sub_9FAF+44P sub_A027+84P ... + push bp + mov bp, sp + call sub_2FB6 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + 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_2644 + call sub_2942 + call sub_2430 + call sub_71C + pop bp + retf +sub_B019 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_B058 proc far ; CODE XREF: _main+DP + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_182+2 + assume es:nothing + cmp byte ptr es:[bx+2], 4Dh ; 'M' + jnz short loc_B089 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_B089 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_B089 + mov byte_F3CC, 61h ; 'a' + mov byte_F3CB, 1 + mov byte_F3CD, 1 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_B089: ; CODE XREF: sub_B058+Ej sub_B058+15j ... + mov byte_F3CD, 0 + xor ax, ax + retf +sub_B058 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B092 proc far ; CODE XREF: sub_9BF0:loc_9C94P + ; sub_A6EF:loc_A73BP ... + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_B0A4 + inc bx + mov byte_F3CA, 1 + jmp short loc_B0A8 +; --------------------------------------------------------------------------- + +loc_B0A4: ; CODE XREF: sub_B092+8j + mov bl, byte_F3CB + +loc_B0A8: ; CODE XREF: sub_B092+10j + mov byte_DBEE, bl + mov ax, bx + retf +sub_B092 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_B0B0 proc far ; CODE XREF: _main+4P + mov byte_F3CC, 60h ; '`' + mov byte_F3CB, 0 + mov byte_F3CA, 0 + mov byte_F3CD, 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_B0E6 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_B0E6 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_B0E6 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_B0E6: ; CODE XREF: sub_B0B0+22j sub_B0B0+29j ... + xor ax, ax + retf +sub_B0B0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B0EA proc far ; CODE XREF: sub_9D5C+1DP + ; sub_9D5C+119P ... + +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_B0F4: ; CODE XREF: sub_B0EA+17j + les bx, [bp+arg_0] + add bx, si + mov al, es:[bx] + mov [si+1D9Eh], al + inc si + loop loc_B0F4 + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_B12B + cmp byte_F3CB, 0 + jz short loc_B12B + xor bx, bx + +loc_B114: ; CODE XREF: sub_B0EA+30j + inc bx + cmp byte ptr [bx+1D9Eh], 0 + jnz short loc_B114 + mov byte ptr [bx+1D9Eh], 6Dh ; 'm' + mov byte ptr [bx+1D9Fh], 64h ; 'd' + mov byte ptr [bx+1DA0h], 0 + +loc_B12B: ; CODE XREF: sub_B0EA+1Fj sub_B0EA+26j + mov dx, 1D9Eh + 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_B148 + cmp byte_F3CB, 0 + jz short loc_B148 + int 61h ; reserved for user interrupt + jmp short loc_B14A +; --------------------------------------------------------------------------- + +loc_B148: ; CODE XREF: sub_B0EA+51j sub_B0EA+58j + int 60h + +loc_B14A: ; CODE XREF: sub_B0EA+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_B0EA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B15A proc far ; CODE XREF: sub_9D1D+17P sub_A2FB+EAP ... + +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, 1B7Ch + push ax ; src + push ds + push offset unk_E928 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1D0A + pop bp + retf +sub_B15A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B17D proc far ; CODE XREF: sub_9D1D+22P sub_A2FB+F5P ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 6, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_4] + mov bx, di + shl bx, 2 + mov ax, [bx+1B4Eh] + mov dx, [bx+1B4Ch] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_B1F1 +; --------------------------------------------------------------------------- + +loc_B1A3: ; CODE XREF: sub_B17D+80j + push [bp+arg_0] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+1B78h] + call sub_1AC0 + inc si + cmp si, 190h + jl short loc_B1C4 + sub si, 190h + +loc_B1C4: ; CODE XREF: sub_B17D+41j + mov bx, di + imul bx, 48h + mov ax, [bx+1B78h] + 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_B1F1: ; CODE XREF: sub_B17D+24j + mov bx, di + imul bx, 48h + mov ax, [bx+1B7Ah] + cmp ax, [bp+var_6] + ja short loc_B1A3 + pop di + pop si + leave + retf +sub_B17D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B203 proc far ; CODE XREF: sub_9D5C+1B4P + ; sub_9FAF+32P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_DBEE, 0 + jz short loc_B21D + mov ax, [bp+arg_0] + cmp byte_F3CB, 1 + jz short loc_B21B + int 60h + jmp short loc_B21D +; --------------------------------------------------------------------------- + +loc_B21B: ; CODE XREF: sub_B203+12j + int 61h ; reserved for user interrupt + +loc_B21D: ; CODE XREF: sub_B203+8j sub_B203+16j + pop bp + retf +sub_B203 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + cmp byte_DBEE, 0 + jnz short loc_B232 + push 64h ; 'd' + nop + push cs + call near ptr sub_AEBB + pop bp + retf +; --------------------------------------------------------------------------- + +loc_B232: ; CODE XREF: seg002:0707j seg002:072Ej + push 1 + nop + push cs + call near ptr sub_AEBB + mov ah, 5 + cmp byte_F3CB, 1 + jz short loc_B246 + 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_B24B +; --------------------------------------------------------------------------- + +loc_B246: ; CODE XREF: seg002:0720j + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_B24B: ; CODE XREF: seg002:0724j + cmp ax, [bp+6] + jb short loc_B232 + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_B252 proc far ; CODE XREF: sub_9F37+3P sub_B2E8+AP + mov byte_DC33, 0 + mov byte_DBF0, 0FFh + retf +sub_B252 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B25E proc far ; CODE XREF: sub_9F37+AP sub_B2E8+11P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov dx, [bp+arg_0] + cmp byte_F3CA, 0 + jz short loc_B294 + cmp byte_DBF0, 0FFh + jnz short loc_B278 + mov byte_DBF0, dl + pop bp + retf +; --------------------------------------------------------------------------- + +loc_B278: ; CODE XREF: sub_B25E+12j + mov al, byte_DBF0 + mov ah, 0 + mov bx, ax + mov al, [bx+5C1h] + mov bx, dx + cmp al, [bx+5C1h] + ja short loc_B294 + mov byte_DBF0, dl + mov byte_DC33, 0 + +loc_B294: ; CODE XREF: sub_B25E+Bj sub_B25E+2Bj + pop bp + retf +sub_B25E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B296 proc far ; CODE XREF: sub_9F37+10P sub_B2E8+17P + cmp byte_F3CA, 0 + jz short locret_B2D1 + cmp byte_DBF0, 0FFh + jz short locret_B2D1 + cmp byte_DC33, 0 + jnz short loc_B2B2 + mov ah, 0Ch + mov al, byte_DBF0 + 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_B2B2: ; CODE XREF: sub_B296+13j + inc byte_DC33 + mov al, byte_DBF0 + mov ah, 0 + mov bx, ax + mov al, [bx+5E2h] + cmp al, byte_DC33 + jnb short locret_B2D1 + mov byte_DC33, 0 + mov byte_DBF0, 0FFh + +locret_B2D1: ; CODE XREF: sub_B296+5j sub_B296+Cj ... + retf +sub_B296 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2D2 proc far ; CODE XREF: sub_9D5C+ABP sub_9D5C+D5P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_E958, 0 + +loc_B2DB: ; CODE XREF: sub_B2D2+Fj + mov ax, word_E958 + cmp ax, [bp+arg_0] + jb short loc_B2DB + pop bp + retf 2 +sub_B2D2 endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 7 + 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_B2E8 proc far ; CODE XREF: sub_9D5C+142P + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov [bp+var_2], 1 + call sub_B252 + push 6 + call sub_B25E + pop cx + call sub_B296 + xor si, si + jmp short loc_B370 +; --------------------------------------------------------------------------- + +loc_B308: ; CODE XREF: sub_B2E8+8Bj + mov dx, 0A4h ; '¤' + mov al, byte ptr [bp+var_2] + out dx, al ; Interrupt Controller #2, 8259A + mov ax, 1 + sub ax, [bp+var_2] + mov [bp+var_2], ax + or si, si + jnz short loc_B320 + push 0 + jmp short loc_B330 +; --------------------------------------------------------------------------- + +loc_B320: ; CODE XREF: sub_B2E8+32j + cmp si, 5 + jnz short loc_B329 + push 1 + jmp short loc_B330 +; --------------------------------------------------------------------------- + +loc_B329: ; CODE XREF: sub_B2E8+3Bj + cmp si, 0Ah + jnz short loc_B33C + push 2 + +loc_B330: ; CODE XREF: sub_B2E8+36j sub_B2E8+3Fj + push 0 + push 0 + call sub_B17D + add sp, 6 + +loc_B33C: ; CODE XREF: sub_B2E8+44j + mov ax, si + mov bx, 3 + cwd + idiv bx + or dx, dx + jnz short loc_B350 + mov word_D876, 96h ; '–' + jmp short loc_B363 +; --------------------------------------------------------------------------- + +loc_B350: ; CODE XREF: sub_B2E8+5Ej + mov ax, si + mov bx, 3 + cwd + idiv bx + cmp dx, 1 + jnz short loc_B368 + mov word_D876, 64h ; 'd' + +loc_B363: ; CODE XREF: sub_B2E8+66j + call far ptr loc_1D0A + +loc_B368: ; CODE XREF: sub_B2E8+73j + push 1 + call sub_B2D2 + inc si + +loc_B370: ; CODE XREF: sub_B2E8+1Ej + cmp si, 12h + jl short loc_B308 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + push ds + push offset unk_F1DC + push word_F182 + push word_F180 + call sub_147A + push ds + push offset unk_F224 + push word_F186 + push word_F184 + call sub_147A + pop si + leave + retf +sub_B2E8 endp + +seg003 ends + +; =========================================================================== + +; Segment type: Pure code +seg004 segment byte public 'CODE' use16 + assume cs:seg004 + ;org 1 + 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_B3B1 proc near ; CODE XREF: sub_B77E+Bp + ; sub_B86E:loc_B8A0p ... + push bp + mov bp, sp + push si + push word ptr off_DC36+2 + push word ptr off_DC36 + call sub_8D4 + mov al, byte_DC34 + cbw + imul ax, 0B6h + push 0 + push ax + push 0 + call sub_910 + push ds + push offset word_F3EC + push 0B6h ; '¶' + call sub_820 + xor si, si + jmp short loc_B3EF +; --------------------------------------------------------------------------- + +loc_B3E4: ; CODE XREF: sub_B3B1+42j + mov al, [si+1DBCh] + add al, 0EEh ; 'î' + mov [si+1DBCh], al + inc si + +loc_B3EF: ; CODE XREF: sub_B3B1+31j + cmp si, 0B2h ; '²' + jl short loc_B3E4 + call sub_7B4 + pop si + pop bp + retn +sub_B3B1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B3FD proc near ; CODE XREF: sub_B5B0+79p + +var_9 = byte ptr -9 +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 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + enter 0Ah, 0 + push si + push di + mov di, 0A0h ; ' ' + mov [bp+var_2], 98h ; '˜' + mov [bp+var_4], 9680h + mov [bp+var_9], 0 + xor si, si + jmp short loc_B492 +; --------------------------------------------------------------------------- + +loc_B418: ; CODE XREF: sub_B3FD+98j + mov ax, [bp+var_4] + or ax, [bp+var_2] + jz short loc_B439 + push 0 + push 0Ah + push [bp+var_2] + push [bp+var_4] + push [bp+arg_4] + push [bp+arg_2] + call LDIV@ + push dx + push ax + jmp short loc_B443 +; --------------------------------------------------------------------------- + +loc_B439: ; CODE XREF: sub_B3FD+21j + push 0 + push 0Ah + push [bp+arg_4] + push [bp+arg_2] + +loc_B443: ; CODE XREF: sub_B3FD+3Aj + call F_LMOD@ + mov [bp+var_6], dx + mov [bp+var_8], ax + push 0 + push 0Ah + push [bp+var_2] + push [bp+var_4] + call LDIV@ + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+var_8] + add ax, 0A0h ; ' ' + mov di, ax + mov ax, [bp+var_8] + or ax, [bp+var_6] + jz short loc_B477 + mov [bp+var_9], 1 + +loc_B477: ; CODE XREF: sub_B3FD+74j + cmp [bp+var_9], 0 + jz short loc_B491 + mov ax, si + add ax, ax + add ax, 1Ah + push ax + push [bp+arg_6] + push di + push [bp+arg_0] + call sub_1092 + +loc_B491: ; CODE XREF: sub_B3FD+7Ej + inc si + +loc_B492: ; CODE XREF: sub_B3FD+19j + cmp si, 8 + jl short loc_B418 + pop di + pop si + leave + retn 8 +sub_B3FD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B49D proc near ; CODE XREF: sub_B5B0+B0p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push 30h ; '0' + push [bp+arg_4] + mov bx, [bp+arg_2] + shl bx, 2 + push word ptr [bx+676h] + push word ptr [bx+674h] + push [bp+arg_0] + call sub_2520 + pop bp + retn 6 +sub_B49D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4BF proc far ; CODE XREF: sub_B518+1Ep sub_B518+43p ... + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + enter 2, 0 + push si + push di + mov di, [bp+arg_6] + mov si, 1 + mov cx, 1 + jmp short loc_B4D8 +; --------------------------------------------------------------------------- + +loc_B4D0: ; CODE XREF: sub_B4BF+1Bj + mov ax, 0Ah + imul si + mov si, ax + inc cx + +loc_B4D8: ; CODE XREF: sub_B4BF+Fj + cmp cx, di + jl short loc_B4D0 + xor cx, cx + jmp short loc_B507 +; --------------------------------------------------------------------------- + +loc_B4E0: ; CODE XREF: sub_B4BF+4Aj + mov ax, [bp+arg_4] + cwd + idiv si + mov bx, 0Ah + cwd + idiv bx + mov [bp+var_2], dx + les bx, [bp+arg_0] + add bx, cx + mov al, byte ptr [bp+var_2] + add al, 30h ; '0' + mov es:[bx], al + mov bx, 0Ah + mov ax, si + cwd + idiv bx + mov si, ax + inc cx + +loc_B507: ; CODE XREF: sub_B4BF+1Fj + cmp cx, di + jl short loc_B4E0 + les bx, [bp+arg_0] + add bx, cx + mov byte ptr es:[bx], 0 + pop di + pop si + leave + retf +sub_B4BF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B518 proc near ; CODE XREF: sub_B5B0+B9p + +var_6 = byte ptr -6 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 6, 0 + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_0] + push 4 + mov bx, [bp+arg_2] + shl bx, 2 + push word ptr [bx+1E3Ch] + push ss + lea ax, [bp+var_6] + push ax + push cs + call near ptr sub_B4BF + push 38h ; '8' + push si + push ss + lea ax, [bp+var_6] + push ax + push di + call sub_2520 + push 2 + mov bx, [bp+arg_2] + shl bx, 2 + mov al, [bx+1E3Fh] + cbw + push ax + push ss + lea ax, [bp+var_6] + push ax + push cs + call near ptr sub_B4BF + push 3Ch ; '<' + push si + push 2Fh ; '/' + push di + call sub_24C8 + push 3Dh ; '=' + push si + push ss + lea ax, [bp+var_6] + push ax + push di + call sub_2520 + push 2 + mov bx, [bp+arg_2] + shl bx, 2 + mov al, [bx+1E3Eh] + cbw + push ax + push ss + lea ax, [bp+var_6] + push ax + push cs + call near ptr sub_B4BF + add sp, 18h + push 3Fh ; '?' + push si + push 2Fh ; '/' + push di + call sub_24C8 + push 40h ; '@' + push si + push ss + lea ax, [bp+var_6] + push ax + push di + call sub_2520 + pop di + pop si + leave + retn 6 +sub_B518 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B5B0 proc near ; CODE XREF: sub_B77E+6Dp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov di, 0E1h ; 'á' + push 16h + push 2 + push ds + push offset aMO_0 ; "±²Ï¼¬¸»®" + push 81h ; '' + call sub_10D6 + push 28h ; '(' + push 2 + push ds + mov al, byte_DC34 + cbw + shl ax, 3 + add ax, 654h + push ax + push 81h ; '' + call sub_10D6 + push 8 + push 4 + push ds + push offset aVicSob@b@b@b@b ; " ‚¨–¼‘O@@@@@@“¾“_@@@ STAG"... + push 81h ; '' + call sub_2520 + xor si, si + jmp short loc_B66D +; --------------------------------------------------------------------------- + +loc_B5F4: ; CODE XREF: sub_B5B0+C0j + cmp si, [bp+arg_0] + jnz short loc_B5FE + mov di, 81h ; '' + jmp short loc_B601 +; --------------------------------------------------------------------------- + +loc_B5FE: ; CODE XREF: sub_B5B0+47j + mov di, 0E1h ; 'á' + +loc_B601: ; CODE XREF: sub_B5B0+4Cj + push 0Ch + lea ax, [si+7] + push ax + push ds + mov ax, si + imul ax, 7 + add ax, 1DEAh + push ax + push di + call sub_10D6 + lea ax, [si+7] + push ax + mov bx, si + shl bx, 2 + push word ptr [bx+1DC0h] + push word ptr [bx+1DBEh] + push di + call sub_B3FD + cmp byte ptr [si+1E31h], 7Fh ; '' + jz short loc_B645 + push 2Ch ; ',' + lea ax, [si+7] + push ax + mov al, [si+1E31h] + mov ah, 0 + add ax, 0A0h ; ' ' + push ax + jmp short loc_B64E +; --------------------------------------------------------------------------- + +loc_B645: ; CODE XREF: sub_B5B0+81j + push 2Ch ; ',' + lea ax, [si+7] + push ax + push 0F0h ; 'ð' + +loc_B64E: ; CODE XREF: sub_B5B0+93j + push di + call sub_1092 + lea ax, [si+7] + push ax + mov al, [si+1E64h] + mov ah, 0 + push ax + push di + call sub_B49D + lea ax, [si+7] + push ax + push si + push di + call sub_B518 + inc si + +loc_B66D: ; CODE XREF: sub_B5B0+42j + cmp si, 0Ah + jl short loc_B5F4 + xor si, si + jmp short loc_B6B0 +; --------------------------------------------------------------------------- + +loc_B676: ; CODE XREF: sub_B5B0+103j + cmp si, [bp+arg_0] + jnz short loc_B680 + mov di, 81h ; '' + jmp short loc_B683 +; --------------------------------------------------------------------------- + +loc_B680: ; CODE XREF: sub_B5B0+C9j + mov di, 0E1h ; 'á' + +loc_B683: ; CODE XREF: sub_B5B0+CEj + cmp si, 9 + jz short loc_B695 + push 9 + lea ax, [si+7] + push ax + lea ax, [si+0A1h] + push ax + jmp short loc_B6A9 +; --------------------------------------------------------------------------- + +loc_B695: ; CODE XREF: sub_B5B0+D6j + push 8 + push 10h + push 0A1h ; '¡' + push di + call sub_1092 + push 0Ah + push 10h + push 0A0h ; ' ' + +loc_B6A9: ; CODE XREF: sub_B5B0+E3j + push di + call sub_1092 + inc si + +loc_B6B0: ; CODE XREF: sub_B5B0+C4j + cmp si, 0Ah + jl short loc_B676 + pop di + pop si + pop bp + retn 2 +sub_B5B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B6BB proc near ; CODE XREF: sub_B77E:loc_B829p + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + push 0C0h ; 'À' + push 0Ah + call sub_F8C + call sub_B90 + call sub_FB6 + inc word_DCB0 + xor si, si + jmp short loc_B723 +; --------------------------------------------------------------------------- + +loc_B6DD: ; CODE XREF: sub_B6BB+6Bj + mov ax, si + imul ax, 0A0h + add ax, word_DCB0 + mov [bp+var_2], ax + mov bx, 280h + cwd + idiv bx + mov [bp+var_2], dx + mov ax, si + imul ax, 64h + sub ax, word_DCB0 + mov di, ax + +loc_B6FE: ; CODE XREF: sub_B6BB+4Bj + or di, di + jge short loc_B708 + add di, 190h + jmp short loc_B6FE +; --------------------------------------------------------------------------- + +loc_B708: ; CODE XREF: sub_B6BB+45j + push [bp+var_2] + push di + push 0 + call far ptr loc_2BAA + mov ax, [bp+var_2] + add ax, 40h ; '@' + push ax + push di + push 1 + call far ptr loc_2BAA + inc si + +loc_B723: ; CODE XREF: sub_B6BB+20j + cmp si, 4 + jl short loc_B6DD + xor si, si + jmp short loc_B775 +; --------------------------------------------------------------------------- + +loc_B72C: ; CODE XREF: sub_B6BB+BDj + mov ax, si + imul ax, 0A0h + add ax, word_DCB0 + add ax, 140h + mov [bp+var_2], ax + mov bx, 280h + cwd + idiv bx + mov [bp+var_2], dx + mov ax, si + imul ax, 64h + sub ax, word_DCB0 + mov di, ax + +loc_B750: ; CODE XREF: sub_B6BB+9Dj + or di, di + jge short loc_B75A + add di, 190h + jmp short loc_B750 +; --------------------------------------------------------------------------- + +loc_B75A: ; CODE XREF: sub_B6BB+97j + push [bp+var_2] + push di + push 0 + call far ptr loc_2BAA + mov ax, [bp+var_2] + add ax, 40h ; '@' + push ax + push di + push 1 + call far ptr loc_2BAA + inc si + +loc_B775: ; CODE XREF: sub_B6BB+6Fj + cmp si, 4 + jl short loc_B72C + pop di + pop si + leave + retn +sub_B6BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B77E proc far ; CODE XREF: sub_A2FB+CCP _main+82P + +var_1 = byte ptr -1 + + enter 2, 0 + push si + xor si, si + mov [bp+var_1], 0 + call sub_B3B1 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + cmp byte_DCB2, 0 + jz short loc_B7B7 + mov byte_DCB2, 0 + push ds + push offset aOp_h_bft ; "op_h.bft" + call sub_2ACA + +loc_B7B7: ; CODE XREF: sub_B77E+29j + push ds + push offset aOp_h_rgb ; "op_h.rgb" + call sub_1FA2 + call far ptr loc_1D0A + push 80h ; '€' + push 60h ; '`' + push 200h + push 130h + call sub_AFE + push 0C0h ; 'À' + push 0Ah + call sub_F8C + call sub_B90 + call sub_FB6 + push 0FFFFh + call sub_B5B0 + mov word_DCB0, 0 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, [bp+var_1] + mov [bp+var_1], al + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + +loc_B808: ; CODE XREF: sub_B77E+CFj + call sub_AED0 + or si, si + jnz short loc_B81D + cmp word_F3C8, 0 + jnz short loc_B81D + mov si, 1 + jmp short loc_B829 +; --------------------------------------------------------------------------- + +loc_B81D: ; CODE XREF: sub_B77E+91j sub_B77E+98j + cmp si, 1 + jnz short loc_B829 + cmp word_F3C8, 0 + jnz short loc_B84F + +loc_B829: ; CODE XREF: sub_B77E+9Dj sub_B77E+A2j + call sub_B6BB + push 1 + call sub_B2D2 + mov dx, 0A6h ; '¦' + mov al, [bp+var_1] + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, [bp+var_1] + mov [bp+var_1], al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + mov ax, word_DCB0 + cmp ax, word_F4A4 + jbe short loc_B808 + +loc_B84F: ; CODE XREF: sub_B77E+A9j + mov word_F3C8, 0 + push 14h + call sub_B2D2 + push 0 + push 0 + push 27Fh + push 18Fh + call sub_AFE + pop si + leave + retf +sub_B77E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B86E proc far ; CODE XREF: _main:loc_A9DDP + +var_A = byte ptr -0Ah +var_6 = byte ptr -6 + + enter 0Ah, 0 + push si + push di + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_DCB4 + mov cx, 6 + call SCOPY@ + lea ax, [bp+var_A] + push ss + push ax + push ds + push offset unk_DCBA + mov cx, 3 + call SCOPY@ + mov di, 1 + mov byte_DC34, 0 + jmp short loc_B8D7 +; --------------------------------------------------------------------------- + +loc_B8A0: ; CODE XREF: sub_B86E+6Ej + call sub_B3B1 + mov al, byte_DC34 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + cmp ax, word_F3EC + jz short loc_B8C8 + mov al, byte_DC34 + cbw + mov bx, ax + mov byte ptr [bx+1E76h], 0 + xor di, di + jmp short loc_B8D3 +; --------------------------------------------------------------------------- + +loc_B8C8: ; CODE XREF: sub_B86E+49j + mov al, byte_DC34 + cbw + mov bx, ax + mov byte ptr [bx+1E76h], 1 + +loc_B8D3: ; CODE XREF: sub_B86E+58j + inc byte_DC34 + +loc_B8D7: ; CODE XREF: sub_B86E+30j + cmp byte_DC34, 3 + jl short loc_B8A0 + mov byte_DC34, 3 + call sub_B3B1 + xor si, si + jmp short loc_B902 +; --------------------------------------------------------------------------- + +loc_B8EA: ; CODE XREF: sub_B86E+97j + mov al, [bp+si+var_A] + mov ah, 0 + test word_F3EC, ax + jz short loc_B8FC + mov byte ptr [si+1E79h], 1 + jmp short loc_B901 +; --------------------------------------------------------------------------- + +loc_B8FC: ; CODE XREF: sub_B86E+85j + mov byte ptr [si+1E79h], 0 + +loc_B901: ; CODE XREF: sub_B86E+8Cj + inc si + +loc_B902: ; CODE XREF: sub_B86E+7Aj + cmp si, 3 + jl short loc_B8EA + mov ax, di + pop di + pop si + leave + retf +sub_B86E endp + +seg004 ends + +; =========================================================================== + +; Segment type: Pure code +seg005 segment byte public 'CODE' use16 + assume cs:seg005 + ;org 0Dh + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B90D proc far ; CODE XREF: sub_BD24+63p sub_BD24+FAp ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + cmp [bp+arg_2], 0 + jnz short loc_B953 + mov ax, [bp+arg_0] + or ax, ax + jz short loc_B92B + cmp ax, 1 + jz short loc_B930 + cmp ax, 2 + jz short loc_B938 + jmp short loc_B93E +; --------------------------------------------------------------------------- + +loc_B92B: ; CODE XREF: sub_B90D+10j + mov si, 10h + jmp short loc_B93B +; --------------------------------------------------------------------------- + +loc_B930: ; CODE XREF: sub_B90D+15j + mov si, 0E0h ; 'à' + mov di, 0E0h ; 'à' + jmp short loc_B93E +; --------------------------------------------------------------------------- + +loc_B938: ; CODE XREF: sub_B90D+1Aj + mov si, 1B0h + +loc_B93B: ; CODE XREF: sub_B90D+21j + mov di, 80h ; '€' + +loc_B93E: ; CODE XREF: sub_B90D+1Cj sub_B90D+29j + push si + push di + push 10h + push 90h ; '' + call sub_AE00 + push si + push di + push 0C0h ; 'À' + push 0Ah + jmp short loc_B9B2 +; --------------------------------------------------------------------------- + +loc_B953: ; CODE XREF: sub_B90D+9j + mov ax, [bp+arg_0] + or ax, ax + jz short loc_B966 + cmp ax, 1 + jz short loc_B96B + cmp ax, 2 + jz short loc_B973 + jmp short loc_B979 +; --------------------------------------------------------------------------- + +loc_B966: ; CODE XREF: sub_B90D+4Bj + mov si, 0D0h ; 'Ð' + jmp short loc_B976 +; --------------------------------------------------------------------------- + +loc_B96B: ; CODE XREF: sub_B90D+50j + mov si, 1A0h + mov di, 0E8h ; 'è' + jmp short loc_B979 +; --------------------------------------------------------------------------- + +loc_B973: ; CODE XREF: sub_B90D+55j + mov si, 270h + +loc_B976: ; CODE XREF: sub_B90D+5Cj + mov di, 88h ; 'ˆ' + +loc_B979: ; CODE XREF: sub_B90D+57j sub_B90D+64j + push si + push di + push 10h + push 90h ; '' + call sub_AE00 + mov ax, [bp+arg_0] + or ax, ax + jz short loc_B998 + cmp ax, 1 + jz short loc_B99D + cmp ax, 2 + jz short loc_B9A5 + jmp short loc_B9AB +; --------------------------------------------------------------------------- + +loc_B998: ; CODE XREF: sub_B90D+7Dj + mov si, 18h + jmp short loc_B9A8 +; --------------------------------------------------------------------------- + +loc_B99D: ; CODE XREF: sub_B90D+82j + mov si, 0E8h ; 'è' + mov di, 170h + jmp short loc_B9AB +; --------------------------------------------------------------------------- + +loc_B9A5: ; CODE XREF: sub_B90D+87j + mov si, 1B8h + +loc_B9A8: ; CODE XREF: sub_B90D+8Ej + mov di, 110h + +loc_B9AB: ; CODE XREF: sub_B90D+89j sub_B90D+96j + push si + push di + push 0C0h ; 'À' + push 8 + +loc_B9B2: ; CODE XREF: sub_B90D+44j + call sub_AE00 + pop di + pop si + pop bp + retf +sub_B90D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9BB proc far ; CODE XREF: sub_BBC0+12Fp + ; sub_BBC0+139p ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + enter 2, 0 + push si + push di + mov ax, [bp+arg_0] + sar ax, 3 + mov dx, [bp+arg_2] + shl dx, 6 + add ax, dx + mov dx, [bp+arg_2] + shl dx, 4 + add ax, dx + mov [bp+var_2], ax + push 0C0h ; 'À' + push 0 + call sub_F8C + xor si, si + jmp short loc_BA11 +; --------------------------------------------------------------------------- + +loc_B9E8: ; CODE XREF: sub_B9BB+5Aj + xor di, di + jmp short loc_BA07 +; --------------------------------------------------------------------------- + +loc_B9EC: ; CODE XREF: sub_B9BB+4Fj + test si, 1 + jz short loc_B9F7 + mov ax, 0AAAAh + jmp short loc_B9FA +; --------------------------------------------------------------------------- + +loc_B9F7: ; CODE XREF: sub_B9BB+35j + mov ax, 5555h + +loc_B9FA: ; CODE XREF: sub_B9BB+3Aj + les bx, dword_F16C + add bx, [bp+var_2] + mov es:[bx+di], ax + add di, 2 + +loc_BA07: ; CODE XREF: sub_B9BB+2Fj + cmp di, 18h + jl short loc_B9EC + inc si + add [bp+var_2], 50h ; 'P' + +loc_BA11: ; CODE XREF: sub_B9BB+2Bj + cmp si, 90h ; '' + jl short loc_B9E8 + call sub_FB6 + pop di + pop si + leave + retf +sub_B9BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA20 proc far ; CODE XREF: sub_BBC0+141p + ; sub_BBC0+149p ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + or ax, ax + jz short loc_BA38 + cmp ax, 1 + jz short loc_BA3D + cmp ax, 2 + jz short loc_BA45 + jmp short loc_BA4B +; --------------------------------------------------------------------------- + +loc_BA38: ; CODE XREF: sub_BA20+Aj + mov si, 10h + jmp short loc_BA48 +; --------------------------------------------------------------------------- + +loc_BA3D: ; CODE XREF: sub_BA20+Fj + mov si, 0E0h ; 'à' + mov di, 88h ; 'ˆ' + jmp short loc_BA4B +; --------------------------------------------------------------------------- + +loc_BA45: ; CODE XREF: sub_BA20+14j + mov si, 1B0h + +loc_BA48: ; CODE XREF: sub_BA20+1Bj + mov di, 128h + +loc_BA4B: ; CODE XREF: sub_BA20+16j sub_BA20+23j + push 0C0h ; 'À' + push [bp+arg_2] + call sub_F8C + lea ax, [si+8] + push ax + lea ax, [di+8] + push ax + lea ax, [si+0C8h] + push ax + lea ax, [di+48h] + push ax + push 8 + call sub_EAA + push 0C0h ; 'À' + push 0 + call sub_F8C + push si + push di + lea ax, [si+0C0h] + push ax + lea ax, [di+40h] + push ax + push 8 + call sub_EAA + call sub_FB6 + mov bx, [bp+arg_0] + imul bx, 0Ch + push word ptr [bx+6F4h] + push word ptr [bx+6F2h] + mov ax, [bp+arg_2] + or ax, 20h + push ax + lea ax, [di+8] + push ax + lea ax, [si+8] + push ax + call sub_AB4D + mov bx, [bp+arg_0] + imul bx, 0Ch + push word ptr [bx+6F8h] + push word ptr [bx+6F6h] + mov ax, [bp+arg_2] + or ax, 20h + push ax + lea ax, [di+18h] + push ax + lea ax, [si+8] + push ax + call sub_AB4D + mov bx, [bp+arg_0] + imul bx, 0Ch + push word ptr [bx+6FCh] + push word ptr [bx+6FAh] + mov ax, [bp+arg_2] + or ax, 20h + push ax + lea ax, [di+28h] + push ax + lea ax, [si+8] + push ax + call sub_AB4D + add sp, 1Eh + pop di + pop si + pop bp + retf +sub_BA20 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BAFC proc far ; CODE XREF: sub_BBC0+158p + push bp + mov bp, sp + push 0C0h ; 'À' + push 0Ch + call sub_F8C + push 88h ; 'ˆ' + push 18h + push 208h + push 38h ; '8' + push 8 + call sub_EAA + push 0C0h ; 'À' + push 0 + call sub_F8C + push 80h ; '€' + push 10h + push 200h + push 30h ; '0' + push 8 + call sub_EAA + call sub_FB6 + push word ptr off_DD46+2 + push word ptr off_DD46 + push 2Ch ; ',' + push 18h + push 90h ; '' + call sub_AB4D + add sp, 0Ah + les bx, dword_F3DC + cmp byte ptr es:[bx+0Bh], 5 + jnz short loc_BBBE + push 0C0h ; 'À' + push 0Ch + call sub_F8C + push 18h + push 38h ; '8' + push 278h + push 68h ; 'h' + push 8 + call sub_EAA + push 0C0h ; 'À' + push 0 + call sub_F8C + push 10h + push 30h ; '0' + push 270h + push 60h ; '`' + push 8 + call sub_EAA + call sub_FB6 + push word ptr off_DD4A+2 + push word ptr off_DD4A + push 2Fh ; '/' + push 38h ; '8' + push 20h ; ' ' + call sub_AB4D + push word ptr off_DD4E+2 + push word ptr off_DD4E + push 2Fh ; '/' + push 48h ; 'H' + push 20h ; ' ' + call sub_AB4D + add sp, 14h + +loc_BBBE: ; CODE XREF: sub_BAFC+5Ej + pop bp + retf +sub_BAFC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BBC0 proc far ; CODE XREF: sub_BD24+2Dp + push bp + mov bp, sp + mov word_D876, 0 + call far ptr loc_1D0A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aTselect_pi ; "TSELECT.pi" + push 3 + call sub_ADD5 + push 3 + call sub_B15A + push 3 + push 0 + push 0 + call sub_B17D + add sp, 0Eh + push ds + push offset unk_F26C + push word_F18A + push word_F188 + call sub_147A + push 1 + call sub_1290 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + les bx, dword_F3DC + cmp byte ptr es:[bx+0Bh], 5 + jz short loc_BC61 + cmp byte_F4A6, 0 + jz short loc_BC3A + push word ptr off_DD52+2 + push word ptr off_DD52 + push 2Fh ; '/' + push 70h ; 'p' + push 10h + call sub_AB4D + add sp, 0Ah + +loc_BC3A: ; CODE XREF: sub_BBC0+62j + cmp byte_F4A7, 0 + jz short loc_BC58 + push word ptr off_DD52+2 + push word ptr off_DD52 + push 2Fh ; '/' + push 70h ; 'p' + push 0E0h ; 'à' + call sub_AB4D + add sp, 0Ah + +loc_BC58: ; CODE XREF: sub_BBC0+7Fj + cmp byte_F4A8, 0 + jz short loc_BCBA + jmp short loc_BCA3 +; --------------------------------------------------------------------------- + +loc_BC61: ; CODE XREF: sub_BBC0+5Bj + cmp byte_F4A9, 0 + jz short loc_BC7E + push word ptr off_DD52+2 + push word ptr off_DD52 + push 2Fh ; '/' + push 70h ; 'p' + push 10h + call sub_AB4D + add sp, 0Ah + +loc_BC7E: ; CODE XREF: sub_BBC0+A6j + cmp byte_F4AA, 0 + jz short loc_BC9C + push word ptr off_DD52+2 + push word ptr off_DD52 + push 2Fh ; '/' + push 70h ; 'p' + push 0E0h ; 'à' + call sub_AB4D + add sp, 0Ah + +loc_BC9C: ; CODE XREF: sub_BBC0+C3j + cmp byte_F4AB, 0 + jz short loc_BCBA + +loc_BCA3: ; CODE XREF: sub_BBC0+9Fj + push word ptr off_DD52+2 + push word ptr off_DD52 + push 2Fh ; '/' + push 70h ; 'p' + push 1B0h + call sub_AB4D + add sp, 0Ah + +loc_BCBA: ; CODE XREF: sub_BBC0+9Dj sub_BBC0+E1j + push 0 + push 88h ; 'ˆ' + push 18h + call sub_B17D + push 1 + push 0E0h ; 'à' + push 0E0h ; 'à' + call sub_B17D + push 2 + push 88h ; 'ˆ' + push 1B8h + call sub_B17D + les bx, dword_F3DC + mov byte ptr es:[bx+26h], 1 + push 88h ; 'ˆ' + push 18h + push cs + call near ptr sub_B9BB + push 88h ; 'ˆ' + push 1B8h + push cs + call near ptr sub_B9BB + push 7 + push 0 + push cs + call near ptr sub_BA20 + push 0Ch + push 1 + push cs + call near ptr sub_BA20 + push 7 + push 2 + push cs + call near ptr sub_BA20 + add sp, 26h + push cs + call near ptr sub_BAFC + push 2 + call far ptr loc_536 + pop bp + retf +sub_BBC0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BD24 proc far ; CODE XREF: sub_9FAF+2AP sub_A0C6+3CP + +var_C = byte ptr -0Ch +var_6 = byte ptr -6 + + enter 0Ch, 0 + push si + push di + xor si, si + lea ax, [bp+var_6] + push ss + push ax + push ds + push offset unk_DD56 + mov cx, 6 + call SCOPY@ + lea ax, [bp+var_C] + push ss + push ax + push ds + push offset unk_DD5C + mov cx, 6 + call SCOPY@ + xor di, di + push cs + call near ptr sub_BBC0 + +loc_BD54: ; CODE XREF: sub_BD24+286j + ; sub_BD24+28Bj ... + call sub_AED0 + or si, si + jz short loc_BD60 + jmp loc_BF95 +; --------------------------------------------------------------------------- + +loc_BD60: ; CODE XREF: sub_BD24+37j + test byte ptr word_F3C8, 4 + jnz short loc_BD6A + jmp loc_BE6D +; --------------------------------------------------------------------------- + +loc_BD6A: ; CODE XREF: sub_BD24+41j + push 7 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_BA20 + add sp, 4 + push 1 + call sub_B2D2 + push 0 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_B90D + add sp, 4 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + call sub_B17D + add sp, 6 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + push cs + call near ptr sub_B9BB + add sp, 4 + dec byte_DD20 + cmp byte_DD20, 0 + jge short loc_BE0F + mov byte_DD20, 2 + +loc_BE0F: ; CODE XREF: sub_BD24+E4j + push 1 + call sub_B2D2 + push 1 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_B90D + add sp, 4 + push 1 + call sub_B2D2 + push 0Ch + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_BA20 + add sp, 4 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + push word ptr ss:[bx] + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + push word ptr ss:[bx] + call sub_B17D + add sp, 6 + +loc_BE6D: ; CODE XREF: sub_BD24+43j + test byte ptr word_F3C8, 8 + jnz short loc_BE77 + jmp loc_BF7A +; --------------------------------------------------------------------------- + +loc_BE77: ; CODE XREF: sub_BD24+14Ej + push 0 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_B90D + add sp, 4 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + call sub_B17D + add sp, 6 + push 1 + call sub_B2D2 + push 7 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_BA20 + add sp, 4 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + mov ax, ss:[bx] + add ax, 8 + push ax + push cs + call near ptr sub_B9BB + add sp, 4 + inc byte_DD20 + cmp byte_DD20, 2 + jle short loc_BF1C + mov byte_DD20, 0 + +loc_BF1C: ; CODE XREF: sub_BD24+1F1j + push 1 + call sub_B2D2 + push 1 + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_B90D + add sp, 4 + push 1 + call sub_B2D2 + push 0Ch + mov al, byte_DD20 + cbw + push ax + push cs + call near ptr sub_BA20 + add sp, 4 + push 1 + call sub_B2D2 + mov al, byte_DD20 + cbw + push ax + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_C] + add ax, dx + mov bx, ax + push word ptr ss:[bx] + mov al, byte_DD20 + cbw + add ax, ax + lea dx, [bp+var_6] + add ax, dx + mov bx, ax + push word ptr ss:[bx] + call sub_B17D + add sp, 6 + +loc_BF7A: ; CODE XREF: sub_BD24+150j + test byte ptr word_F3C8, 10h + jnz short loc_BF88 + test byte ptr word_F3C8, 80h + jz short loc_BF95 + +loc_BF88: ; CODE XREF: sub_BD24+25Bj + les bx, dword_F3DC + mov al, byte_DD20 + mov es:[bx+26h], al + jmp short loc_BFB7 +; --------------------------------------------------------------------------- + +loc_BF95: ; CODE XREF: sub_BD24+39j + ; sub_BD24+262j + push 1 + call sub_B2D2 + mov si, word_F3C8 + or si, si + jz short loc_BFB2 + inc di + cmp di, 1Eh + ja short loc_BFAD + jmp loc_BD54 +; --------------------------------------------------------------------------- + +loc_BFAD: ; CODE XREF: sub_BD24+284j + xor si, si + jmp loc_BD54 +; --------------------------------------------------------------------------- + +loc_BFB2: ; CODE XREF: sub_BD24+27Ej + xor di, di + jmp loc_BD54 +; --------------------------------------------------------------------------- + +loc_BFB7: ; CODE XREF: sub_BD24+26Fj + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + push ds + push offset unk_F1DC + push word_F182 + push word_F180 + call sub_147A + push ds + push offset unk_F224 + push word_F186 + push word_F184 + call sub_147A + push 1 + call sub_57A + pop di + pop si + leave + retf +sub_BD24 endp + +seg005 ends + +; =========================================================================== + +; Segment type: Pure code +seg006 segment byte public 'CODE' use16 + assume cs:seg006 + ;org 5 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFF5 proc near ; CODE XREF: sub_C070+19p sub_C7A0+CCp ... + +var_1 = byte ptr -1 +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + enter 2, 0 + mov al, 1 + sub al, byte ptr word_F57C+1 + mov [bp+var_1], al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+8E8h] + push word ptr [bx+8E6h] + mov al, [bp+arg_0] + mov ah, 0 + or ax, 20h + push ax + mov al, [bp+arg_2] + mov ah, 0 + add ax, 6 + shl ax, 4 + push ax + push 10h + call sub_AB4D + mov dx, 0A6h ; '¦' + mov al, byte ptr word_F57C+1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+8E8h] + push word ptr [bx+8E6h] + mov al, [bp+arg_0] + mov ah, 0 + or ax, 20h + push ax + mov al, [bp+arg_2] + mov ah, 0 + add ax, 6 + shl ax, 4 + push ax + push 10h + call sub_AB4D + add sp, 14h + leave + retn 4 +sub_BFF5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C070 proc near ; CODE XREF: sub_C7A0+64p + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + push si + xor si, si + jmp short loc_C08D +; --------------------------------------------------------------------------- + +loc_C078: ; CODE XREF: sub_C070+20j + push si + mov al, [bp+arg_0] + mov ah, 0 + cmp ax, si + jnz short loc_C086 + mov al, 0Fh + jmp short loc_C088 +; --------------------------------------------------------------------------- + +loc_C086: ; CODE XREF: sub_C070+10j + mov al, 3 + +loc_C088: ; CODE XREF: sub_C070+14j + push ax + call sub_BFF5 + inc si + +loc_C08D: ; CODE XREF: sub_C070+6j + cmp si, 11h + jl short loc_C078 + pop si + pop bp + retn 2 +sub_C070 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C097 proc near ; CODE XREF: sub_C7A0+7Ap + push bp + mov bp, sp + push si + push 7D00h + call sub_2796 + mov word ptr dword_F57E+2, ax + mov word ptr dword_F57E, 0 + xor si, si + jmp short loc_C0CD +; --------------------------------------------------------------------------- + +loc_C0B0: ; CODE XREF: sub_C097+3Aj + les bx, dword_F16C + add bx, si + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F57E + add bx, si + mov es:[bx+2], dx + mov es:[bx], ax + add si, 4 + +loc_C0CD: ; CODE XREF: sub_C097+17j + cmp si, 7D00h + jl short loc_C0B0 + pop si + pop bp + retn +sub_C097 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C0D6 proc near ; CODE XREF: sub_C7A0:loc_C978p + push bp + mov bp, sp + push word ptr dword_F57E+2 + call sub_289A + pop bp + retn +sub_C0D6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C0E4 proc near ; CODE XREF: sub_C3AC+3p sub_C726+Bp + push bp + mov bp, sp + xor cx, cx + jmp short loc_C108 +; --------------------------------------------------------------------------- + +loc_C0EB: ; CODE XREF: sub_C0E4+28j + les bx, dword_F57E + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F16C + add bx, cx + mov es:[bx+2], dx + mov es:[bx], ax + add cx, 4 + +loc_C108: ; CODE XREF: sub_C0E4+5j + cmp cx, 7D00h + jl short loc_C0EB + pop bp + retn +sub_C0E4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C110 proc near ; CODE XREF: sub_C1B2+E8p + +var_3 = byte ptr -3 +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + enter 4, 0 + push si + push di + mov di, [bp+arg_A] + sar [bp+arg_6], 4 + mov [bp+var_2], 0 + jmp short loc_C18E +; --------------------------------------------------------------------------- + +loc_C124: ; CODE XREF: sub_C110+84j + mov ax, [bp+var_2] + shl ax, 8 + cwd + idiv [bp+arg_2] + add al, [bp+arg_0] + mov [bp+var_3], al + mov ax, [bp+arg_4] + cwd + mov bl, [bp+var_3] + mov bh, 0 + add bx, bx + push ax + mov ax, [bx+308h] + push dx + cwd + pop cx + pop bx + call LXMUL@ + mov cl, 8 + call LXRSH@ + add ax, [bp+arg_8] + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di], ax + mov ax, [bp+arg_4] + cwd + mov bl, [bp+var_3] + mov bh, 0 + add bx, bx + push ax + mov ax, [bx+288h] + push dx + cwd + pop cx + pop bx + call LXMUL@ + mov cl, 8 + call LXRSH@ + add ax, [bp+arg_6] + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di+2], ax + inc [bp+var_2] + +loc_C18E: ; CODE XREF: sub_C110+12j + mov ax, [bp+var_2] + cmp ax, [bp+arg_2] + jl short loc_C124 + mov bx, [bp+var_2] + shl bx, 2 + mov ax, [di] + mov [bx+di], ax + mov bx, [bp+var_2] + shl bx, 2 + mov ax, [di+2] + mov [bx+di+2], ax + pop di + pop si + leave + retn 0Ch +sub_C110 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C1B2 proc near ; CODE XREF: sub_C3AC+10p + push bp + mov bp, sp + push si + cmp byte_DF96, 0 + jz short loc_C1C0 + jmp loc_C263 +; --------------------------------------------------------------------------- + +loc_C1C0: ; CODE XREF: sub_C1B2+9j + xor si, si + jmp loc_C256 +; --------------------------------------------------------------------------- + +loc_C1C5: ; CODE XREF: sub_C1B2+A9j + call sub_1F78 + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1EACh], dx + call sub_1F78 + mov bx, 1900h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1EAEh], dx + call sub_1F78 + and ax, 7 + mov dx, 4 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+1EECh], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+1EECh], 0 + jnz short loc_C21A + mov bx, si + shl bx, 2 + mov word ptr [bx+1EECh], 1 + +loc_C21A: ; CODE XREF: sub_C1B2+5Bj + call sub_1F78 + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+1EEEh], ax + call sub_1F78 + mov [si+1F2Ch], al + call sub_1F78 + and al, 7 + mov dl, 4 + sub dl, al + mov [si+1F3Ch], dl + cmp byte ptr [si+1F3Ch], 0 + jnz short loc_C255 + mov byte ptr [si+1F3Ch], 4 + +loc_C255: ; CODE XREF: sub_C1B2+9Cj + inc si + +loc_C256: ; CODE XREF: sub_C1B2+10j + cmp si, 10h + jge short loc_C25E + jmp loc_C1C5 +; --------------------------------------------------------------------------- + +loc_C25E: ; CODE XREF: sub_C1B2+A7j + mov byte_DF96, 1 + +loc_C263: ; CODE XREF: sub_C1B2+Bj + xor si, si + jmp loc_C3A1 +; --------------------------------------------------------------------------- + +loc_C268: ; CODE XREF: sub_C1B2+1F4j + push 1E84h + mov bx, si + shl bx, 2 + push word ptr [bx+1EACh] + mov bx, si + shl bx, 2 + push word ptr [bx+1EAEh] + mov ax, si + and ax, 3 + shl ax, 4 + add ax, 40h ; '@' + push ax + mov ax, si + mov bx, 4 + cwd + idiv bx + add ax, 3 + push ax + mov al, [si+1F2Ch] + push ax + call sub_C110 + mov bx, si + shl bx, 2 + mov ax, [bx+1EECh] + mov bx, si + shl bx, 2 + add [bx+1EACh], ax + mov bx, si + shl bx, 2 + mov ax, [bx+1EEEh] + mov bx, si + shl bx, 2 + add [bx+1EAEh], ax + mov al, [si+1F3Ch] + add [si+1F2Ch], al + mov bx, si + shl bx, 2 + cmp word ptr [bx+1EACh], 0 + jle short loc_C2E2 + mov bx, si + shl bx, 2 + cmp word ptr [bx+1EACh], 27Fh + jl short loc_C2F4 + +loc_C2E2: ; CODE XREF: sub_C1B2+121j + mov bx, si + shl bx, 2 + mov dx, 0FFFFh + mov ax, [bx+1EECh] + imul dx + mov [bx+1EECh], ax + +loc_C2F4: ; CODE XREF: sub_C1B2+12Ej + mov bx, si + shl bx, 2 + cmp word ptr [bx+1EAEh], 1F40h + jge short loc_C304 + jmp loc_C38B +; --------------------------------------------------------------------------- + +loc_C304: ; CODE XREF: sub_C1B2+14Dj + call sub_1F78 + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1EACh], dx + mov bx, si + shl bx, 2 + mov word ptr [bx+1EAEh], 0F9C0h + call sub_1F78 + and ax, 0Fh + mov dx, 8 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+1EECh], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+1EECh], 0 + jnz short loc_C350 + mov bx, si + shl bx, 2 + mov word ptr [bx+1EECh], 1 + +loc_C350: ; CODE XREF: sub_C1B2+191j + call sub_1F78 + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+1EEEh], ax + call sub_1F78 + mov [si+1F2Ch], al + call sub_1F78 + and al, 7 + mov dl, 4 + sub dl, al + mov [si+1F3Ch], dl + cmp byte ptr [si+1F3Ch], 0 + jnz short loc_C38B + mov byte ptr [si+1F3Ch], 4 + +loc_C38B: ; CODE XREF: sub_C1B2+14Fj + ; sub_C1B2+1D2j + push ds + push offset unk_F4B4 + mov ax, si + mov bx, 4 + cwd + idiv bx + add ax, 3 + push ax + call sub_C7C + inc si + +loc_C3A1: ; CODE XREF: sub_C1B2+B3j + cmp si, 10h + jge short loc_C3A9 + jmp loc_C268 +; --------------------------------------------------------------------------- + +loc_C3A9: ; CODE XREF: sub_C1B2+1F2j + pop si + pop bp + retn +sub_C1B2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C3AC proc near ; CODE XREF: sub_C7A0+B5p + ; sub_C7A0+1A4p ... + push bp + mov bp, sp + call sub_C0E4 + push 0CEh ; 'Î' + push 0Fh + call sub_F8C + call sub_C1B2 + call sub_FB6 + mov dx, 0A4h ; '¤' + mov al, byte ptr word_F57C+1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte ptr word_F57C+1 + mov byte ptr word_F57C+1, al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_B2D2 + pop bp + retn +sub_C3AC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C3E1 proc near ; CODE XREF: sub_C7A0+7Dp + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov [bp+var_6], 0 + jmp short loc_C409 +; --------------------------------------------------------------------------- + +loc_C3EE: ; CODE XREF: sub_C3E1+2Cj + push 3200h + call sub_2796 + mov bx, [bp+var_6] + shl bx, 2 + mov [bx+1F54h], ax + mov word ptr [bx+1F52h], 0 + inc [bp+var_6] + +loc_C409: ; CODE XREF: sub_C3E1+Bj + cmp [bp+var_6], 4 + jl short loc_C3EE + xor si, si + mov di, 40h ; '@' + jmp loc_C4AC +; --------------------------------------------------------------------------- + +loc_C417: ; CODE XREF: sub_C3E1+D0j + mov [bp+var_2], 0A0h ; ' ' + jmp loc_C4A1 +; --------------------------------------------------------------------------- + +loc_C41F: ; CODE XREF: sub_C3E1+C7j + 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_4], ax + les bx, dword_F16C + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F582 + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F170 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F586 + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F174 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F58A + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F178 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F58E + mov es:[bx+si+2], dx + mov es:[bx+si], ax + add si, 4 + add [bp+var_2], 20h ; ' ' + +loc_C4A1: ; CODE XREF: sub_C3E1+3Bj + cmp [bp+var_2], 1E0h + jge short loc_C4AB + jmp loc_C41F +; --------------------------------------------------------------------------- + +loc_C4AB: ; CODE XREF: sub_C3E1+C5j + inc di + +loc_C4AC: ; CODE XREF: sub_C3E1+33j + cmp di, 50h ; 'P' + jge short loc_C4B4 + jmp loc_C417 +; --------------------------------------------------------------------------- + +loc_C4B4: ; CODE XREF: sub_C3E1+CEj + mov di, 50h ; 'P' + jmp loc_C54F +; --------------------------------------------------------------------------- + +loc_C4BA: ; CODE XREF: sub_C3E1+174j + mov [bp+var_2], 130h + jmp loc_C544 +; --------------------------------------------------------------------------- + +loc_C4C2: ; CODE XREF: sub_C3E1+16Aj + 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_4], ax + les bx, dword_F16C + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F582 + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F170 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F586 + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F174 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F58A + mov es:[bx+si+2], dx + mov es:[bx+si], ax + les bx, dword_F178 + add bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword ptr unk_F58E + mov es:[bx+si+2], dx + mov es:[bx+si], ax + add si, 4 + add [bp+var_2], 20h ; ' ' + +loc_C544: ; CODE XREF: sub_C3E1+DEj + cmp [bp+var_2], 270h + jge short loc_C54E + jmp loc_C4C2 +; --------------------------------------------------------------------------- + +loc_C54E: ; CODE XREF: sub_C3E1+168j + inc di + +loc_C54F: ; CODE XREF: sub_C3E1+D6j + cmp di, 180h + jge short loc_C558 + jmp loc_C4BA +; --------------------------------------------------------------------------- + +loc_C558: ; CODE XREF: sub_C3E1+172j + pop di + pop si + leave + retn +sub_C3E1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C55C proc near ; CODE XREF: sub_C726+8p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push ds + push offset aMusic_txt ; "MUSIC.TXT" + call sub_8D4 + mov ax, [bp+arg_0] + imul ax, 348h + cwd + push dx + push ax + push 0 + call sub_910 + push ds + push offset unk_F592 + push 348h + call sub_820 + call sub_7B4 + xor si, si + jmp short loc_C59A +; --------------------------------------------------------------------------- + +loc_C58F: ; CODE XREF: sub_C55C+41j + mov bx, si + imul bx, 2Ah + mov byte ptr [bx+1F8Ah], 0 + inc si + +loc_C59A: ; CODE XREF: sub_C55C+31j + cmp si, 14h + jl short loc_C58F + pop si + pop bp + retn 2 +sub_C55C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C5A4 proc near ; CODE XREF: sub_C7A0+1DBp + push bp + mov bp, sp + push word_F584 + call sub_289A + push word_F588 + call sub_289A + push word_F58C + call sub_289A + push word_F590 + call sub_289A + pop bp + retn +sub_C5A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C5CD proc near ; CODE XREF: sub_C726+Ep + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + xor cx, cx + mov si, 40h ; '@' + jmp loc_C673 +; --------------------------------------------------------------------------- + +loc_C5DB: ; CODE XREF: sub_C5CD+ABj + mov di, 0A0h ; ' ' + jmp loc_C669 +; --------------------------------------------------------------------------- + +loc_C5E1: ; CODE XREF: sub_C5CD+A2j + mov ax, di + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + mov dx, si + shl dx, 4 + add ax, dx + mov [bp+var_2], ax + les bx, dword ptr unk_F582 + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F16C + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F586 + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F170 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F58A + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F174 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F58E + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F178 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + add cx, 4 + add di, 20h ; ' ' + +loc_C669: ; CODE XREF: sub_C5CD+11j + cmp di, 1E0h + jge short loc_C672 + jmp loc_C5E1 +; --------------------------------------------------------------------------- + +loc_C672: ; CODE XREF: sub_C5CD+A0j + inc si + +loc_C673: ; CODE XREF: sub_C5CD+Bj + cmp si, 50h ; 'P' + jge short loc_C67B + jmp loc_C5DB +; --------------------------------------------------------------------------- + +loc_C67B: ; CODE XREF: sub_C5CD+A9j + mov si, 50h ; 'P' + jmp loc_C719 +; --------------------------------------------------------------------------- + +loc_C681: ; CODE XREF: sub_C5CD+152j + mov di, 130h + jmp loc_C70F +; --------------------------------------------------------------------------- + +loc_C687: ; CODE XREF: sub_C5CD+148j + mov ax, di + sar ax, 3 + mov dx, si + shl dx, 6 + add ax, dx + mov dx, si + shl dx, 4 + add ax, dx + mov [bp+var_2], ax + les bx, dword ptr unk_F582 + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F16C + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F586 + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F170 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F58A + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F174 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, dword ptr unk_F58E + add bx, cx + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F178 + add bx, [bp+var_2] + mov es:[bx+2], dx + mov es:[bx], ax + add cx, 4 + add di, 20h ; ' ' + +loc_C70F: ; CODE XREF: sub_C5CD+B7j + cmp di, 270h + jge short loc_C718 + jmp loc_C687 +; --------------------------------------------------------------------------- + +loc_C718: ; CODE XREF: sub_C5CD+146j + inc si + +loc_C719: ; CODE XREF: sub_C5CD+B1j + cmp si, 180h + jge short loc_C722 + jmp loc_C681 +; --------------------------------------------------------------------------- + +loc_C722: ; CODE XREF: sub_C5CD+150j + pop di + pop si + leave + retn +sub_C5CD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C726 proc near ; CODE XREF: sub_C7A0+8Cp sub_C7A0+9Bp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + push [bp+arg_0] + call sub_C55C + call sub_C0E4 + call sub_C5CD + push ds + push offset unk_F592 + push 1Fh + push 40h ; '@' + push 0A0h ; ' ' + call sub_AB4D + add sp, 0Ah + mov si, 1 + jmp short loc_C76E +; --------------------------------------------------------------------------- + +loc_C74F: ; CODE XREF: sub_C726+4Bj + push ds + mov ax, si + imul ax, 2Ah + add ax, 1F62h + push ax + push 1Dh + lea ax, [si+4] + shl ax, 4 + push ax + push 130h + call sub_AB4D + add sp, 0Ah + inc si + +loc_C76E: ; CODE XREF: sub_C726+27j + cmp si, 14h + jl short loc_C74F + xor di, di + jmp short loc_C794 +; --------------------------------------------------------------------------- + +loc_C777: ; CODE XREF: sub_C726+72j + les bx, dword_F16C + add bx, di + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, dword_F57E + add bx, di + mov es:[bx+2], dx + mov es:[bx], ax + add di, 4 + +loc_C794: ; CODE XREF: sub_C726+4Fj + cmp di, 7D00h + jl short loc_C777 + pop di + pop si + pop bp + retn 2 +sub_C726 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7A0 proc far ; CODE XREF: sub_A2FB+141P + +var_1 = byte ptr -1 + + enter 2, 0 + mov byte ptr word_F57C+1, 1 + mov word_D876, 0 + call far ptr loc_1D0A + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aOp3_pi ; "op3.pi" + push 0 + call sub_ADD5 + push 0 + call sub_B15A + push 0 + push 0 + push 0 + call sub_B17D + add sp, 0Eh + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + mov al, byte_DF97 + mov byte ptr word_F57C, al + push word_F57C + call sub_C070 + push 0 + call sub_1290 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_C097 + call sub_C3E1 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_DF97 + mov ah, 0 + push ax + call sub_C726 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_DF97 + mov ah, 0 + push ax + call sub_C726 + mov word_D876, 64h ; 'd' + call far ptr loc_1D0A + +loc_C849: ; CODE XREF: sub_C7A0+B8j + ; sub_C7A0+1BEj + call sub_AED0 + cmp word_F3C8, 0 + jz short loc_C85A + call sub_C3AC + jmp short loc_C849 +; --------------------------------------------------------------------------- + +loc_C85A: ; CODE XREF: sub_C7A0+B3j + ; sub_C7A0+1C4j + call sub_AED0 + test byte ptr word_F3C8, 1 + jz short loc_C895 + push word_F57C + push 3 + call sub_BFF5 + cmp byte ptr word_F57C, 0 + jbe short loc_C87C + dec byte ptr word_F57C + jmp short loc_C881 +; --------------------------------------------------------------------------- + +loc_C87C: ; CODE XREF: sub_C7A0+D4j + mov byte ptr word_F57C, 10h + +loc_C881: ; CODE XREF: sub_C7A0+DAj + cmp byte ptr word_F57C, 0Fh + jnz short loc_C88C + dec byte ptr word_F57C + +loc_C88C: ; CODE XREF: sub_C7A0+E6j + push word_F57C + push 0Fh + call sub_BFF5 + +loc_C895: ; CODE XREF: sub_C7A0+C4j + test byte ptr word_F3C8, 2 + jz short loc_C8CB + push word_F57C + push 3 + call sub_BFF5 + cmp byte ptr word_F57C, 10h + jnb short loc_C8B2 + inc byte ptr word_F57C + jmp short loc_C8B7 +; --------------------------------------------------------------------------- + +loc_C8B2: ; CODE XREF: sub_C7A0+10Aj + mov byte ptr word_F57C, 0 + +loc_C8B7: ; CODE XREF: sub_C7A0+110j + cmp byte ptr word_F57C, 0Fh + jnz short loc_C8C2 + inc byte ptr word_F57C + +loc_C8C2: ; CODE XREF: sub_C7A0+11Cj + push word_F57C + push 0Fh + call sub_BFF5 + +loc_C8CB: ; CODE XREF: sub_C7A0+FAj + test byte ptr word_F3C8, 10h + jnz short loc_C8D9 + test byte ptr word_F3C8, 80h + jz short loc_C950 + +loc_C8D9: ; CODE XREF: sub_C7A0+130j + cmp byte ptr word_F57C, 10h + jnz short loc_C8E3 + jmp loc_C967 +; --------------------------------------------------------------------------- + +loc_C8E3: ; CODE XREF: sub_C7A0+13Ej + mov al, byte_F3CB + mov [bp+var_1], al + mov al, byte_F3CD + mov byte_F3CB, al + push 600h + mov al, byte ptr word_F57C + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+92Ch] + push word ptr [bx+92Ah] + call sub_B0EA + mov byte_F3CB, 0 + push 600h + mov al, byte ptr word_F57C + mov ah, 0 + shl ax, 2 + mov bx, ax + push word ptr [bx+92Ch] + push word ptr [bx+92Ah] + call sub_B0EA + mov al, [bp+var_1] + mov byte_F3CB, al + push 0 + call sub_B203 + add sp, 0Eh + mov al, byte ptr word_F57C + mov byte_DF97, al + mov ah, 0 + push ax + call sub_C726 + call sub_C3AC + mov al, byte ptr word_F57C + mov ah, 0 + push ax + call sub_C726 + +loc_C950: ; CODE XREF: sub_C7A0+137j + test byte ptr word_F3C8, 40h + jnz short loc_C967 + cmp word_F3C8, 0 + jz short loc_C961 + jmp loc_C849 +; --------------------------------------------------------------------------- + +loc_C961: ; CODE XREF: sub_C7A0+1BCj + call sub_C3AC + jmp loc_C85A +; --------------------------------------------------------------------------- + +loc_C967: ; CODE XREF: sub_C7A0+140j + ; sub_C7A0+1B5j ... + call sub_AED0 + cmp word_F3C8, 0 + jz short loc_C978 + call sub_C3AC + jmp short loc_C967 +; --------------------------------------------------------------------------- + +loc_C978: ; CODE XREF: sub_C7A0+1D1j + call sub_C0D6 + call sub_C5A4 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + call sub_1256 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset aOp2_pi_0 ; "op2.pi" + push 0 + call sub_ADD5 + push 0 + call sub_B15A + push 0 + push 0 + push 0 + call sub_B17D + add sp, 0Eh + push ds + push offset unk_F194 + push word_F17E + push word_F17C + call sub_147A + push ds + push offset aOp_rgb_0 ; "op.rgb" + call sub_1FA2 + call far ptr loc_1D0A + push 0 + call sub_1290 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + leave + retf +sub_C7A0 endp + +seg006 ends + +; =========================================================================== + +; Segment type: Pure code +seg007 segment byte public 'CODE' use16 + assume cs:seg007 + ;org 1 + 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, 94DCh + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_CA10 + 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_CA2A + +loc_CA10: ; 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_CA2A: ; 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_CA50 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:94D4o + db 0Dh dup(0), 2, 0, 2, 0, 0E2h, 94h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0B2h, 0 + dw seg seg007 + dw 0 + db 3, 0Dh dup(0), 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0 + db 2Ch, 0, 30h, 0Dh dup(0), 1, 0, 1, 0, 0E9h, 5Bh + 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, 954Eh + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_CAF9 + 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_CB6D + +loc_CAF9: ; 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_CB5D + 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_CB2F + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_CB31 +; --------------------------------------------------------------------------- + +loc_CB2F: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_CB31: ; 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_CB5D: ; 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_CB6D: ; 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 + +; --------------------------------------------------------------------------- +byte_CB93 db 4, 0, 90h, 20h, 0Ah, 0, 92h, 2 ; DATA XREF: seg000:9540o + dw seg seg007 +aTstringref db 'TStringRef *',0 +byte_CBAA db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9538o + db 0Dh dup(0), 2, 0, 2, 0, 64h, 95h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_CC3A + db 2 dup(0), 3, 0Dh dup(0) +byte_CBF8 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9534o + db 0Dh dup(0), 2, 0, 2, 0, 0B1h, 95h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Ah, 2 + dw seg seg007 + db 0 + db 0 + db 3, 0Dh dup(0) +byte_CC3A db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg007:0204o + db 0Dh dup(0), 1, 0, 1, 0, 0E9h, 5Bh + 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, 0A9h, 6 + dw seg seg007 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0D8h, 2 + dw seg seg007 + 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, 9607h + 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_CD5E + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_CD4B + 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_D089 + add sp, 6 + +loc_CD4B: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_CD5E + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_CD5E: ; 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, 963Bh + 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_CD99 + mov ax, 1 + jmp short loc_CD9B +; --------------------------------------------------------------------------- + +loc_CD99: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_CD9B: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_CE1C + 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, 972Dh + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 1120h + 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, 0BFBh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_CE1C: ; 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, 967Fh + 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_CE57 + mov ax, 1 + jmp short loc_CE59 +; --------------------------------------------------------------------------- + +loc_CE57: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_CE59: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_CEDA + 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, 972Dh + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 113Eh + 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, 0BFBh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_CEDA: ; 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, 96C3h + 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_CF12 + mov ax, 1 + jmp short loc_CF14 +; --------------------------------------------------------------------------- + +loc_CF12: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_CF14: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_CF95 + 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, 972Dh + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 115Ch + 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, 0BFBh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_CF95: ; 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_CFC7 + 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_CFC7 + jmp loc_D06D +; --------------------------------------------------------------------------- + +loc_CFC7: ; 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_D221 + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_4285 + 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_D021 + push ds + mov ax, 0E76h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D021: ; 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_D06D: ; 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_D089(void (*driver)(void), char) +sub_D089 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, 96DDh + 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_D0DB + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4152 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_D0DB + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_D0DB: ; CODE XREF: sub_D089+2Bj sub_D089+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_D089 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, 96EFh + 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_D221 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_E74E + jbe short loc_D149 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_43EC + 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_D149: ; CODE XREF: seg007:0740j + 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, 96F9h + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_D221 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_E74E + jbe short loc_D1B1 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_43EC + 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_D1B1: ; CODE XREF: seg007:07A8j + 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_D1BF proc far ; CODE XREF: seg007:08C0p + +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, 970Bh + 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_43EC + 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_D213 + push ds + mov ax, 0E76h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D213: ; CODE XREF: sub_D1BF+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_D1BF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_D221 proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg007:072Bp ... + +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, 9715h + call ___InitExceptBlocks + mov ax, word_E74A + mov [bp+var_20], ax + mov cx, word_E74C + 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_D221 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, 9727h + 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_D221 + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_D2A8 + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_D1BF + add sp, 6 + jmp short loc_D317 +; --------------------------------------------------------------------------- + +loc_D2A8: ; CODE XREF: seg007:08B6j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_E74E + jbe short loc_D317 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_D317 + mov ax, [bp-26h] + inc ax + push ax + call sub_4285 + 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_D2E9 + push ds + mov ax, 0E76h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D2E9: ; CODE XREF: seg007:08FBj + cmp word ptr [bp+0Ah], 0 + jz short loc_D30B + 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_D30B: ; CODE XREF: seg007:090Dj + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_D328 +; --------------------------------------------------------------------------- + +loc_D317: ; CODE XREF: seg007:08C6j seg007:08D6j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_D328: ; CODE XREF: seg007:0935j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_D345 + cmp ax, [bp-22h] + jnz short loc_D345 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_D377 + +loc_D345: ; CODE XREF: seg007:0956j seg007:095Bj + 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_D377: ; CODE XREF: seg007:0963j + cmp word ptr [bp+12h], 0 + jz short loc_D3BB + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_D3A2 + 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_D3BB +; --------------------------------------------------------------------------- + +loc_D3A2: ; CODE XREF: seg007:09A3j + 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_D3BB: ; CODE XREF: seg007:099Bj seg007:09C0j + 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_D3ED + cmp ax, [bp-22h] + jz short loc_D410 + +loc_D3ED: ; CODE XREF: seg007:0A06j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4152 + 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_D410: ; CODE XREF: seg007:0A0Bj + 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_E744 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E744, 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_E746 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E746, 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_E748 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E748, 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_E74A + mov [bp-2], ax + mov ax, [bp+6] + mov word_E74A, 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_E74C + mov [bp-2], ax + mov ax, [bp+6] + mov word_E74C, ax + cmp word_E74C, 0 + jnz short loc_D4B3 + mov word_E74C, 1 + +loc_D4B3: ; CODE XREF: seg007:0ACBj + 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_E74E + mov [bp-2], ax + mov ax, [bp+6] + mov word_E74E, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_D4D9 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9703o seg000:971Fo + db 0Dh dup(0), 2, 0, 2, 0, 62h, 97h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_D569 + 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, 0AFh, 97h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 89h, 0Bh + dw seg seg007 + db 2 dup(0), 3, 0Dh dup(0) +byte_D569 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg007:0B33o + db 0Dh dup(0), 1, 0, 1, 0, 0E9h, 5Bh + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 4, 0 + db 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h, 0Dh dup(0) + db 1, 0, 1, 0, 6, 3 + dw seg seg007 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_D5DB db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:96E7o + db 0Dh dup(0), 2, 0, 2, 0, 0FCh, 97h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0, 89h, 0Bh + dw seg seg007 + db 2 dup(0), 3, 14h dup(0) +seg007 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_D630 dw 0 ; DATA XREF: sub_48A+7r sub_4081+20r ... +word_D632 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +off_D634 dw offset sub_554E ; DATA XREF: sub_48A+20w sub_40F2+Cr ... +off_D636 dw offset sub_4C4C ; DATA XREF: sub_48A+Br sub_40F2+2r ... +off_D638 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_401E+24r ... +aHeck db 'HECK',0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_D68A dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_D68E dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_D692 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_D696 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_D69E dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:94CBw +word_D6A2 dw 0 ; DATA XREF: start+127r seg000:94C5w +word_D6A4 dw 0 ; DATA XREF: start+46w +word_D6A6 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_D6A8 dw 0 ; DATA XREF: start+55w seg000:9480r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_D6AC dw 0 ; DATA XREF: start+16w start+C7r ... +word_D6AE dw 0 ; DATA XREF: __IOERROR:loc_383Dw + ; seg000:4785w ... + db 0FFh + db 0FFh + db 40h ; @ + db 23h ; # +word_D6B4 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_D6B6 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_D6B8 dw 0 ; DATA XREF: sub_446D+6Ew __sbrk+12r ... +word_D6BA dw 0 ; DATA XREF: start+8Bw sub_446D+6Aw ... +word_D6BC dw 0 ; DATA XREF: sub_446D+7Ew __brk+1Cr ... +word_D6BE dw 0 ; DATA XREF: start+21w start+F5w ... +byte_D6C0 db 0 ; DATA XREF: sub_A2A2+3r sub_A2A2+12w ... +byte_D6C1 db 0 ; DATA XREF: sub_A2A2+16r + ; sub_A2FB+135w ... +byte_D6C2 db 0 ; DATA XREF: sub_A2FB:loc_A443w + ; sub_A2FB+154w ... + db 0 +word_D6C4 dw 0BEC3h ; DATA XREF: sub_9D5C+9r +word_D6C6 dw 0B6h ; DATA XREF: sub_9D5C+5r +aOk db 'ÏÏ®ª¼ÂÏ',0 +aK_1 db '϶¸»·ªµ',0 +aKN db 'Ïϱª»­Ï',0 +aKM db 'µ¾¶ª½²¬',0 +aO db '±²½Ï´®Â',0 + db 'ÏÏÏÏÏÏÏ',0 +aK db '¼½ª»½',0 ; DATA XREF: sub_A150+Co sub_A1F5+14o + db 0 + db 0 + db 0 + db 0 +aOKK db '®Á½»ªÏ¼½ª»½',0 ; DATA XREF: sub_A150+1Fo sub_A1F5+6Ao ... +aMO db '±²¼¬¸»®',0 ; DATA XREF: sub_A150+32o sub_A1F5+23o + dw 0 +asc_D718 db '¸¹½²¸¶',0 ; DATA XREF: sub_A150+45o sub_A1F5+32o + db 0 + db 0 + db 0 +asc_D722 db 'º¾²½',0 ; DATA XREF: sub_A150+6Bo sub_A1F5+50o ... + db 0 + db 0 + db 0 + db 0 + db 0 +aK_0 db '»ª¶´',0 ; DATA XREF: sub_A150+7Eo sub_A1F5+84o ... + db 0 + db 0 + db 0 + db 0 + db 0 +aKO db '¹µªÂ®»',0 ; DATA XREF: sub_A481+32o sub_A510+B8o + dw 0 + db 0 +aM db '·¾¼²¬',0 ; DATA XREF: sub_A481+1Fo sub_A510+62o + db 0 + db 0 + db 0 + db 0 +aLL db '«¸·«',0 ; DATA XREF: sub_A481+45o + ; sub_A510+104o + db 0 + db 0 + db 0 + db 0 + db 0 +aMNo db '·¾¼²¬Ï·¸­®',0 ; DATA XREF: sub_A150+58o sub_A1F5+41o +aOO db '»®¼®½',0 ; DATA XREF: sub_A481+70o + ; sub_A510+1C1o + db 0 + db 0 + db 0 + db 0 + db 0E8h ; è + db 0E9h ; é + db 0 + db 0EAh ; ê + db 0EBh ; ë + db 0 + db 0ECh ; ì + db 0EDh ; í + db 0 + db 0EEh ; î + db 0EFh ; ï + db 0 + db 0B8h ; ¸ + db 0AFh ; ¯ + db 0AFh ; ¯ + db 0CFh ; Ï + db 0 + db 0CFh ; Ï + db 0AFh ; ¯ + db 0B7h ; · + db 0CFh ; Ï + db 0 + db 0B7h ; · + db 0B2h ; ² + db 0ADh ; ­ + db 0B2h ; ² + db 0 +word_D784 dw 1B8h ; DATA XREF: sub_A481+53r + ; sub_A510+153r +seg_D786 dw seg dseg ; DATA XREF: sub_A481+4Fr + ; sub_A510+14Fr + dd aB@tPa ; "@’Êí " + dd aIXfmym ; "ˆê•”ŒyŒ¸" +byte_D790 db 0 ; DATA XREF: sub_A2FB+4r sub_A2FB+10w ... +byte_D791 db 0 ; DATA XREF: sub_A74A+Bw sub_A74A+5Cw ... +byte_D792 db 0 ; DATA XREF: sub_A74A+4r sub_A74A+10w ... +aHuuma_cfg db 'huuma.cfg',0 +aHuuma_efc db 'huuma.efc',0 ; DATA XREF: sub_9D5C+1Ao +aOp2_pi db 'op2.pi',0 ; DATA XREF: sub_A2FB+DEo +aOp_pi db 'op.pi',0 +aOpa_pi db 'opa.pi',0 ; DATA XREF: sub_9D5C+33o +aOpb_pi db 'opb.pi',0 ; DATA XREF: sub_9D5C+3Eo +aOpc_pi db 'opc.pi',0 ; DATA XREF: sub_9D5C+49o +aOp_m db 'op.m',0 ; DATA XREF: sub_9D5C+116o + ; sub_9D5C+12Ao +aOp_rgb db 'op.rgb',0 ; DATA XREF: sub_9D5C+1C4o + ; sub_A2FB+10Fo +aTs1_pi db 'ts1.pi',0 ; DATA XREF: sub_9FAF+1Bo sub_A0C6+2Do +aSelect db 'select',0 ; DATA XREF: sub_9FAF+59o sub_9FAF+5Do ... +; char path[] +path db 'main',0 ; DATA XREF: sub_9FAF+67o sub_9FAF+6Bo ... +aIipo db '‰‰o',0 +aB@tPa db '@’Êí ',0 ; DATA XREF: dseg:0158o +aIXfmym db 'ˆê•”ŒyŒ¸',0 ; DATA XREF: dseg:015Co +aMikoft_bft db 'MIKOFT.bft',0 ; DATA XREF: _main+40o +aGminit_m db 'gminit.m',0 ; DATA XREF: _main+BEo +aTs3_pi db 'ts3.pi',0 ; DATA XREF: _main+DBo +aTs2_pi db 'ts2.pi',0 ; DATA XREF: _main+E6o + db 0 +aBfnt db 'BFNT' + db 1Ah + db 0 +word_D828 dw 0 ; DATA XREF: sub_A2E:loc_A43r + ; sub_AFE+2Dw ... +word_D82A dw 27Fh ; DATA XREF: sub_A2E+19r sub_AFE+30w ... +word_D82C dw 27Fh ; DATA XREF: sub_AFE+36w sub_C7C+75r ... +word_D82E dw 0 ; DATA XREF: sub_A2E:loc_A6Cr + ; sub_AFE+60w ... +word_D830 dw 18Fh ; DATA XREF: sub_A2E+42r sub_AFE+65w ... +word_D832 dw 18Fh ; DATA XREF: sub_AFE+6Bw sub_C7C+84r ... +word_D834 dw 0A800h ; DATA XREF: sub_A2E+66r sub_AFE+82w ... +word_D836 dw 7CB0h ; DATA XREF: sub_AFE+74w sub_B90+13r ... + db 0 + db 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_D85A dw 0 ; DATA XREF: sub_820+5r sub_820+26r ... +word_D85C dw 0FFFFh ; DATA XREF: sub_748r sub_748+5Dr ... +byte_D85E db 0 ; DATA XREF: sub_A0E+4r + db 0 +word_D860 dw 0 ; DATA XREF: sub_FBC+2r sub_FBC+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_D86A dw 0A800h ; DATA XREF: sub_AFE+7Er sub_1208+9w ... +word_D86C dw 3E80h ; DATA XREF: sub_1208+Fw sub_1256+14r ... +word_D86E dw 190h ; DATA XREF: sub_AFE+4Fr sub_1208+3Cw +word_D870 dw 50h ; DATA XREF: sub_AFE+19r sub_AFE+6Er +word_D872 dw 0 ; DATA XREF: sub_1208+2Dw + db 55h ; U + db 0 +word_D876 dw 64h ; DATA XREF: seg000:053Ew + ; seg000: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_D8A8 dw 0 ; DATA XREF: seg000:1D35r + db 0 + db 0 + db 0 + db 0 +word_D8AE dw 200h ; DATA XREF: seg000:05C1r seg000:05E7r +byte_D8B0 db 0 ; DATA XREF: seg000:loc_5F4w + ; seg000:0600w + db 0 +byte_D8B2 db 0 ; DATA XREF: sub_AFB0+57w + db 0 +word_D8B4 dw 1 ; DATA XREF: sub_1F78+Cr sub_1F78+15r ... +word_D8B6 dw 0 ; DATA XREF: sub_1F78+3r sub_1F78+23w + 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_DB3A dw 0A000h ; DATA XREF: sub_1092+13r sub_10D6+13r ... + db 50h ; P + db 0 +word_DB3E dw 1 ; DATA XREF: sub_12E6+2Er +aMasterl_libVer db 'MASTERL.LIB Version 0.23 Copyright (c)1995 A.Koizuka,Kazumi,steel' + db 'man,iR,All rights reserved.',0 + db 0 +unk_DB9E db 0 ; DATA XREF: sub_260A+26r + db 0 +word_DBA0 dw 0 ; DATA XREF: sub_260A+18r +word_DBA2 dw 0 ; DATA XREF: sub_2596+Ew sub_2596+16w ... +byte_DBA4 db 0 ; DATA XREF: sub_2596+24r sub_2596+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_DBAE dw 0 ; DATA XREF: sub_23FAr sub_2748+6w ... +word_DBB0 dw 0 ; DATA XREF: sub_2726+15w sub_2748+1Bw ... +word_DBB2 dw 0 ; DATA XREF: seg000:05BBw sub_14D2+DFw ... +word_DBB4 dw 100h ; DATA XREF: sub_276E+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_DBBB db 0 ; DATA XREF: sub_2ACA+24r + ; sub_2ACA:loc_2B10r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_DBC2 dw 0 ; DATA XREF: sub_2ACA+6Er +word_DBC4 dw 0 ; DATA XREF: sub_2ACA+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_DBD2 dw 0 ; DATA XREF: sub_2ACA+32r + db 0 + db 0 +word_DBD6 dw 0 ; DATA XREF: sub_2966r sub_2966+7r ... +word_DBD8 dw 0 ; DATA XREF: sub_2966:loc_2983r + ; sub_29AA+5r ... +word_DBDA dw 0 ; DATA XREF: sub_2966+24r sub_2966+2Br +a_exe db '.exe',0 + db 0 +aUmx db '“Œ•û••–‚.˜^',0 ; DATA XREF: sub_AFB0+5Do +byte_DBEE db 0 ; DATA XREF: sub_9BF0+89w sub_A6EF+18w ... + db 0 +byte_DBF0 db 0FFh ; DATA XREF: sub_B252+5w sub_B25E+Dr ... + db 0 + db 0 + db 20h + db 9 + db 2 + db 10h + db 5 + db 6 + db 30h ; 0 + db 8 + db 9 + db 5 + db 10h + db 0Ah + db 11h + db 0Ch + db 20h + db 20h + db 10h + db 0 + db 0 + db 0 + db 0 + db 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 20h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_DC33 db 0 ; DATA XREF: sub_B252w sub_B25E+31w ... +byte_DC34 db 1 ; DATA XREF: sub_9BF0+38w sub_9CA2+10r ... + db 0 +off_DC36 dd aHuuhi_dat ; DATA XREF: sub_B3B1+8r sub_B3B1+4r + ; "huuhi.dat" +aMO_0 db '±²Ï¼¬¸»®',0 ; DATA XREF: sub_B5B0+Do + db 0AAh ; ª + db 0ABh ; « + db 0ACh ; ¬ + db 0ADh ; ­ + db 0AEh ; ® + db 0AFh ; ¯ + db 0B0h ; ° + db 0B1h ; ± + db 0B2h ; ² + db 0B3h ; ³ + db 0B4h ; ´ + db 0B5h ; µ + db 0B7h ; · + db 0B6h ; ¶ + db 0B8h ; ¸ + db 0B9h ; ¹ + db 0BAh ; º + db 0BBh ; » + db 0BCh ; ¼ + db 0BDh ; ½ + db 0BEh ; ¾ + db 0BFh ; ¿ + db 0C0h ; À + db 0C1h ; Á + db 0C2h ;  + db 0C3h ; à + db 0DAh ; Ú + db 0DBh ; Û + db 0DCh ; Ü + db 0DDh ; Ý + db 0DEh ; Þ + db 0E0h ; à + db 2 + db 3 + db 0A0h ;   + db 0A1h ; ¡ + db 0A2h ; ¢ + db 0A3h ; £ + db 0A4h ; ¤ + db 0A5h ; ¥ + db 0A6h ; ¦ + db 0A7h ; § + db 0A8h ; ¨ + db 0A9h ; © + db 0E1h ; á + db 0E2h ; â + db 0E3h ; ã + db 0E4h ; ä + db 0E5h ; å + db 0E6h ; æ + db 0E7h ; ç + db 0B6h ; ¶ + db 0AAh ; ª + db 0B7h ; · + db 0AEh ; ® + db 0 + db 0B9h ; ¹ + db 0B8h ; ¸ + db 0B2h ; ² + db 0B6h ; ¶ + db 0BDh ; ½ + db 0 + db 0BCh ; ¼ + db 0BDh ; ½ + db 0 + db 0CFh ; Ï + db 0AEh ; ® + db 0AAh ; ª + db 0BCh ; ¼ + db 0C2h ;  + db 0CFh ; Ï + db 0CFh ; Ï + db 0 + db 0B6h ; ¶ + db 0B8h ; ¸ + db 0BBh ; » + db 0B7h ; · + db 0AAh ; ª + db 0B5h ; µ + db 0CFh ; Ï + db 0 + db 0CFh ; Ï + db 0B1h ; ± + db 0AAh ; ª + db 0BBh ; » + db 0ADh ; ­ + db 0CFh ; Ï + db 0CFh ; Ï + db 0 + db 0B5h ; µ + db 0BEh ; ¾ + db 0B6h ; ¶ + db 0AAh ; ª + db 0BDh ; ½ + db 0B2h ; ² + db 0ACh ; ¬ + db 0 + dd aNvl@uo ; "‚‹@“®" + dd aChmf ; "–hŒä" + dd aNumv ; "UŒ‚" +word_DCB0 dw 0 ; DATA XREF: sub_B6BB+1Aw sub_B6BB+28r ... +byte_DCB2 db 1 ; DATA XREF: sub_B77E+24r sub_B77E+2Bw + db 0 +unk_DCB4 db 3Eh ; > ; DATA XREF: sub_B86E+Co + db 1 + db 76h ; v + db 0 + db 0DAh ; Ú + db 0 +unk_DCBA db 1 ; DATA XREF: sub_B86E+1Do + db 2 + db 4 +aHuuhi_dat db 'huuhi.dat',0 ; DATA XREF: dseg:off_DC36o +aNvl@uo db '‚‹@“®',0 ; DATA XREF: dseg:0674o +aChmf db '–hŒä',0 ; DATA XREF: dseg:0678o +aNumv db 'UŒ‚',0 ; DATA XREF: dseg:067Co +aVicSob@b@b@b@b db ' ‚¨–¼‘O@@@@@@“¾“_@@@ STAGE TYPE “ú•t',0 + ; DATA XREF: sub_B5B0+35o +aOp_h_bft db 'op_h.bft',0 ; DATA XREF: sub_B77E+31o +aOp_h_rgb db 'op_h.rgb',0 ; DATA XREF: sub_B77E+3Ao +byte_DD20 db 1 ; DATA XREF: sub_BD24+48r sub_BD24+5Dr ... + db 0 + dd aIaczlVCV ; " ‰A—z‹Ê‚Ì—Í‚ðŽg‚í‚È‚¢ " + dd aNlfIVVivL@uocV ; " L”͈͂ł©‚‹@“®—Í‚É " + dd aB@lnvvnvl@uocG ; "@‹­‚¢‚‹@“®—̓^ƒCƒv@" + dd aB@sMvvkcdvVVvv ; " @èËŒ‚‚ª—D‚ê‚Ä‚¢‚é @" + dd aB@GogigugxvOcv ; "@ ƒoƒ‰ƒ“ƒX‚ÌŽæ‚ꂽ@ " + dd aB@b@chmfpdolgG ; "@@–hŒädŽ‹ƒ^ƒCƒv@@" + dd aB@iaczlVCVRavd ; " @‰A—z‹Ê‚Ì—Í‚Å키 " + dd aB@numvcVkcdvVV ; "@UŒ‚—Í‚ª—D‚ê‚Ä‚¢‚é@" + dd aB@b@numvpdolgG ; "@@UŒ‚dŽ‹ƒ^ƒCƒv@@" +off_DD46 dd aSCVRaumgxgGcgl ; DATA XREF: sub_BAFC+42r sub_BAFC+3Er + ; "èË–²‚Ì퓬ƒXƒ^ƒCƒ‹‚ðA‰º‚Ì‚R‚‚©‚炦‚ç‚"... +off_DD4A dd aTnbjb@ggglgxgg ; DATA XREF: sub_BAFC+9Dr sub_BAFC+99r + ; "’j@ƒGƒLƒXƒgƒ‰ƒXƒe[ƒW‚Å‚ÍA“ïˆÕ“xAƒ"... +off_DD4E dd aB@b@b@vVVVBauq ; DATA XREF: sub_BAFC+B0r sub_BAFC+ACr + ; "@@@‚»‚ꂼ‚êA“ïˆÕ“x‚d‚w‚s‚q‚`AƒvƒŒƒ"... +off_DD52 dd aBsbsvbvkvdvVqv ; DATA XREF: sub_BBC0+68r sub_BBC0+85r ... + ; " ™™‚b‚k‚d‚`‚q‚d‚c™™ " +unk_DD56 db 10h ; DATA XREF: sub_BD24+Eo + db 0 + db 0E0h ; à + db 0 + db 0B0h ; ° + db 1 +unk_DD5C db 80h ; € ; DATA XREF: sub_BD24+1Fo + db 0 + db 0E0h ; à + db 0 + db 80h ; € + db 0 +aIaczlVCV db ' ‰A—z‹Ê‚Ì—Í‚ðŽg‚í‚È‚¢ ',0 ; DATA XREF: dseg:06F2o +aNlfIVVivL@uocV db ' L”͈͂ł©‚‹@“®—Í‚É ',0 ; DATA XREF: dseg:06F6o +aB@lnvvnvl@uocG db '@‹­‚¢‚‹@“®—̓^ƒCƒv@',0 ; DATA XREF: dseg:06FAo +aB@sMvvkcdvVVvv db ' @èËŒ‚‚ª—D‚ê‚Ä‚¢‚é @',0 ; DATA XREF: dseg:06FEo +aB@GogigugxvOcv db '@ ƒoƒ‰ƒ“ƒX‚ÌŽæ‚ꂽ@ ',0 ; DATA XREF: dseg:0702o +aB@b@chmfpdolgG db '@@–hŒädŽ‹ƒ^ƒCƒv@@',0 ; DATA XREF: dseg:0706o +aB@iaczlVCVRavd db ' @‰A—z‹Ê‚Ì—Í‚Å키 ',0 ; DATA XREF: dseg:070Ao +aB@numvcVkcdvVV db '@UŒ‚—Í‚ª—D‚ê‚Ä‚¢‚é@',0 ; DATA XREF: dseg:070Eo +aB@b@numvpdolgG db '@@UŒ‚dŽ‹ƒ^ƒCƒv@@',0 ; DATA XREF: dseg:0712o +aSCVRaumgxgGcgl db 'èË–²‚Ì퓬ƒXƒ^ƒCƒ‹‚ðA‰º‚Ì‚R‚‚©‚炦‚ç‚ñ‚Å‚Ë',0 + ; DATA XREF: dseg:off_DD46o +aTnbjb@ggglgxgg db '’j@ƒGƒLƒXƒgƒ‰ƒXƒe[ƒW‚Å‚ÍA“ïˆÕ“xAƒvƒŒƒCƒ„[Aƒ{ƒ€”‚Í•ÏXo—' + ; DATA XREF: dseg:off_DD4Ao + db 'ˆ‚Ü‚¹‚ñ',0 +aB@b@b@vVVVBauq db '@@@‚»‚ꂼ‚êA“ïˆÕ“x‚d‚w‚s‚q‚`AƒvƒŒƒCƒ„[‚RlAƒ{ƒ€‚PŒÂ‚Æ‚È‚è‚' + ; DATA XREF: dseg:off_DD4Eo + db 'Ü‚· ',0 +aBsbsvbvkvdvVqv db ' ™™‚b‚k‚d‚`‚q‚d‚c™™ ',0 ; DATA XREF: dseg:off_DD52o +aTselect_pi db 'TSELECT.pi',0 ; DATA XREF: sub_BBC0+15o + dd aNo_1Umx ; "NO.1 “Œ•û••–‚˜^@`ò“y™Ö䶗…" + dd aNo_2B@Focab@bE ; "NO.2 @ ”Ž—í@`Eastern Wind " + dd aNo_3B@EndOfDay ; "NO.3 @ End of Daylight@ " + dd aNo_4B@b@b@b@b@ ; "NO.4 @@@@@Œ¶–²ŠE@@@@" + dd aNo_5VVrvivmbav ; "NO.5 ‚Ђà‚났A‚ނ炳‚«‚É‚à‚¦" + dd aNo_6B@umx ; "NO.6 @“Œ•û••–‚˜^@`—HŒ¶—•‘" + dd aNo_7B@SheSInAT ; "NO.7 @ She's in a temper!! " + dd aNo_8B@B@VtvVVV ; "NO.8 @ @ ‚â‚Ý‚Ì‚¿‚©‚ç@@ " + dd aNo_9B@b@b@b@oa ; "NO.9 @@@@Ž€‚ð“q‚µ‚Ä@@@" + dd aNo_10B@B@C ; "NO.10 @ @ —öFƒ}ƒWƒbƒN @ " + dd aNo_11CompleteD ; "NO.11 Complete Darkness " + dd aNo_12B@b@iucVR ; "NO.12 @@‰“–ì‚ÌX@@@ " + dd aNo_13RSbvav ; "NO.13 ̘b‚í‚ñ‚¾[‚ç‚ñ‚Ç " + dd aNo_14B@Ggglgxg ; "NO.14 @ ƒGƒLƒXƒgƒ‰ƒ‰ƒu " + dd aNo_15RaoVVVVVV ; "NO.15 íŽÔ‚Þ‚·‚ß‚Ì‚Ý‚é‚ä‚ß " + dd aB@b@ ; " @@ " + dd aB@b@vpvxvivf ; " @@‚p‚•‚‰‚” " + dd aOp_m_0 ; "op.m" + dd aStage0_m ; "stage0.m" + dd aStage1_m ; "stage1.m" + dd aStage2_m ; "stage2.m" + dd aStage3_m ; "stage3.m" + dd aStage4_m ; "stage4.m" + dd aBoss1_m ; "boss1.m" + dd aBoss4_m ; "boss4.m" + dd aBoss2_m ; "boss2.m" + dd aBoss3_m ; "boss3.m" + dd aMima_m ; "mima.m" + dd aEnd1_m ; "end1.m" + dd aEnding_m ; "ending.m" + dd aStage5_m ; "stage5.m" + dd aBoss5_m ; "boss5.m" +byte_DF96 db 0 ; DATA XREF: sub_C1B2+4r + ; sub_C1B2:loc_C25Ew +byte_DF97 db 0 ; DATA XREF: sub_C7A0+5Ar sub_C7A0+86r ... +aNo_1Umx db 'NO.1 “Œ•û••–‚˜^@`ò“y™Ö䶗…',0 ; DATA XREF: dseg:08E6o +aNo_2B@Focab@bE db 'NO.2 @ ”Ž—í@`Eastern Wind ',0 ; DATA XREF: dseg:08EAo +aNo_3B@EndOfDay db 'NO.3 @ End of Daylight@ ',0 ; DATA XREF: dseg:08EEo +aNo_4B@b@b@b@b@ db 'NO.4 @@@@@Œ¶–²ŠE@@@@',0 ; DATA XREF: dseg:08F2o +aNo_5VVrvivmbav db 'NO.5 ‚Ђà‚났A‚ނ炳‚«‚É‚à‚¦',0 ; DATA XREF: dseg:08F6o +aNo_6B@umx db 'NO.6 @“Œ•û••–‚˜^@`—HŒ¶—•‘',0 ; DATA XREF: dseg:08FAo +aNo_7B@SheSInAT db 'NO.7 @ She',27h,'s in a temper!! ',0 ; DATA XREF: dseg:08FEo +aNo_8B@B@VtvVVV db 'NO.8 @ @ ‚â‚Ý‚Ì‚¿‚©‚ç@@ ',0 ; DATA XREF: dseg:0902o +aNo_9B@b@b@b@oa db 'NO.9 @@@@Ž€‚ð“q‚µ‚Ä@@@',0 ; DATA XREF: dseg:0906o +aNo_10B@B@C db 'NO.10 @ @ —öFƒ}ƒWƒbƒN @ ',0 ; DATA XREF: dseg:090Ao +aNo_11CompleteD db 'NO.11 Complete Darkness ',0 ; DATA XREF: dseg:090Eo +aNo_12B@b@iucVR db 'NO.12 @@‰“–ì‚ÌX@@@ ',0 ; DATA XREF: dseg:0912o +aNo_13RSbvav db 'NO.13 ̘b‚í‚ñ‚¾[‚ç‚ñ‚Ç ',0 ; DATA XREF: dseg:0916o +aNo_14B@Ggglgxg db 'NO.14 @ ƒGƒLƒXƒgƒ‰ƒ‰ƒu ',0 ; DATA XREF: dseg:091Ao +aNo_15RaoVVVVVV db 'NO.15 íŽÔ‚Þ‚·‚ß‚Ì‚Ý‚é‚ä‚ß ',0 ; DATA XREF: dseg:091Eo +aB@b@ db ' @@ ',0 ; DATA XREF: dseg:0922o +aB@b@vpvxvivf db ' @@‚p‚•‚‰‚” ',0 ; DATA XREF: dseg:0926o +aOp_m_0 db 'op.m',0 ; DATA XREF: dseg:092Ao +aStage0_m db 'stage0.m',0 ; DATA XREF: dseg:092Eo +aStage1_m db 'stage1.m',0 ; DATA XREF: dseg:0932o +aStage2_m db 'stage2.m',0 ; DATA XREF: dseg:0936o +aStage3_m db 'stage3.m',0 ; DATA XREF: dseg:093Ao +aStage4_m db 'stage4.m',0 ; DATA XREF: dseg:093Eo +aBoss1_m db 'boss1.m',0 ; DATA XREF: dseg:0942o +aBoss4_m db 'boss4.m',0 ; DATA XREF: dseg:0946o +aBoss2_m db 'boss2.m',0 ; DATA XREF: dseg:094Ao +aBoss3_m db 'boss3.m',0 ; DATA XREF: dseg:094Eo +aMima_m db 'mima.m',0 ; DATA XREF: dseg:0952o +aEnd1_m db 'end1.m',0 ; DATA XREF: dseg:0956o +aEnding_m db 'ending.m',0 ; DATA XREF: dseg:095Ao +aStage5_m db 'stage5.m',0 ; DATA XREF: dseg:095Eo +aBoss5_m db 'boss5.m',0 ; DATA XREF: dseg:0962o +aMusic_txt db 'MUSIC.TXT',0 ; DATA XREF: sub_C55C+5o +aOp3_pi db 'op3.pi',0 ; DATA XREF: sub_C7A0+2Ao +aOp2_pi_0 db 'op2.pi',0 ; DATA XREF: sub_C7A0+1F4o +aOp_rgb_0 db 'op.rgb',0 ; DATA XREF: sub_C7A0+225o +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_E282 dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_33A5r ... +off_E284 dd sub_35B8 ; DATA XREF: sub_35BD+29r _setvbuf+C0w ... +off_E288 dd sub_35B8 ; DATA XREF: sub_35BD+43r +off_E28C dd sub_35B8 ; DATA XREF: sub_35BD+47r + db 0 + db 0 +word_E292 dw 209h ; DATA XREF: seg000:3C08w seg000:3C12r +byte_E294 db 0 ; DATA XREF: seg000:3BF9r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 60h ; ` + db 0Ch + db 0 + db 0 +word_E2A6 dw 20Ah ; DATA XREF: seg000:3C41w seg000:3C4Br +byte_E2A8 db 1 ; DATA XREF: seg000:3C32r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 74h ; t + db 0Ch + db 0 + db 0 + db 2 + db 2 +byte_E2BC 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 88h ; ˆ + 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 9Ch ; œ + db 0Ch + 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 0B0h ; ° + db 0Ch + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_E420 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_E44A dw 0 ; DATA XREF: __IOERROR:loc_3820w + ; __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_E4AA dw 0 ; DATA XREF: seg000:38F7r +word_E4AC dw 38BCh ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_E4AE dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_E4BE dw 1000h ; DATA XREF: start+62r start+70w ... + public __ctype +; unsigned __int8 _ctype[257] +__ctype db 0, 20h, 20h, 20h, 20h, 20h, 20h, 20h ; DATA XREF: _toupper+18r + db 20h, 20h, 21h, 21h, 21h, 21h, 21h, 20h + db 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h + db 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h + db 20h, 81h, 40h, 40h, 40h, 40h, 40h, 40h + db 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h + db 40h, 12h, 12h, 12h, 12h, 12h, 12h, 12h + db 12h, 12h, 12h, 40h, 40h, 40h, 40h, 40h + db 40h, 40h, 14h, 14h, 14h, 14h, 14h, 14h + db 4, 4, 4, 4, 4, 4, 4, 4 + db 4, 4, 4, 4, 4, 4, 4, 4 + db 4, 4, 4, 4, 40h, 40h, 40h, 40h + db 40h, 40h, 18h, 18h, 18h, 18h, 18h, 18h + db 8, 8, 8, 8, 8, 8, 8, 8 + db 8, 8, 8, 8, 8, 8, 8, 8 + db 8, 8, 8, 8, 40h, 40h, 40h, 40h + db 20h, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + dd @terminate$qv ; terminate(void) + dd @unexpected$qv ; unexpected(void) +word_E5D4 dw 0 ; DATA XREF: __ExceptInit+28w +word_E5D6 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_E6EA dw 0 ; DATA XREF: seg000:3FC7w seg000:3FDAw ... +word_E6EC dw 0 ; DATA XREF: sub_446D+22r sub_446D+61w +byte_E6EE db 0 ; DATA XREF: seg000:47C2r seg000:47DAw +byte_E6EF db 0 ; DATA XREF: seg000:475Dr seg000:4770w +word_E6F0 dw 0 ; DATA XREF: seg000:46CAr seg000:4700w +word_E6F2 dw 0 ; DATA XREF: seg000:46C6r + ; seg000:loc_46FAw + dw 0 + dw 0 +word_E6F8 dw 0 ; DATA XREF: seg000:45E4r seg000:461Aw ... +word_E6FA dw 0 ; DATA XREF: seg000:45E0r + ; seg000:loc_4614w ... + db 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_E714 dd 0 ; DATA XREF: seg000:493Ew sub_4952+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_E728 dw 0 ; DATA XREF: _setvbuf:loc_5423r + ; _setvbuf+4Bw +word_E72A dw 0 ; DATA XREF: _setvbuf:loc_540Dr + ; _setvbuf+35w +word_E72C dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_E740 dd 0 ; DATA XREF: _getenv+21r seg000:948Dw ... +word_E744 dw 1 ; DATA XREF: seg007:0A46r seg007:0A4Fw +word_E746 dw 0 ; DATA XREF: seg007:0A63r seg007:0A6Cw +word_E748 dw 1 ; DATA XREF: seg007:0A80r seg007:0A89w +word_E74A dw 3Fh ; DATA XREF: sub_D221+13r seg007:0A9Dr ... +word_E74C dw 40h ; DATA XREF: sub_D221+19r seg007:0ABAr ... +word_E74E dw 3Fh ; DATA XREF: seg007:073Cr seg007:07A4r ... +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 0CAh ; Ê + db 3Bh ; ; + db 0 + db 0 + db 0 + db 10h + db 0B6h ; ¶ + db 3Fh ; ? + db 0 + db 0 + db 0 + db 0Fh + db 9 + db 49h ; I + db 0 + db 0 + db 0 + db 10h + db 77h ; w + db 94h ; ” + db 0 + db 0 + db 1 + db 20h + dd loc_3A6A +byte_E8F8 db ? ; DATA XREF: sub_A2FB+Bw sub_A2FB+62w ... +byte_E8F9 db ? ; DATA XREF: sub_9BF0+3Ew sub_9BF0+7Dr ... + dw ? +word_E8FC dw ? ; DATA XREF: sub_A2FB+30w + ; sub_A2FB+165w ... +byte_E8FE db ? ; DATA XREF: sub_A027+32r _main+53w ... + db ? +word_E900 dw ? ; DATA XREF: sub_9BF0+50w sub_9BF0+53r ... +word_E902 dw ? ; DATA XREF: sub_A2A2+Br sub_A2A2+51r ... +word_E904 dw ? ; DATA XREF: seg000:1C0Ar +word_E906 dw ? ; DATA XREF: seg000:1BE7r + db ? ; + db ? ; +word_E90A dw ? ; DATA XREF: seg000:1BD9r +word_E90C dw ? ; DATA XREF: seg000:1C0Er +word_E90E dw ? ; DATA XREF: seg000:1BEEr + db ? ; + db ? ; +word_E912 dw ? ; DATA XREF: seg000:1BE0r + dw ? + dw ? +dword_E918 dd ? ; DATA XREF: sub_748+17r sub_820+2Er ... +word_E91C dw ? ; DATA XREF: sub_748+22w sub_748+4Ar ... +word_E91E dw ? ; DATA XREF: sub_748+26w sub_748+56r ... +word_E920 dw ? ; DATA XREF: sub_748+9r sub_748+13r ... +word_E922 dw ? ; DATA XREF: sub_748+Cr + ; sub_748:loc_786r ... +word_E924 dw ? ; DATA XREF: sub_7C4+2Dw + ; sub_820:loc_8C3w ... +word_E926 dw ? ; DATA XREF: sub_748:loc_779w + ; sub_7C4+30w ... +unk_E928 db ? ; ; DATA XREF: sub_B15A+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_E958 dw ? ; DATA XREF: sub_2596+1Ew sub_260A+10w ... +word_E95A dw ? ; DATA XREF: sub_2596+21w sub_260A+14w +word_E95C dw ? ; DATA XREF: sub_2596+37w sub_2644+2Br +word_E95E dw ? ; DATA XREF: sub_2596+3Aw sub_2644+27r +word_E960 dw ? ; DATA XREF: sub_260A+Aw +word_E962 dw ? ; DATA XREF: sub_2748+Fw sub_27AA+18r ... +word_E964 dw ? ; DATA XREF: sub_23FA+20r sub_2748+12w ... +word_E966 dw ? ; DATA XREF: sub_2748+15w sub_27AA+24r ... +word_E968 dw ? ; DATA XREF: sub_23E4+7w sub_23FA+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 ? ; +word_F16A dw ? ; DATA XREF: seg000:2BC4w seg000:2C53r +dword_F16C dd ? ; DATA XREF: sub_ADAC+3w sub_AE00+36r ... +dword_F170 dd ? ; DATA XREF: sub_ADAC+Cw sub_AE00+42r ... +dword_F174 dd ? ; DATA XREF: sub_ADAC+15w sub_AE00+4Er ... +dword_F178 dd ? ; DATA XREF: sub_ADAC+1Ew sub_AE00+5Ar ... +word_F17C dw ? ; DATA XREF: sub_9D1D+32r sub_A027+4Fr ... +word_F17E dw ? ; DATA XREF: sub_9D1D+2Er sub_A027+4Br ... +word_F180 dw ? ; DATA XREF: sub_A027+60r sub_B2E8+ACr ... +word_F182 dw ? ; DATA XREF: sub_A027+5Cr sub_B2E8+A8r ... +word_F184 dw ? ; DATA XREF: sub_A027+71r sub_B2E8+BDr ... +word_F186 dw ? ; DATA XREF: sub_A027+6Dr sub_B2E8+B9r ... +word_F188 dw ? ; DATA XREF: sub_BBC0+3Cr +word_F18A dw ? ; DATA XREF: sub_BBC0+38r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F194 db ? ; ; DATA XREF: sub_9D1D+2Bo sub_A027+48o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F1DC db ? ; ; DATA XREF: sub_A027+59o sub_B2E8+A5o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F224 db ? ; ; DATA XREF: sub_A027+6Ao sub_B2E8+B6o ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F26C db ? ; ; DATA XREF: sub_BBC0+35o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F3C4 dw ? ; DATA XREF: sub_2F56+1Ew sub_2FB6+21r ... +word_F3C6 dw ? ; DATA XREF: sub_2F56+24w seg000:3016r +word_F3C8 dw ? ; DATA XREF: sub_A2FB:loc_A356r + ; sub_A2FB:loc_A36Cr ... +byte_F3CA db ? ; DATA XREF: sub_9BF0+84w sub_A6EF+Aw ... +byte_F3CB db ? ; DATA XREF: sub_9BF0+97w sub_9BF0+A1w ... +byte_F3CC db ? ; DATA XREF: sub_B058+1Ew sub_B0B0w +byte_F3CD db ? ; DATA XREF: sub_9BF0:loc_9C8Er + ; sub_9D5C+FEr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F3DC dd ? ; DATA XREF: sub_9BF0+60w sub_9BF0+66r ... + db ? ; +byte_F3E1 db ? ; DATA XREF: sub_9BF0+4Aw sub_9CA2+22r ... +byte_F3E2 db ? ; DATA XREF: sub_9BF0+44w sub_9CA2+1Cr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_F3EC dw ? ; DATA XREF: sub_B3B1+24o sub_B86E+45r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F4A2 db ? ; DATA XREF: sub_A1F5+5Er sub_A2A2+1Dr ... + db ? +word_F4A4 dw ? ; DATA XREF: sub_A2FB:loc_A3BCw + ; _main:loc_AA35w ... +byte_F4A6 db ? ; DATA XREF: sub_BBC0+5Dr +byte_F4A7 db ? ; DATA XREF: sub_BBC0:loc_BC3Ar +byte_F4A8 db ? ; DATA XREF: sub_BBC0:loc_BC58r +byte_F4A9 db ? ; DATA XREF: sub_BBC0:loc_BC61r +byte_F4AA db ? ; DATA XREF: sub_BBC0:loc_BC7Er +byte_F4AB db ? ; DATA XREF: sub_BBC0:loc_BC9Cr + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F4B4 db ? ; ; DATA XREF: sub_C1B2+1DAo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F57C dw ? ; DATA XREF: sub_C7A0+5Dw sub_C7A0+60r ... +dword_F57E dd ? ; DATA XREF: sub_C097+Fw sub_C097+26r ... +unk_F582 db ? ; ; DATA XREF: sub_C3E1+63r + ; sub_C3E1+106r ... + db ? ; +word_F584 dw ? ; DATA XREF: sub_C5A4+3r +unk_F586 db ? ; ; DATA XREF: sub_C3E1+7Cr + ; sub_C3E1+11Fr ... + db ? ; +word_F588 dw ? ; DATA XREF: sub_C5A4+Cr +unk_F58A db ? ; ; DATA XREF: sub_C3E1+95r + ; sub_C3E1+138r ... + db ? ; +word_F58C dw ? ; DATA XREF: sub_C5A4+15r +unk_F58E db ? ; ; DATA XREF: sub_C3E1+AEr + ; sub_C3E1+151r ... + db ? ; +word_F590 dw ? ; DATA XREF: sub_C5A4+1Er +unk_F592 db ? ; ; DATA XREF: sub_C55C+1Fo sub_C726+12o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F95A dw ? ; DATA XREF: seg000:476Aw +word_F95C dw ? ; DATA XREF: seg000:4764w + db ? ; + db ? ; + db ? ; + db ? ; +word_F962 dw ? ; DATA XREF: seg000:470Ar seg000:47D7w ... +word_F964 dw ? ; DATA XREF: seg000:4706r seg000:47D3w ... +dword_F966 dd ? ; DATA XREF: sub_78B0+ACw sub_78B0+C2r ... +dword_F96A dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dw ? +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg009 segment byte stack 'STACK' use16 + assume cs:seg009 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 80h dup(?) +seg009 ends + + + end start