diff --git a/th03_op.asm b/th03_op.asm new file mode 100644 index 00000000..13d6d77d --- /dev/null +++ b/th03_op.asm @@ -0,0 +1,37535 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 661F4F8FFAF1F3274F503D154133DEF0 + +; File Name : th03/OP.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-FD80h Loaded length: E97Ah +; Entry Point : 0:0 +; OS type : MS DOS +; Application type: Executable 16bit + + .386 + .model large + +; =========================================================================== + +; Segment type: Pure code +seg000 segment byte public 'CODE' use16 + assume cs:seg000 + assume es:nothing, ss:seg005, ds:nothing, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function noreturn + + public start +start proc far + mov dx, seg dseg + mov cs:DGROUP@, dx + mov ah, 30h + int 21h ; DOS - GET DOS VERSION + ; Return: AL = major version number (00h for DOS 1.x) + mov bp, ds:2 + mov bx, ds:2Ch + mov ds, dx + assume ds:dseg + mov word_D86C, ax + mov segx, es + mov word_D866, bx + mov word_D87E, bp + call sub_178 + mov ax, word_D866 + 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_D864, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_D868, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_E53E + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_E53E, 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_3044 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_D876, bx + mov word_D87A, 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_E53E, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 118Ah + mov cx, 2510h + sub cx, di + cld + rep stosb + cmp word_E4A0, 14h + jbe short loc_110 + cmp byte ptr word_D86C, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_D86C+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_E4A0 + 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_D87E, 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_3044 +; --------------------------------------------------------------------------- + +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, 1166h + mov di, 1184h + call sub_1E8 + push word_D862 + push envp ; envp + push word_D85E + push argv ; argv + push argc ; argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_32D9+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 1184h + mov di, 118Ah + 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_32D9+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_32D9+50p + +arg_2 = byte ptr 4 + + mov bp, sp + mov ah, 4Ch ; 'L' + mov al, [bp+arg_2] + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) +__terminate endp ; AL = exit code + +; --------------------------------------------------------------------------- + mov dx, 4Bh ; 'K' + push ds + push dx + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax + nop + push cs + call near ptr __exit + +; =============== S U B R O U T I N E ======================================= + + +sub_178 proc near ; CODE XREF: start+25p + push ds + mov ax, 3500h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + +loc_17E: ; DATA XREF: seg002:0080r + mov word ptr dword_D84A, bx + mov word ptr dword_D84A+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_D84E, bx + mov word ptr dword_D84E+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_D852, bx + mov word ptr dword_D852+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_D856, bx + mov word ptr dword_D856+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_32D9+2Fp + push ds + mov ax, 2500h + lds dx, dword_D84A + 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_D84E + 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_D852 + 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_D856 + 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: + add al, 0C0h ; 'À' + add ds:8E2Eh, bl + push ds + pop di + add cx, word_DAD8 + pop ds + 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_27FE+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_2194 + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_2194 + 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, 6Ah, 23h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 0F3h, 1Dh, 0Eh, 0E8h, 0EFh, 1Dh + db 8Bh, 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h + db 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 0D9h, 1Dh + db 0Eh, 0E8h, 0D5h, 1Dh, 0B8h, 2 dup(0), 0F8h, 5Eh, 5Fh + db 1Fh, 5Dh, 0CAh, 8, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_3B4 proc far ; CODE XREF: sub_F36+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_F36+31p sub_27FE+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, 278h + 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_27FE+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_2194 + 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_11DC+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_217E + +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_1BAE+Cp sub_2EF2+102p + +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_25CE + pop bp + retf 2 +sub_472 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_48A proc far ; CODE XREF: sub_506:loc_52Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_D7F0 + mov cx, word_D7F6 + 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_D7F2, ax + mov word_D7F4, 1 + mov al, byte ptr off_D7F8 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_4BA: ; CODE XREF: sub_48A+16j sub_48A+1Aj + xor ax, ax + mov word_D7F2, 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_27FE+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, 11B8h + 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_1A22+4w sub_1A2E+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:05DCp sub_1C26+3Fp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + cmp word ptr es:2, 0 + jz short loc_52D + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + +locret_52A: ; DATA XREF: sub_C1B4:loc_C317r + ; sub_C1B4:loc_C2E7r + retf 2 +; --------------------------------------------------------------------------- + +loc_52D: ; CODE XREF: sub_506+Cj + ; DATA XREF: sub_C1B4:loc_C327r + push es + +loc_52E: ; DATA XREF: sub_C1B4:loc_C2CEr + push cs + +loc_52F: ; DATA XREF: sub_C1B4:loc_C28Br + ; sub_C1B4:loc_C337r ... + call near ptr sub_48A + +loc_532: ; DATA XREF: sub_C1B4:loc_C246r + pop bp + +locret_533: ; DATA XREF: sub_C1B4:loc_C201r + retf 2 +sub_506 endp + +; --------------------------------------------------------------------------- + +loc_536: ; CODE XREF: sub_9D4C+9AP + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_DAC4, 64h ; 'd' + nop + push cs + call near ptr sub_23C0 + +loc_549: ; CODE XREF: seg000:0562j + nop + push cs +; --------------------------------------------------------------------------- + db 0E8h, 56h +byte_54D db 15h ; DATA XREF: sub_10FE+1Fr +; --------------------------------------------------------------------------- + mov di, si + cmp di, 0 + jle short loc_55D + +loc_555: ; CODE XREF: seg000:055Bj + nop + push cs + call near ptr sub_23C0 + dec di + jnz short loc_555 + +loc_55D: ; CODE XREF: seg000:0553j + sub word_DAC4, 6 + jg short loc_549 + mov word_DAC4, 0 + nop + push cs + call loc_1AA4 + pop di + pop si + retf 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_574 proc far ; CODE XREF: sub_2EF2+1Fp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov word_DDA2, 6 + mov ax, word_DAFC + add ax, 9 + push ax + push cs + call near ptr sub_24CA + jb short loc_5B0 + mov es, ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_AE2 + jb short loc_5B7 + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_DAFC + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_5B0: ; CODE XREF: sub_574+14j + mov byte ptr word_DAFE, 3 + jmp short loc_5C1 +; --------------------------------------------------------------------------- + +loc_5B7: ; CODE XREF: sub_574+22j + push es + push cs + call near ptr sub_25CE + mov byte ptr word_DAFE, 1 + +loc_5C1: ; CODE XREF: sub_574+41j + xor ax, ax + pop bp + retf 4 +sub_574 endp + +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ah] + mov si, [bp+8] + cmp si, 0 + jle short loc_5ED + +loc_5D8: ; CODE XREF: seg000:05EBj + push word ptr [bp+6] + push cs + call near ptr sub_506 + inc ah + jz short loc_5ED + mov es, word ptr [bp+0Ch] + mov es:[di], al + inc di + dec si + jnz short loc_5D8 + +loc_5ED: ; CODE XREF: seg000:05D6j seg000:05E1j + 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_620 + cmp dx, ax + ja short loc_620 + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_620: ; CODE XREF: seg000:060Aj seg000:060Ej + 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_63A proc far ; CODE XREF: sub_1CA6+34p sub_2EF2+78p + +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_65A + sub dx, bx + sbb cx, 0 + +loc_65A: ; CODE XREF: sub_63A+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_63A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_66A proc far ; CODE XREF: sub_7C8+1Ap sub_898+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_66A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_682 proc far ; CODE XREF: sub_1A1C+2p + mov ax, 0C00h + int 21h ; DOS - CLEAR KEYBOARD BUFFER + ; AL must be 01h, 06h, 07h, 08h, or 0Ah. + retf +sub_682 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_688 proc far ; CODE XREF: _main+1DP _main+26P ... + mov bx, sp + mov cx, si + push ds + lds si, ss:[bx+4] + lodsb + or al, al + jz short loc_6AB + mov ah, 2 + +loc_698: ; CODE XREF: sub_688+21j + cmp al, 0Ah + jnz short loc_6A2 + mov dl, 0Dh + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + mov al, 0Ah + +loc_6A2: ; CODE XREF: sub_688+12j + mov dl, al + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + lodsb + or al, al + jnz short loc_698 + +loc_6AB: ; CODE XREF: sub_688+Cj + pop ds + mov si, cx + retf 4 +sub_688 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_6B2 proc far ; CODE XREF: sub_22CA+34p sub_22CA+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_6B2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6D2 proc far ; CODE XREF: sub_708+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_6D2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_6E8 proc far ; CODE XREF: sub_708+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 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 0 + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + retf +sub_6E8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_708 proc far ; CODE XREF: sub_BFC2+3CP sub_C421+52P + push cs + call near ptr sub_6D2 + mov dx, 4A0h + +loc_70F: ; DATA XREF: sub_11DC:loc_1221r + ; seg000:2214r + mov ax, 0FFF0h + +loc_712: ; DATA XREF: seg000:220Ar + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + xor ax, ax + out dx, ax + mov dx, 4AEh + mov ax, 0Fh + out dx, ax + push cs + call near ptr sub_6E8 + retf +sub_708 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_734 proc far ; CODE XREF: sub_ADE2+6DP + ; sub_ADE2+118P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + push si + push di + mov bx, [bp+arg_0] + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 80h ; '€' + out 7Ch, al + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A4h + mov ax, 28F0h + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + mov ax, bx + and ax, 0Fh + out dx, ax + mov dx, 4AEh + mov ax, 27Fh + sub ax, bx + out dx, ax + cld + mov ax, 0A800h + mov ds, ax + assume ds:nothing + mov es, ax + assume es:nothing + mov si, 0 + mov di, 0FFFEh + mov ax, bx + shr bx, 4 + mov bp, 29h ; ')' + sub bp, bx + shl bx, 1 + dec ax + shr ax, 4 + shl ax, 1 + add si, ax + mov dx, 2 + sub dx, bx + mov bx, 190h + nop + +loc_7A2: ; CODE XREF: sub_734+77j + mov cx, bp + rep movsw + sub si, dx + sub di, dx + dec bx + jnz short loc_7A2 + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov al, 4 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 0 + out 7Ch, al + mov al, 6 + out 6Ah, al ; PC-98 GDC (6a): + ; + pop di + pop si + pop ds + assume ds:dseg + pop bp + retf 2 +sub_734 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7C8 proc far ; CODE XREF: sub_9980+8P sub_99C3+19P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_DAA2 + cmp bx, 0FFFFh + jnz short loc_818 + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_66A + or ax, dx + mov word_DAA2, ax + mov cx, ax + xor ax, ax + mov word_E99E, ax + mov word_E99C, ax + mov word_E9A0, ax + mov word_E9A2, ax + mov word_E998, ax + mov word_E99A, ax + inc dx + jz short loc_818 + mov bx, cx + xor cx, cx + mov dx, cx + mov ax, 4202h + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from end of file + mov word_E998, ax + mov word_E99A, dx + mov ax, 1 + +loc_818: ; CODE XREF: sub_7C8+Dj sub_7C8+39j + pop bp + retf 4 +sub_7C8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_81C proc far ; CODE XREF: sub_888+1p sub_9E4+1p + mov bx, word_DAA2 + cmp bx, 0FFFFh + jz short locret_886 + mov ax, word_E99C + cmp word_E99E, ax + jnb short loc_85A + push ds + mov cx, word_E99C + lds dx, dword_E994 + 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_84D + add word_E998, ax + adc word_E99A, 0 + cmp word_E99C, ax + jz short loc_853 + +loc_84D: ; CODE XREF: sub_81C+20j + mov word_E9A2, 1 + +loc_853: ; CODE XREF: sub_81C+2Fj + mov word_E99C, 0 + retf +; --------------------------------------------------------------------------- + +loc_85A: ; CODE XREF: sub_81C+10j + cmp word_E99E, 0 + jz short locret_886 + mov dx, ax + mov cx, 0 + add dx, word_E998 + mov word_E99E, cx + mov word_E99C, cx + adc cx, word_E99A + mov ax, 4200h + mov bx, word_DAA2 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_E998, ax + mov word_E99A, dx + +locret_886: ; CODE XREF: sub_81C+7j sub_81C+43j + retf +sub_81C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_888 proc far ; CODE XREF: sub_2B60+53p sub_9908+19P ... + push cs + call near ptr sub_81C + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_DAA2, 0FFFFh + retf +sub_888 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_898 proc far ; CODE XREF: sub_B2F2+16P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_DAA2 + cmp bx, 0FFFFh + jnz short loc_8D4 + mov cx, 20h ; ' ' + mov ah, 3Ch ; '<' + push ax + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_66A + or ax, dx + mov word_DAA2, ax + xor ax, ax + mov word_E99E, ax + mov word_E99C, ax + mov word_E9A0, ax + mov word_E9A2, ax + mov word_E998, ax + mov word_E99A, ax + mov ax, dx + inc ax + +loc_8D4: ; CODE XREF: sub_898+Dj + pop bp + retf 4 +sub_898 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_8D8 proc far ; CODE XREF: sub_B2F2+8P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_AE2 + jb short loc_8EE + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_8EE: ; CODE XREF: sub_8D8+Fj + sbb ax, ax + inc ax + retf 4 +sub_8D8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_8F4 proc far ; CODE XREF: sub_2B60+2Cp sub_2B60+4Fp ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_DAA0, 0 + jz short loc_978 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + assume es:nothing + +loc_906: ; CODE XREF: sub_8F4+7Fj + mov ax, word_E99E + cmp word_E99C, ax + jb short loc_93C + add word_E998, ax + adc word_E99A, 0 + push bx + push ds + mov cx, word_DAA0 + mov bx, word_DAA2 + lds dx, dword_E994 + 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_E99E, ax + jz short loc_997 + mov word_E99C, 0 + +loc_93C: ; CODE XREF: sub_8F4+19j + mov si, word_E99E + sub si, word_E99C + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_96D + or si, si + jz short loc_96D + push si + push ds + mov cx, si + mov ax, word_E99C + lds si, dword_E994 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_96D: ; CODE XREF: sub_8F4+5Cj sub_8F4+60j + add word_E99C, si + sub bx, si + jnz short loc_906 + jmp short loc_99D +; --------------------------------------------------------------------------- + nop + +loc_978: ; CODE XREF: sub_8F4+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_DAA2 + 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_E998, ax + adc word_E99A, 0 + mov bx, cx + sub bx, ax + jz short loc_99D + +loc_997: ; CODE XREF: sub_8F4+40j + mov word_E9A0, 1 + +loc_99D: ; CODE XREF: sub_8F4+81j sub_8F4+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_8F4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9A8 proc far ; CODE XREF: sub_2B60+1Bp sub_9908+8P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_DAA2 + cmp bx, 0FFFFh + jnz short loc_9DF + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_AE2 + sbb bx, bx + or ax, bx + mov word_DAA2, ax + xor ax, ax + mov word_E99E, ax + mov word_E998, ax + mov word_E99A, ax + mov word_E99C, ax + mov word_E9A0, ax + mov word_E9A2, ax + lea ax, [bx+1] + +loc_9DF: ; CODE XREF: sub_9A8+Cj + pop bp + retf 4 +sub_9A8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_9E4 proc far ; CODE XREF: sub_9980+12P sub_99C3+23P ... + push cs + call near ptr sub_81C + cmp bx, 0FFFFh + jz short locret_A15 + 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_E9A0, 0 + mov word_E998, ax + mov word_E99A, dx + +locret_A15: ; CODE XREF: sub_9E4+7j + retf 6 +sub_9E4 endp + +; --------------------------------------------------------------------------- + mov ax, word_E99C + xor dx, dx + add ax, word_E998 + adc dx, word_E99A + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A26 proc far ; CODE XREF: sub_9980+37P sub_99C3+48P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_DAA0, 0 + jz short loc_A9C + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_A38: ; CODE XREF: sub_A26+6Ej + mov cx, word_DAA0 + sub cx, word_E99C + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_E994 + add di, word_E99C + sub bx, cx + add word_E99C, 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_A92 + push ds + push bx + mov cx, word_DAA0 + mov bx, word_DAA2 + lds dx, dword_E994 + 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_AAE + cmp word_DAA0, ax + jnz short loc_AAE + mov word_E99C, 0 + add word_E998, ax + adc word_E99A, 0 + +loc_A92: ; CODE XREF: sub_A26+3Fj + or bx, bx + jnz short loc_A38 + mov ax, 1 + jmp short loc_AC4 +; --------------------------------------------------------------------------- + nop + +loc_A9C: ; CODE XREF: sub_A26+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_DAA2 + 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_AB6 + +loc_AAE: ; CODE XREF: sub_A26+55j sub_A26+5Bj + mov word_E9A2, 1 + xor ax, ax + +loc_AB6: ; CODE XREF: sub_A26+86j + add word_E998, ax + adc word_E99A, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_AC4: ; CODE XREF: sub_A26+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_A26 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_ACC proc far ; CODE XREF: sub_27FE+68p sub_27FE+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_ADE + mov ax, 0FFF3h + +locret_ADE: ; CODE XREF: sub_ACC+Dj + retf 2 +sub_ACC endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_AE2 proc far ; CODE XREF: sub_574+1Fp sub_8D8+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_DAA4 + 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_AF6 + retf 4 +; --------------------------------------------------------------------------- + +loc_AF6: ; CODE XREF: sub_AE2+Fj + mov ax, 0FFFEh + retf 4 +sub_AE2 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_B02 + +loc_AFC: ; CODE XREF: sub_B02+1Fj sub_B02+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_B02 + +; =============== S U B R O U T I N E ======================================= + + +sub_B02 proc far ; CODE XREF: sub_B565+59P sub_B565+9AP + +; FUNCTION CHUNK AT 0AFC 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_B17 + xchg bx, si + +loc_B17: ; CODE XREF: sub_B02+11j + mov bp, word_DA6E + mov dx, word_DA70 + sub si, bp + jl short loc_AFC + 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_AFC + add bx, bp + cmp ax, di + jle short loc_B40 + xchg ax, di + +loc_B40: ; CODE XREF: sub_B02+3Bj + mov dx, word_DA74 + mov bp, word_DA76 + sub di, dx + js short loc_AFC + 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_AFC + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_DA7A + 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+28Eh] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+290h] + sar si, 4 + js short loc_BBE + lea bp, [si+2Ah] + shl bp, 1 + +loc_BA6: ; CODE XREF: sub_B02+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_BA6 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_BBE: ; CODE XREF: sub_B02+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_BC6: ; CODE XREF: sub_B02+C7j + stosw + sub di, bp + jnb short loc_BC6 + pop di + pop si + pop bp + retf 8 +sub_B02 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_BD2 proc far ; CODE XREF: sub_BA88+176P + ; sub_BC1F+151P ... + push di + mov di, sp + mov ax, word_DA74 + mov cx, ax + mov bx, ss:[di+0Ah] + sub bx, ax + jg short loc_BE4 + xor bx, bx + +loc_BE4: ; CODE XREF: sub_BD2+Ej + mov ax, bx + shl ax, 2 + add ax, bx + add ax, word_DA7A + mov es, ax + mov ax, word_DA76 + mov dx, ss:[di+6] + sub dx, cx + cmp dx, ax + jl short loc_C00 + mov dx, ax + +loc_C00: ; CODE XREF: sub_BD2+2Aj + sub dx, bx + jl short loc_C36 + mov ax, ss:[di+0Ch] + mov bx, ss:[di+8] + sub bx, ax + jl short loc_C36 + inc bx + mov di, dx + shl di, 2 + add di, dx + shl di, 4 + add di, ax + lea dx, [bx+50h] + mov ax, 0FFFFh + test di, 1 + jnz short loc_C48 + shr bx, 1 + jb short loc_C3A + nop + +loc_C2E: ; CODE XREF: sub_BD2+62j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_C2E + +loc_C36: ; CODE XREF: sub_BD2+30j sub_BD2+3Cj + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C3A: ; CODE XREF: sub_BD2+59j sub_BD2+6Fj + mov cx, bx + rep stosw + stosb + sub di, dx + jnb short loc_C3A + pop di + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_C48: ; CODE XREF: sub_BD2+55j + shr bx, 1 + jb short loc_C5C + dec bx + nop + +loc_C4E: ; CODE XREF: sub_BD2+84j + mov cx, bx + stosb + rep stosw + stosb + sub di, dx + jnb short loc_C4E + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C5C: ; CODE XREF: sub_BD2+78j sub_BD2+91j + mov cx, bx + stosb + rep stosw + sub di, dx + jnb short loc_C5C + pop di + retf 8 +sub_BD2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C6A proc far ; CODE XREF: sub_A6A3+1E6P + +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_C9B: ; CODE XREF: sub_C6A+73j + mov dx, es:[bx+si+2] + cmp dx, [bp+var_4] + jge short loc_CB0 + mov [bp+var_8], bx + mov [bp+var_A], bx + mov [bp+var_4], dx + jmp short loc_CC2 +; --------------------------------------------------------------------------- + nop + +loc_CB0: ; CODE XREF: sub_C6A+38j + cmp [bp+var_4], dx + jnz short loc_CBA + mov [bp+var_A], bx + jmp short loc_CC2 +; --------------------------------------------------------------------------- + +loc_CBA: ; CODE XREF: sub_C6A+49j + cmp [bp+var_C], dx + jge short loc_CC2 + mov [bp+var_C], dx + +loc_CC2: ; CODE XREF: sub_C6A+43j sub_C6A+4Ej ... + mov dx, es:[bx+si] + cmp ax, dx + jl short loc_CD4 + mov ax, dx + jmp short loc_CDA +; --------------------------------------------------------------------------- + nop + +loc_CCE: ; CODE XREF: sub_C6A+79j sub_C6A+7Fj ... + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + +loc_CD4: ; CODE XREF: sub_C6A+5Dj + cmp di, dx + jge short loc_CDA + mov di, dx + +loc_CDA: ; CODE XREF: sub_C6A+61j sub_C6A+6Cj + add bx, 4 + loop loc_C9B + cmp word_DA72, ax + jl short loc_CCE + cmp word_DA6E, di + jg short loc_CCE + mov ax, [bp+var_4] + cmp word_DA78, ax + jl short loc_CCE + mov dx, [bp+var_C] + cmp word_DA74, dx + jg short loc_CCE + mov ax, word_DA78 + cmp ax, dx + jge short loc_D06 + mov dx, ax + +loc_D06: ; CODE XREF: sub_C6A+98j + mov [bp+var_C], dx + mov ax, [bp+arg_0] + cmp [bp+var_8], 0 + jnz short loc_D1F + cmp [bp+var_A], ax + jnz short loc_D1F + mov [bp+var_8], ax + mov [bp+var_A], 0 + +loc_D1F: ; CODE XREF: sub_C6A+A6j sub_C6A+ABj + mov bx, [bp+var_8] + mov dx, [bp+arg_0] + mov ax, word_DA74 + +loc_D28: ; CODE XREF: sub_C6A+CBj + mov cx, bx + sub bx, 4 + jns short loc_D31 + mov bx, dx + +loc_D31: ; CODE XREF: sub_C6A+C3j + cmp es:[bx+si+2], ax + jl short loc_D28 + 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_DA74 + jge short loc_D6F + mov ax, dx + sub ax, [bp+var_6] + push ax + mov ax, di + sub ax, es:[bx+si] + mov cx, word_DA74 + sub cx, dx + imul cx + pop cx + idiv cx + add di, ax + mov dx, word_DA74 + +loc_D6F: ; CODE XREF: sub_C6A+E7j + mov [bp+var_4], dx + xchg di, dx + mov ax, es:[bx+si] + mov cx, [bp+var_6] + sub cx, di + mov bx, 1190h + call sub_1A3A + mov bx, [bp+var_A] + mov cx, [bp+arg_0] + mov ax, word_DA74 + +loc_D8B: ; CODE XREF: sub_C6A+130j + mov di, bx + add bx, 4 + cmp bx, cx + jle short loc_D96 + xor bx, bx + +loc_D96: ; CODE XREF: sub_C6A+128j + cmp es:[bx+si+2], ax + jl short loc_D8B + 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_DCB + mov ax, word_DA74 + 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_DCB: ; CODE XREF: sub_C6A+14Bj + mov dx, di + mov ax, bx + mov cx, [bp+var_2] + sub cx, [bp+var_4] + mov bx, 1198h + call sub_1A3A + mov si, [bp+var_4] + +loc_DDE: ; CODE XREF: sub_C6A+1CEj + mov di, [bp+var_6] + cmp di, [bp+var_2] + jle short loc_DE9 + mov di, [bp+var_2] + +loc_DE9: ; CODE XREF: sub_C6A+17Aj + cmp [bp+var_C], di + jle short loc_E62 + push di + lea dx, [di-1] + sub dx, si + sub si, word_DA74 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov es, word_DA7A + call loc_2E20 + pop si + les di, [bp+arg_2] + cmp si, [bp+var_6] + jnz short loc_E35 + mov bx, [bp+var_8] + mov dx, es:[bx+di] + sub bx, 4 + jns short loc_E20 + mov bx, [bp+arg_0] + +loc_E20: ; CODE XREF: sub_C6A+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, 1190h + call sub_1A3A + +loc_E35: ; CODE XREF: sub_C6A+1A6j + cmp [bp+var_2], si + jnz short loc_DDE + mov bx, [bp+var_A] + mov dx, es:[bx+di] + add bx, 4 + cmp bx, [bp+arg_0] + jle short loc_E4A + xor bx, bx + +loc_E4A: ; CODE XREF: sub_C6A+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, 1198h + push 0DDEh + jmp sub_1A3A +; --------------------------------------------------------------------------- + +loc_E62: ; CODE XREF: sub_C6A+182j + mov es, word_DA7A + mov dx, [bp+var_C] + sub dx, si + sub si, word_DA74 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + call loc_2E20 + pop si + pop di + leave + retf 6 +sub_C6A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E82 proc far ; CODE XREF: sub_B6C0+73P + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + mov bx, bp + mov bp, sp + mov cx, [bp+arg_2] + mov dx, [bp+arg_0] + mov bp, bx + cmp cx, word_DA6E + jl short locret_EC2 + cmp cx, word_DA72 + jg short locret_EC2 + sub dx, word_DA74 + jl short locret_EC2 + cmp dx, word_DA76 + jg short locret_EC2 + mov ax, dx + shl ax, 2 + add dx, ax + add dx, word_DA7A + mov es, dx + mov bx, cx + shr bx, 3 + and cl, 7 + mov al, 80h ; '€' + shr al, cl + mov es:[bx], al + +locret_EC2: ; CODE XREF: sub_E82+10j sub_E82+16j ... + retf 4 +sub_E82 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_EC6 proc far ; CODE XREF: sub_A899+CP sub_B565+31P ... + 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_EC6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_EF0 proc far ; CODE XREF: sub_A899+14P sub_B565+C8P ... + xor al, al + out 7Ch, al + retf +sub_EF0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_EF6 proc far ; CODE XREF: _main:loc_A468P + xor ax, ax + cmp word_DAA6, ax + jnz short locret_F19 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_24DE + or ax, ax + jz short locret_F19 + mov word_DAA6, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_106A + mov ax, 1 + +locret_F19: ; CODE XREF: sub_EF6+6j sub_EF6+13j + retf +sub_EF6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_F1A proc far ; CODE XREF: sub_9A17+15CP + ; sub_9BDF+143P ... + mov ax, word_DAA6 + test ax, ax + jz short locret_F35 + push ax + push ax + xor ax, ax + mov word_DAA6, ax + push ax + push cs + call near ptr sub_10D8 + nop + push cs + call near ptr sub_25CE + mov ax, 1 + +locret_F35: ; CODE XREF: sub_F1A+5j + retf +sub_F1A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F36 proc far ; CODE XREF: _main+5AP + +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_AE2 + mov bp, ax + mov ax, 0 + jb short loc_FC3 + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_2194 + mov si, ax + mov ax, 0 + jb short loc_FBB + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_FB1 + mov di, sp + push ss + pop es + cmp byte ptr es:[di+5], 0 + jnz short loc_FB1 + add di, 8 + push si + mov si, 2B8h + mov cx, 4 + repe cmpsw + pop si + jnz short loc_FB1 + 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_FB1 + push si + xor ax, ax + push ax + push cs + call near ptr sub_10D8 + mov ax, 1 + jmp short loc_FB3 +; --------------------------------------------------------------------------- + +loc_FB1: ; CODE XREF: sub_F36+34j sub_F36+3Fj ... + xor ax, ax + +loc_FB3: ; CODE XREF: sub_F36+79j + push ax + push si + nop + push cs + call near ptr sub_217E + pop ax + +loc_FBB: ; CODE XREF: sub_F36+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_FC3: ; CODE XREF: sub_F36+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_F36 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FCC proc far ; CODE XREF: sub_9B9D+37P sub_9EDD+6FP ... + +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_DD88 + 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_100E + +loc_FFA: ; CODE XREF: sub_FCC+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_FFA + +loc_100E: ; CODE XREF: sub_FCC+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_FCC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1022 proc near ; CODE XREF: seg000:105Ep sub_106A+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_102E: ; CODE XREF: sub_1022+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_102E + retn +sub_1022 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_1022 + mov al, 0Ah + out 68h, al + pop di + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_106A proc far ; CODE XREF: sub_EF6+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_1078: ; CODE XREF: sub_106A+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1022 + inc dl + jnz short loc_1078 + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_106A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_108E proc near ; CODE XREF: seg000:10CBp sub_10D8+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_109A: ; CODE XREF: sub_108E+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_109A + retn +sub_108E endp + +; --------------------------------------------------------------------------- + nop + push ds + push si + mov dx, sp + cli + add sp, 8 + pop si + pop ds + pop ax + mov sp, dx + sti + mov ah, 0 + add ax, 5680h + and al, 7Fh + push ax + mov al, 0Bh + out 68h, al + pop ax + call sub_108E + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_10D8 proc far ; CODE XREF: sub_F1A+10p sub_F36+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_10E7: ; CODE XREF: sub_10D8+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_108E + inc dl + jnz short loc_10E7 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_10D8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_10FE proc far ; CODE XREF: sub_19F6+19p _main+3P + 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_DAB0, ax + mov word_DA7A, ax + mov word_DAB2, 3E80h + xor ax, ax + mov word_DA6E, ax + mov word_DA74, ax + mov es, ax + assume es:seg000 + mov ah, es:byte_54D + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_DAB8, ax + mov ax, 27Fh + mov word_DA72, ax + mov word_DA70, ax + mov ax, 190h + mov word_DAB4, ax + dec ax + mov word_DA78, ax + mov word_DA76, ax + mov word_DA7C, 7CB0h + retf +sub_10FE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_114C proc far ; CODE XREF: sub_19F6+1Dp sub_AC06+38P ... + 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_DAB2 + mov es, word_DAB0 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_114C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1170 proc near ; CODE XREF: sub_1186+25p sub_1186+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_1170 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1186 proc far ; CODE XREF: sub_AC06+7CP + xor dx, dx + mov cx, word_DAB2 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_2194 + xchg ax, dx + jb short locret_11D8 + 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_1170 + call sub_1170 + mov bx, 0B000h + call sub_1170 + call sub_1170 + mov bx, 0B800h + call sub_1170 + call sub_1170 + mov bx, 0E000h + call sub_1170 + call sub_1170 + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_217E + mov ax, 1 + +locret_11D8: ; CODE XREF: sub_1186+11j + retf 2 +sub_1186 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_11DC proc far ; CODE XREF: sub_22CA+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_122F + 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_122F + 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_DD8C, 1 + jz short loc_1216 + 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_1216: ; CODE XREF: sub_11DC+34j + test cl, 1 + jz short loc_1221 + 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_1221: ; CODE XREF: sub_11DC+3Dj + test byte ptr es:loc_70F+2, 1 + jz short loc_122D + 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_122D: ; CODE XREF: sub_11DC+4Bj + mov ax, cx + +locret_122F: ; CODE XREF: sub_11DC+Aj sub_11DC+1Cj + retf 4 +sub_11DC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1232 proc far ; CODE XREF: sub_B8A6+38P sub_B8A6+57P + +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_DAB0 + assume es:nothing + 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_127A: ; CODE XREF: sub_1232+98j + lodsb + or al, al + jz short loc_12CC + 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_129C: ; CODE XREF: sub_1232+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_129C + sub di, 500h + xor ch, ch + add cx, bp + jmp short loc_127A +; --------------------------------------------------------------------------- + +loc_12CC: ; CODE XREF: sub_1232+4Bj + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ch +sub_1232 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12DC proc far ; CODE XREF: sub_AC06+68P sub_ADE2+A3P ... + +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_12FD + push ax + nop + push cs + call near ptr sub_25CE + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_12FD: ; CODE XREF: sub_12DC+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_1317 + push ax + nop + push cs + call near ptr sub_25CE + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_1317: ; CODE XREF: sub_12DC+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_1324 + push ax + nop + push cs + call near ptr sub_25CE + +loc_1324: ; CODE XREF: sub_12DC+40j + pop bp + retf 8 +sub_12DC endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1334 + +loc_1328: ; CODE XREF: sub_1334+11j sub_1334+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_1334 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1334 proc far ; CODE XREF: sub_C940+39P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 1328 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_AE2 + jb short loc_1328 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_2194 + jb short loc_1328 + 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_137E: ; CODE XREF: sub_1334+54j sub_1334+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_137E + inc al + loop loc_137E + mov ax, 0FFF3h + call sub_18DE + cmp dl, 50h ; 'P' + jnz short loc_1328 + call sub_18DE + cmp dl, 69h ; 'i' + jnz short loc_1328 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_13A9: ; CODE XREF: sub_1334+7Cj + inc ax + call sub_18DE + cmp dl, 1Ah + jnz short loc_13A9 + stosw + +loc_13B3: ; CODE XREF: sub_1334+84j + call sub_18DE + or dl, dl + jnz short loc_13B3 + call sub_18DE + mov al, dl + stosb + mov ds:410Ch, al + call sub_18DE + mov ah, dl + call sub_18DE + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_13D8 + jmp loc_1328 +; --------------------------------------------------------------------------- + +loc_13D8: ; CODE XREF: sub_1334+9Fj + call sub_18DE + cmp dl, 4 + jz short loc_13E3 + jmp loc_1328 +; --------------------------------------------------------------------------- + +loc_13E3: ; CODE XREF: sub_1334+AAj + mov al, dl + stosb + call sub_18DE + mov al, dl + call sub_18DE + mov ah, dl + stosw + call sub_18DE + mov al, dl + call sub_18DE + mov ah, dl + stosw + call sub_18DE + mov ah, dl + call sub_18DE + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_DDA2, 0Ah + nop + push cs + call near ptr sub_2426 + pop ds + stosw + jb short loc_1434 + push es + push di + mov es, ax + xor di, di + +loc_1428: ; CODE XREF: sub_1334+FBj + call sub_18DE + mov al, dl + stosb + dec bx + jnz short loc_1428 + pop di + pop es + nop + +loc_1434: ; CODE XREF: sub_1334+ECj + call sub_18DE + mov ah, dl + call sub_18DE + mov al, dl + stosw + mov ds:4000h, ax + mov bx, ax + call sub_18DE + mov ah, dl + call sub_18DE + 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_DDA2, 0Ah + nop + push cs + call near ptr sub_2426 + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_1482 + jmp loc_1328 +; --------------------------------------------------------------------------- + +loc_1482: ; CODE XREF: sub_1334+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_14B4 + mov bl, 30h ; '0' + nop + +loc_14AA: ; CODE XREF: sub_1334+17Ej + call sub_18DE + mov al, dl + stosb + dec bl + jnz short loc_14AA + +loc_14B4: ; CODE XREF: sub_1334+171j + xor bl, bl + call sub_17F0 + mov bl, dl + mov al, dl + shl al, 4 + call sub_17F0 + or al, dl + les di, ds:4004h + mov cx, ds:4000h + rep stosb + mov cl, 0FFh + nop + +loc_14D2: ; CODE XREF: sub_1334+490j + ; sub_1334+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_14FE + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_14F2 + call sub_190A + +loc_14F2: ; CODE XREF: sub_1334+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_14FE: ; CODE XREF: sub_1334+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_154C + push cx + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_153E + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1534 + call sub_190A + +loc_1534: ; CODE XREF: sub_1334+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_153E: ; CODE XREF: sub_1334+1F1j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + adc bl, 0 + pop cx + +loc_154C: ; CODE XREF: sub_1334+1E2j + cmp bl, cl + jnz short loc_15C0 + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_1566 + 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_1566: ; CODE XREF: sub_1334+223j + and bl, 0Fh + nop + +loc_156A: ; CODE XREF: sub_1334+284j + call sub_17F0 + mov bl, dl + mov al, dl + shl al, 4 + call sub_17F0 + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_1588 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1588: ; CODE XREF: sub_1334+24Aj + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_15AE + mov si, ds:4110h + cmp si, 4000h + jnz short loc_15A4 + call sub_190A + nop + +loc_15A4: ; CODE XREF: sub_1334+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_15AE: ; CODE XREF: sub_1334+260j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + jb short loc_156A + mov cl, 0FFh + jmp loc_17BE +; --------------------------------------------------------------------------- + nop + +loc_15C0: ; CODE XREF: sub_1334+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, ds:4112h + mov cl, ds:4113h + nop + +loc_15D0: ; CODE XREF: sub_1334+2BCj + inc bh + dec cl + jns short loc_15EE + mov si, ds:4110h + cmp si, 4000h + jnz short loc_15E4 + call sub_190A + nop + +loc_15E4: ; CODE XREF: sub_1334+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_15EE: ; CODE XREF: sub_1334+2A0j + shl dl, 1 + jb short loc_15D0 + mov ds:4112h, dl + mov ds:4113h, cl + mov dh, 0 + dec bh + jnz short loc_1603 + jmp loc_169A +; --------------------------------------------------------------------------- + +loc_1603: ; CODE XREF: sub_1334+2CAj + cmp bh, 8 + jl short loc_1648 + mov cx, bp + +loc_160A: ; CODE XREF: sub_1334+30Fj + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1618 + call sub_190A + +loc_1618: ; CODE XREF: sub_1334+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_160A + mov bp, cx + nop + +loc_1648: ; CODE XREF: sub_1334+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_1674 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1668 + call sub_190A + +loc_1668: ; CODE XREF: sub_1334+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1674: ; CODE XREF: sub_1334+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_169A: ; CODE XREF: sub_1334+2CCj + mov cx, ax + test bl, bl + jnz short loc_16A3 + jmp loc_1740 +; --------------------------------------------------------------------------- + +loc_16A3: ; CODE XREF: sub_1334+36Aj + mov bh, 0 + mov ax, ds:4000h + cmp bl, 1 + jz short loc_16C2 + cmp bl, 2 + jnz short loc_16B8 + shl ax, 1 + adc bh, bh + jmp short loc_16C2 +; --------------------------------------------------------------------------- + +loc_16B8: ; CODE XREF: sub_1334+37Cj + dec ax + cmp bl, 3 + jz short loc_16C2 + add ax, 2 + nop + +loc_16C2: ; CODE XREF: sub_1334+377j + ; sub_1334+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_16D6 + sub dx, 1000h + nop + +loc_16D6: ; CODE XREF: sub_1334+39Bj + mov ds, dx + or bh, bh + jnz short loc_1718 + mov ax, cx + +loc_16DE: ; CODE XREF: sub_1334+3DEj + mov cx, si + cmp si, di + ja short loc_16E6 + mov cx, di + +loc_16E6: ; CODE XREF: sub_1334+3AEj + neg cx + test ax, ax + jz short loc_16F4 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_16F4: ; CODE XREF: sub_1334+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1704 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1704: ; CODE XREF: sub_1334+3C6j + or si, si + jnz short loc_1710 + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1710: ; CODE XREF: sub_1334+3D2j + test ax, ax + jnz short loc_16DE + pop ds + assume ds:dseg + jmp loc_17BC +; --------------------------------------------------------------------------- + +loc_1718: ; CODE XREF: sub_1334+3A6j + ; sub_1334:loc_173Aj + lodsb + mov ah, al + or si, si + jnz short loc_1728 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_1728: ; CODE XREF: sub_1334+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_173A + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_173A: ; CODE XREF: sub_1334+3FCj + loop loc_1718 + pop ds + assume ds:dseg + jmp short loc_17BC +; --------------------------------------------------------------------------- + nop + +loc_1740: ; CODE XREF: sub_1334+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1756 + 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_1756: ; CODE XREF: sub_1334+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1778 + nop + +loc_1760: ; CODE XREF: sub_1334:loc_176Ej + ; sub_1334+43Fj + stosb + or di, di + jnz short loc_176E + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_176E: ; CODE XREF: sub_1334+42Fj + loop loc_1760 + sub bp, 1 + jnb short loc_1760 + jmp short loc_17BC +; --------------------------------------------------------------------------- + nop + +loc_1778: ; CODE XREF: sub_1334+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_1790 + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_1790: ; CODE XREF: sub_1334+44Dj + ; sub_1334:loc_17B4j ... + mov al, dl + stosb + or di, di + jnz short loc_179E + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_179E: ; CODE XREF: sub_1334+461j + loop loc_17A6 + sub bp, 1 + jb short loc_17BC + nop + +loc_17A6: ; CODE XREF: sub_1334:loc_179Ej + mov al, bh + stosb + or di, di + jnz short loc_17B4 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_17B4: ; CODE XREF: sub_1334+477j + loop loc_1790 + sub bp, 1 + jnb short loc_1790 + nop + +loc_17BC: ; CODE XREF: sub_1334+3E1j + ; sub_1334+409j ... + mov cl, bl + +loc_17BE: ; CODE XREF: sub_1334+288j + cmp ds:4008h, di + jbe short loc_17C7 + jmp loc_14D2 +; --------------------------------------------------------------------------- + +loc_17C7: ; CODE XREF: sub_1334+48Ej + mov ax, es + cmp ds:400Ah, ax + jbe short loc_17D2 + jmp loc_14D2 +; --------------------------------------------------------------------------- + +loc_17D2: ; CODE XREF: sub_1334+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_217E + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_1334 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_17F0 proc near ; CODE XREF: sub_1334+182p + ; sub_1334+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, ds:4112h + mov cl, ds:4113h + dec cl + jns short loc_1818 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_180E + call sub_190A + +loc_180E: ; CODE XREF: sub_17F0+19j + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1818: ; CODE XREF: sub_17F0+Fj + shl dl, 1 + jb short loc_1866 + add al, 2 + dec cl + jns short loc_183A + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1830 + call sub_190A + nop + +loc_1830: ; CODE XREF: sub_17F0+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_183A: ; CODE XREF: sub_17F0+30j + shl dl, 1 + jnb short loc_1866 + add al, 2 + inc ah + dec cl + jns short loc_185E + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1854 + call sub_190A + nop + +loc_1854: ; CODE XREF: sub_17F0+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_185E: ; CODE XREF: sub_17F0+54j + shl dl, 1 + jnb short loc_1866 + add al, 4 + inc ah + +loc_1866: ; CODE XREF: sub_17F0+2Aj sub_17F0+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_189C + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1890 + call sub_190A + +loc_1890: ; CODE XREF: sub_17F0+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_189C: ; CODE XREF: sub_17F0+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_18D0 + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_18D0: ; CODE XREF: sub_17F0+D9j sub_17F0+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_18D0 + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_17F0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_18DE proc near ; CODE XREF: sub_1334+5Dp sub_1334+65p ... + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_18EC + call sub_190A + +loc_18EC: ; CODE XREF: sub_18DE+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_18DE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_190A proc near ; CODE XREF: sub_1334+1BBp + ; sub_1334+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_190A endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1922 + +loc_191C: ; CODE XREF: sub_1922+10j sub_1922+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1922 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1922 proc far ; CODE XREF: sub_C37B+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 191C SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_DA74 + cmp ax, word_DA76 + ja short loc_191C + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_191C + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1952 + add cx, di + jle short loc_191C + shl di, 2 + add si, di + xor di, di + +loc_1952: ; CODE XREF: sub_1922+23j + cmp di, 50h ; 'P' + jge short loc_191C + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1961 + mov cx, 50h ; 'P' + +loc_1961: ; CODE XREF: sub_1922+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_DA7A + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1974: ; CODE XREF: sub_1922+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1D7Eh] + mov dx, cs:[bx+1D80h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1D7Eh] + or dx, cs:[bx+1D80h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1D7Eh] + or dx, cs:[bx+1D80h] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1D7Eh] + or dx, cs:[bx+1D80h] + 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_1974 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1922 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_19F0 proc far ; CODE XREF: sub_19F6+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_19F0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_19F6 proc far ; CODE XREF: sub_C421+19P + mov al, 41h ; 'A' + out 6Ah, al ; PC-98 GDC (6a): + ; Set display mode to LCD + mov word_DAC4, 0 + push cs + call loc_1AA4 + mov al, 0 + out 0A4h, al ; Interrupt Controller #2, 8259A + out 0A6h, al ; Interrupt Controller #2, 8259A + push cs + call near ptr sub_19F0 + push cs + call near ptr sub_10FE + push cs + call near ptr sub_114C + push cs + call near ptr sub_1A70 + retf +sub_19F6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1A1C proc far ; CODE XREF: sub_BFC2+37P + nop + push cs + call near ptr sub_682 + retf +sub_1A1C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A22 proc far ; CODE XREF: sub_C421+43P + xor ax, ax + mov es, ax + assume es:seg000 + or byte ptr es:loc_4FF+1, 20h + retf +sub_1A22 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1A2E proc far ; CODE XREF: sub_BEB8+8P + xor ax, ax + mov es, ax + and byte ptr es:loc_4FF+1, 0DFh + retf +sub_1A2E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1A3A proc near ; CODE XREF: sub_C6A+115p sub_C6A+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_1A3A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1A70 proc far ; CODE XREF: sub_19F6+21p + push si + push di + push ds + pop es + assume es:dseg + mov di, 11B8h + mov si, 2D6h + 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_DAC4, 64h ; 'd' + push cs + call loc_1AA4 + retf +sub_1A70 endp + +; --------------------------------------------------------------------------- + +loc_1AA4: ; CODE XREF: seg000:056Cp sub_19F6+Bp ... + cld + push si + mov ax, word_DAC4 + 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_1ACA + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1ACA: ; CODE XREF: seg000:1AC1j + mov si, 11B8h + mov dl, 64h ; 'd' + cmp word_DAF6, bx + jnz short loc_1B0E + +loc_1AD5: ; CODE XREF: seg000:1B09j + 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_1AD5 + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1B0E: ; CODE XREF: seg000:1AD3j + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1B23 + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1B23: ; CODE XREF: seg000:1B1Aj + shr al, 1 + cmc + sbb al, al + mov cs:byte_1B8C, al + mov dx, bx + push di + mov di, 0 + +loc_1B32: ; CODE XREF: seg000:1BA9j + 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_1B67 + mov bh, al + +loc_1B67: ; CODE XREF: seg000:1B63j + cmp bh, bl + ja short loc_1B6D + mov bh, bl + +loc_1B6D: ; CODE XREF: seg000:1B69j + 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_1B8C db 0 ; DATA XREF: seg000:1B28w +; --------------------------------------------------------------------------- + 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_1B32 + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BAE proc far ; CODE XREF: sub_2C1C+2Cp seg000:2CFDp + +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_25CE + pop bp + retf 2 +sub_1BAE 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_1BF6 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1BF6: ; CODE XREF: seg000:1BDEj + call word ptr es:4 + test ah, ah + jnz short locret_1C25 + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1C25 + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1C24 + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1C24: ; CODE XREF: seg000:1C12j + pop ax + +locret_1C25: ; CODE XREF: seg000:1BFDj seg000:1C08j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1C26 proc near ; CODE XREF: sub_1C6Ap + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1C43 + ja short loc_1C3F + cmp ax, es:6 + jb short loc_1C43 + +loc_1C3F: ; CODE XREF: sub_1C26+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1C43: ; CODE XREF: sub_1C26+Ej sub_1C26+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_1C26 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1C6A proc near ; DATA XREF: sub_2EF2+8Do + call sub_1C26 + or ah, ah + jnz short locret_1C76 + xor al, es:1Eh + +locret_1C76: ; CODE XREF: sub_1C6A+5j + retn +sub_1C6A endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C78 proc far ; CODE XREF: seg000:2D1Dp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+arg_2] + mov di, [bp+arg_4] + test si, si + jz short loc_1C9B + +loc_1C88: ; CODE XREF: sub_1C78+21j + mov es, [bp+arg_0] + call word ptr es:2 + inc ah + jz short loc_1C9B + mov es, [bp+arg_6] + stosb + dec si + jnz short loc_1C88 + +loc_1C9B: ; CODE XREF: sub_1C78+Ej sub_1C78+1Aj + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_1C78 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1CA6 proc far ; CODE XREF: seg000:2D52p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_63A + pop bp + retf 2 +sub_1CA6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1CE2 proc far ; CODE XREF: seg000:2D5Ep + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov es, [bp+arg_4] + inc [bp+arg_2] + mov di, [bp+arg_0] + or di, di + jz short loc_1CFF + +loc_1CF3: ; CODE XREF: sub_1CE2+1Bj sub_1CE2+20j + call word ptr es:2 + test ah, ah + jnz short loc_1D04 + dec di + jnz short loc_1CF3 + +loc_1CFF: ; CODE XREF: sub_1CE2+Fj + dec [bp+arg_2] + jnz short loc_1CF3 + +loc_1D04: ; CODE XREF: sub_1CE2+18j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 +sub_1CE2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1D12 proc far ; CODE XREF: sub_9A17:loc_9A85P + ; sub_A6A3:loc_A6B5P ... + mov ax, 4E35h + mul word ptr dword_DB02+2 + mov cx, ax + mov ax, 15Ah + mul word ptr dword_DB02 + add cx, ax + mov ax, 4E35h + mul word ptr dword_DB02 + add ax, 1 + adc dx, cx + mov word ptr dword_DB02, ax + mov ax, dx + mov word ptr dword_DB02+2, ax + and ah, 7Fh + retf +sub_1D12 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1D3C proc far ; CODE XREF: sub_B424+73P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_AE2 + jb short locret_1D7B + mov bx, ax + mov dx, 11B8h + 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_1D5F: ; CODE XREF: sub_1D3C+2Fj + mov al, [bx+11B8h] + shl al, 4 + or [bx+11B8h], al + dec bx + jns short loc_1D5F + pop bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov ax, 0 + jcxz short locret_1D7B + mov ax, 0FFF3h + stc + +locret_1D7B: ; CODE XREF: sub_1D3C+Fj sub_1D3C+39j + retf 4 +sub_1D3C endp + +; --------------------------------------------------------------------------- + db 4 dup(0), 1, 4 dup(0), 1, 2 dup(0), 2 dup(1), 4 dup(0) + db 1, 0, 1, 0, 1, 2 dup(0), 2 dup(1), 0, 3 dup(1), 4 dup(0) + db 2 dup(1), 2 dup(0), 1, 0, 1, 0, 3 dup(1), 0, 1, 2 dup(0) + db 3 dup(1), 0, 2 dup(1), 0, 7 dup(1), 2, 3 dup(0), 3 + db 3 dup(0), 2, 1, 2 dup(0), 3, 1, 2 dup(0), 2, 0, 1, 0 + db 3, 0, 1, 0, 2, 2 dup(1), 0, 3, 2 dup(1), 0, 2, 2 dup(0) + db 1, 3, 2 dup(0), 1, 2, 1, 0, 1, 3, 1, 0, 1, 2, 0, 2 dup(1) + db 3, 0, 2 dup(1), 2, 3 dup(1), 3, 3 dup(1), 0, 2, 2 dup(0) + db 1, 2, 3 dup(0), 3, 2 dup(0), 1, 3, 3 dup(0), 2, 1, 0 + db 1, 2, 1, 2 dup(0), 3, 1, 0, 1, 3, 1, 2 dup(0), 2, 0 + db 2 dup(1), 2, 0, 1, 0, 3, 0, 2 dup(1), 3, 0, 1, 0, 2 + db 3 dup(1), 2, 2 dup(1), 0, 3, 3 dup(1), 3, 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 2 dup(0), 2, 3, 2 dup(0) + db 2 dup(3), 2 dup(0), 2 dup(2), 1, 0, 3, 2, 1, 0, 2, 3 + db 1, 0, 2 dup(3), 1, 0, 2 dup(2), 0, 1, 3, 2, 0, 1, 2 + db 3, 0, 1, 2 dup(3), 0, 1, 2 dup(2), 2 dup(1), 3, 2, 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(3), 2 dup(1), 2 dup(0), 2, 0 + db 1, 0, 2, 2 dup(0), 1, 2, 0, 2 dup(1), 2, 3 dup(0), 3 + db 0, 1, 0, 3, 2 dup(0), 1, 3, 0, 2 dup(1), 3, 3 dup(0) + db 2, 2 dup(1), 0, 2, 1, 0, 1, 2, 3 dup(1), 2, 1, 2 dup(0) + db 3, 2 dup(1), 0, 3, 1, 0, 1, 3, 3 dup(1), 3, 1, 2, 0 + db 2, 0, 3, 0, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 2, 0, 3, 0 + db 3, 0, 3, 0, 2, 1, 3, 0, 3, 1, 3, 0, 2, 0, 2, 1, 3, 0 + db 2, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 0, 3, 1, 3, 0, 3, 1 + db 2, 1, 3, 1, 3, 1, 3, 1, 0, 2 dup(2), 0, 1, 2 dup(2) + db 2 dup(0), 3, 2, 0, 1, 3, 2, 2 dup(0), 2, 3, 0, 1, 2 + db 3, 2 dup(0), 2 dup(3), 0, 1, 2 dup(3), 2 dup(0), 2 dup(2) + db 2 dup(1), 2 dup(2), 1, 0, 3, 2, 2 dup(1), 3, 2, 1, 0 + db 2, 3, 2 dup(1), 2, 3, 1, 0, 2 dup(3), 2 dup(1), 2 dup(3) + db 1, 3 dup(2), 0, 3, 2 dup(2), 0, 2, 3, 2, 0, 2 dup(3) + db 2, 0, 2 dup(2), 3, 0, 3, 2, 3, 0, 2, 2 dup(3), 0, 3 dup(3) + db 0, 3 dup(2), 1, 3, 2 dup(2), 1, 2, 3, 2, 1, 2 dup(3) + db 2, 1, 2 dup(2), 3, 1, 3, 2, 3, 1, 2, 2 dup(3), 1, 3 dup(3) + db 1, 3 dup(0), 2, 1, 2 dup(0), 2, 0, 1, 0, 2, 2 dup(1) + db 0, 2, 2 dup(0), 1, 2, 1, 0, 1, 2, 0, 2 dup(1), 2, 3 dup(1) + db 2, 3 dup(0), 3, 1, 2 dup(0), 3, 0, 1, 0, 3, 2 dup(1) + db 0, 3, 2 dup(0), 1, 3, 1, 0, 1, 3, 0, 2 dup(1), 3, 3 dup(1) + db 3, 2, 2 dup(0), 2, 3, 2 dup(0), 2 dup(2), 1, 0, 2, 3 + db 1, 0, 2 dup(2), 0, 1, 2, 3, 0, 1, 2 dup(2), 2 dup(1) + db 2, 3, 2 dup(1), 2 dup(2), 2 dup(0), 2 dup(3), 2 dup(0) + db 3, 2, 1, 0, 2 dup(3), 1, 0, 3, 2, 0, 1, 2 dup(3), 0 + db 1, 3, 2, 2 dup(1), 2 dup(3), 2 dup(1), 3, 0, 2, 0, 2 + db 1, 2, 0, 2, 0, 3, 0, 2, 1, 3, 0, 2, 0, 2, 1, 2, 1, 2 + db 1, 2, 0, 3, 1, 2, 1, 3, 1, 2 + db 0, 2, 0, 3, 1, 2, 0, 3, 0, 3, 0, 3, 1, 3, 0, 3, 0, 2 + db 1, 3, 1, 2, 1, 3, 0, 3, 1, 3, 1, 3, 1, 3, 2 dup(2) + db 0, 2, 3, 2, 0, 2 dup(2), 3, 0, 2, 2 dup(3), 0, 3 dup(2) + db 1, 2, 3, 2, 1, 2 dup(2), 3, 1, 2, 2 dup(3), 1, 3 dup(2) + db 0, 2 dup(3), 2, 0, 3, 2, 3, 0, 3 dup(3), 0, 3, 2 dup(2) + db 1, 2 dup(3), 2, 1, 3, 2, 3, 1, 3 dup(3), 1, 3, 2 dup(0) + db 2 dup(2), 1, 0, 2 dup(2), 0, 1, 2 dup(2), 2 dup(1) + db 2 dup(2), 2 dup(0), 3, 2, 1, 0, 3, 2, 0, 1, 3, 2, 2 dup(1) + db 3, 2, 2 dup(0), 2, 3, 1, 0, 2, 3, 0, 1, 2, 3, 2 dup(1) + db 2, 3, 2 dup(0), 2 dup(3), 1, 0, 2 dup(3), 0, 1, 2 dup(3) + db 2 dup(1), 2 dup(3), 2, 0, 2 dup(2), 3, 0, 3 dup(2) + db 1, 2 dup(2), 3, 1, 3 dup(2), 0, 3, 2, 3, 0, 3, 2 dup(2) + db 1, 3, 2, 3, 1, 3, 2 dup(2), 0, 2, 2 dup(3), 0, 2, 3 + db 2, 1, 2, 2 dup(3), 1, 2, 3, 2, 0, 3 dup(3), 0, 2 dup(3) + db 2, 1, 3 dup(3), 1, 2 dup(3), 0, 3 dup(2), 1, 3 dup(2) + db 0, 3, 2 dup(2), 1, 3, 2 dup(2), 0, 2, 3, 2, 1, 2, 3 + db 2, 0, 2 dup(3), 2, 1, 2 dup(3), 2, 0, 2 dup(2), 3, 1 + db 2 dup(2), 3, 0, 3, 2, 3, 1, 3, 2, 3, 0, 2, 2 dup(3) + db 1, 2, 2 dup(3), 0, 3 dup(3), 1, 3 dup(3), 4 dup(2) + db 3, 4 dup(2), 3, 2 dup(2), 2 dup(3), 4 dup(2), 3, 2 + db 3, 2, 3, 2 dup(2), 2 dup(3), 2, 3 dup(3), 4 dup(2) + db 2 dup(3), 2 dup(2), 3, 2, 3, 2, 3 dup(3), 2, 3, 2 dup(2) + db 3 dup(3), 2, 2 dup(3), 2, 7 dup(3) + +; =============== S U B R O U T I N E ======================================= + + +sub_217E proc far ; CODE XREF: sub_412+57p sub_F36+81p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_E9E8, bx + pop bx + retf 2 +sub_217E endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_2194 + +loc_218E: ; CODE XREF: sub_2194+5j + push cs + call near ptr sub_24A2 + jb short loc_21C3 +; END OF FUNCTION CHUNK FOR sub_2194 + +; =============== S U B R O U T I N E ======================================= + + +sub_2194 proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 218E SIZE 00000006 BYTES + + cmp word_DD9E, 0 + jz short loc_218E + 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_E9E8 + add bx, ax + jb short loc_21C2 + cmp word_E9E4, bx + jb short loc_21C2 + mov word_E9E8, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_21C2: ; CODE XREF: sub_2194+1Ej sub_2194+24j + pop bx + +loc_21C3: ; CODE XREF: sub_2194-2j + mov ax, 0FFF8h + retf 2 +sub_2194 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_21CA proc near ; CODE XREF: sub_2DB8+1Ep sub_2DE2+2p + mov dx, 188h + +loc_21CD: ; CODE XREF: sub_21CA+6j + in al, dx + test al, 80h + jnz short loc_21CD + mov al, bh + out dx, al + +loc_21D5: ; CODE XREF: sub_21CA+Ej + in al, dx + test al, 80h + jnz short loc_21D5 + inc dx + inc dx + mov al, bl + out dx, al + retn +sub_21CA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_21E0 proc near ; CODE XREF: sub_2DB8+15p + mov dx, 188h + +loc_21E3: ; CODE XREF: sub_21E0+6j + in al, dx + test al, 80h + jnz short loc_21E3 + mov al, bh + out dx, al + +loc_21EB: ; CODE XREF: sub_21E0+Ej + in al, dx + test al, 80h + jnz short loc_21EB + inc dx + inc dx + in al, dx + retn +sub_21E0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_21F4 proc far ; CODE XREF: sub_9BDF+14P sub_A0E0+BP ... + 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_21F4 endp + +; --------------------------------------------------------------------------- + nop + xor ax, ax + mov es, ax + assume es:seg000 + mov al, byte ptr es:loc_712 + inc ax + retf +; --------------------------------------------------------------------------- + xor ax, ax + mov es, ax + mov al, byte ptr es:loc_70F+2 + retf +; --------------------------------------------------------------------------- + nop + mov dx, 336Ch + jmp short loc_223E +; --------------------------------------------------------------------------- + nop + mov dx, 3368h + jmp short loc_223E +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2226 proc far ; CODE XREF: sub_C421+4DP + mov dx, 3568h + jmp short loc_223E +sub_2226 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_222C proc far ; CODE XREF: sub_BEB8+12P + mov dx, 356Ch + jmp short loc_223E +sub_222C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2232 proc far ; CODE XREF: sub_C421+48P + mov dx, 3168h + jmp short loc_223E +sub_2232 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2238 proc far ; CODE XREF: sub_BEB8+DP + mov dx, 316Ch + jmp short loc_223E +; --------------------------------------------------------------------------- + nop + +loc_223E: ; CODE XREF: seg000:221Dj seg000:2223j ... + 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_2238 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2254 proc far ; CODE XREF: sub_9F57+2CP + +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_DD88 + mov es, di + assume es:nothing + 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_22B3 + +loc_2288: ; CODE XREF: sub_2254+5Dj + xor ah, ah + cmp al, dl + jbe short loc_22AD + cmp al, dh + jbe short loc_2296 + cmp al, bl + jbe short loc_22AD + +loc_2296: ; CODE XREF: sub_2254+3Cj + mov ah, al + lodsb + shl ah, 1 + cmp al, dh + jnb short loc_22A3 + cmp al, dl + adc ax, bx + +loc_22A3: ; CODE XREF: sub_2254+49j + sbb al, bh + and ax, 7F7Fh + xchg ah, al + stosw + or al, dl + +loc_22AD: ; CODE XREF: sub_2254+38j sub_2254+40j + stosw + lodsb + or al, al + jnz short loc_2288 + +loc_22B3: ; CODE XREF: sub_2254+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_2254 endp + +; --------------------------------------------------------------------------- +dword_22C6 dd 0 ; DATA XREF: sub_22CA+5Ew sub_2334+1r ... + +; =============== S U B R O U T I N E ======================================= + + +sub_22CA proc far ; CODE XREF: sub_C421+3EP + xor ax, ax + push ax + push ax + push cs + call near ptr sub_11DC + and ax, 0Ch + cmp ax, 0Ch + mov word_DD92, 33FFh + jz short loc_22E6 + mov word_DD92, 0 + +loc_22E6: ; CODE XREF: sub_22CA+14j + xor ax, ax + mov word_E9D8, ax + mov word_E9DA, ax + cmp byte_DD94, al + jnz short locret_2333 + mov al, 0Ah + push ax + push cs + mov ax, offset sub_233E + push ax + nop + push cs + call near ptr sub_6B2 + mov word_E9DC, ax + mov word_E9DE, 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_DD94, ah + mov ax, 18h + push ax + push cs + mov ax, offset sub_2334 + push ax + nop + push cs + call near ptr sub_6B2 + mov word ptr cs:dword_22C6, ax + mov word ptr cs:dword_22C6+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_2333: ; CODE XREF: sub_22CA+28j + retf +sub_22CA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2334 proc far ; DATA XREF: sub_22CA+55o + pushf + call cs:dword_22C6 + out 64h, al ; AT Keyboard controller 8042. + iret +sub_2334 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_233E proc far ; DATA XREF: sub_22CA+2Eo + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_DD92 + add word_E9E0, ax + jb short loc_236F + inc word_E9D8 + inc word_E9DA + cmp word_DD90, 0 + jz short loc_236F + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_DD8E + pop es + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_236F: ; CODE XREF: sub_233E+Ej sub_233E+1Dj + pop ds + mov al, 20h ; ' ' + out 0, al + out 64h, al ; AT Keyboard controller 8042. + pop ax + iret +sub_233E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2378 proc far ; CODE XREF: sub_BFC2+28P + cmp byte_DD94, 0 + jz short locret_23BE + mov ax, 18h + push ax + push word ptr cs:dword_22C6+2 + push word ptr cs:dword_22C6 + nop + push cs + call near ptr sub_6B2 + 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_E9DE + push word_E9DC + nop + push cs + call near ptr sub_6B2 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_DD94 + 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_DD94, al + +locret_23BE: ; CODE XREF: sub_2378+5j + retf +sub_2378 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_23C0 proc far ; CODE XREF: seg000:0546p seg000:0557p ... + cmp byte_DD94, 0 + jnz short loc_23DC + +loc_23C7: ; CODE XREF: sub_23C0+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_23C7 + +loc_23D1: ; CODE XREF: sub_23C0+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_23D1 + retf +; --------------------------------------------------------------------------- + +loc_23DC: ; CODE XREF: sub_23C0+5j + mov ax, word_E9D8 + +loc_23DF: ; CODE XREF: sub_23C0+23j + cmp ax, word_E9D8 + jz short loc_23DF + retf +sub_23C0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_23E6 proc far ; CODE XREF: sub_B908+8FP + ; sub_B908+116P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_DAC4, 0C8h ; 'È' + push cs + call near ptr sub_23C0 + +loc_23F8: ; CODE XREF: sub_23E6+2Ej + push cs + call loc_1AA4 + mov di, si + cmp di, 0 + jle short loc_240A + +loc_2403: ; CODE XREF: sub_23E6+22j + push cs + call near ptr sub_23C0 + dec di + jnz short loc_2403 + +loc_240A: ; CODE XREF: sub_23E6+1Bj + sub word_DAC4, 6 + cmp word_DAC4, 64h ; 'd' + jg short loc_23F8 + mov word_DAC4, 64h ; 'd' + push cs + call loc_1AA4 + pop di + pop si + retf 2 +sub_23E6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2426 proc far ; CODE XREF: sub_1334+E7p + ; sub_1334+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_2452 + rcr bx, 1 + push bx + push cs + call near ptr sub_24DE + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_2452: ; CODE XREF: sub_2426+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_2426 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_245A proc far ; CODE XREF: sub_C421+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_2475 + push ax + push bx + push cs + call near ptr sub_247C + xor ax, ax + mov word_DDA0, 1 + +loc_2475: ; CODE XREF: sub_245A+Bj + neg ax + pop bx + retf 2 +sub_245A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_247C proc far ; CODE XREF: sub_245A+10p sub_24A2+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_DD9E, ax + mov word_E9E8, ax + add ax, [bp+arg_0] + mov word_E9E2, ax + mov word_E9E4, ax + mov word_E9E6, 0 + mov word_DDA0, 0 + clc + pop bp + retf 4 +sub_247C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24A2 proc far ; CODE XREF: sub_2194-5p sub_24DE+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_DDA4 + cmp bx, ax + jbe short loc_24B3 + sub bx, ax + +loc_24B3: ; CODE XREF: sub_24A2+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_24C7 + push ax + push ax + push bx + push cs + call near ptr sub_247C + mov word_DDA0, 1 + pop ax + +loc_24C7: ; CODE XREF: sub_24A2+15j + pop bx + retf +sub_24A2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_24CA proc far ; CODE XREF: sub_574+11p sub_26DE+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_24E5 +sub_24CA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24DE proc far ; CODE XREF: sub_EF6+Ep sub_2426+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_24E5: ; CODE XREF: sub_24CA+12j + cmp word_DD9E, 0 + jnz short loc_24F0 + push cs + call near ptr sub_24A2 + +loc_24F0: ; CODE XREF: sub_24DE+Cj + push cx + push es + test bx, bx + jz short loc_2551 + mov ax, word_E9E2 + sub ax, word_E9E8 + cmp bx, ax + jnb short loc_2551 + inc bx + mov ax, word_E9E6 + test ax, ax + jz short loc_252D + mov cx, word_E9E2 + +loc_250D: ; CODE XREF: sub_24DE+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_2529 + mov cx, es + add cx, bx + jb short loc_2525 + cmp cx, ax + jbe short loc_255E + +loc_2525: ; CODE XREF: sub_24DE+41j + mov cx, word_E9E2 + +loc_2529: ; CODE XREF: sub_24DE+3Bj + cmp ax, cx + jnz short loc_250D + +loc_252D: ; CODE XREF: sub_24DE+29j + mov ax, word_E9E4 + mov cx, ax + sub ax, bx + jb short loc_2551 + cmp ax, word_E9E8 + jb short loc_2551 + mov word_E9E4, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_25B7 +; --------------------------------------------------------------------------- + +loc_2551: ; CODE XREF: sub_24DE+16j sub_24DE+21j ... + mov ax, 0 + mov word_DDA2, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_255E: ; CODE XREF: sub_24DE+45j + sub ax, cx + cmp ax, 1 + jbe short loc_258E + 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_E9E6 + jnz short loc_25B7 + mov word_E9E6, cx + jmp short loc_25B7 +; --------------------------------------------------------------------------- + +loc_258E: ; CODE XREF: sub_24DE+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_E9E6 + jnz short loc_25B7 + mov ax, word_E9E2 + mov cx, bx + push bx + +loc_25A3: ; CODE XREF: sub_24DE+D0j + les cx, es:0 + jcxz short loc_25B2 + mov bx, es + cmp bx, ax + jb short loc_25A3 + xor bx, bx + +loc_25B2: ; CODE XREF: sub_24DE+CAj + mov word_E9E6, bx + pop bx + +loc_25B7: ; CODE XREF: sub_24DE+71j sub_24DE+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_DDA2 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_25C8: ; CODE XREF: sub_25CE+12j sub_25CE+1Aj + pop es + pop cx + pop bx + retf 2 +sub_24DE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_25CE proc far ; CODE XREF: sub_472+11p sub_574+45p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_E9E4 + jz short loc_2632 + jb short loc_25C8 + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_25C8 + mov es:[bx], bx + mov cx, word_E9E6 + mov ax, es + mov word_E9E6, ax + jcxz short loc_266F + cmp ax, cx + jb short loc_2601 + mov ax, cx + mov word_E9E6, ax + +loc_2601: ; CODE XREF: sub_25CE+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_E9E2 + jnz short loc_260F + mov ax, es + +loc_260F: ; CODE XREF: sub_25CE+3Dj + push ds + +loc_2610: ; CODE XREF: sub_25CE+4Dj sub_25CE+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_262F + cmp [bx], bx + jnz short loc_2610 + +loc_261D: ; CODE XREF: sub_25CE+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_2610 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_261D + +loc_262F: ; CODE XREF: sub_25CE+49j + pop ds + jmp short loc_266F +; --------------------------------------------------------------------------- + +loc_2632: ; CODE XREF: sub_25CE+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_E9E4, ax + cmp ax, word_E9E2 + jz short loc_266F + mov es, ax + cmp es:[bx], bx + jnz short loc_266F + mov ax, es:[bx+2] + mov word_E9E4, ax + mov cx, word_E9E2 + cmp ax, cx + jz short loc_266B + jmp short loc_2662 +; --------------------------------------------------------------------------- + nop + +loc_265A: ; CODE XREF: sub_25CE+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_266B + +loc_2662: ; CODE XREF: sub_25CE+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_265A + mov bx, es + +loc_266B: ; CODE XREF: sub_25CE+87j sub_25CE+92j + mov word_E9E6, bx + +loc_266F: ; CODE XREF: sub_25CE+28j sub_25CE+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_25CE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2676 proc far ; CODE XREF: sub_BFC2+2DP + cmp word_DD9E, 0 + jz short loc_2691 + mov ax, word_DD9E + mov es, ax + xor ax, ax + cmp word_DDA0, ax + mov word_DD9E, ax + jz short loc_2691 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2691: ; CODE XREF: sub_2676+5j sub_2676+15j + mov ax, 1 + retf +sub_2676 endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_269A proc far ; CODE XREF: sub_9E7F+3CP sub_AC06+14P ... + cmp word_DDC6, 0 + jz short locret_26C9 + push word_DDC6 + push cs + call near ptr sub_25CE + mov word_DDC6, 0 + jmp short loc_26B7 +; --------------------------------------------------------------------------- + +loc_26B1: ; CODE XREF: sub_269A+22j + dec ax + push ax + push cs + call near ptr sub_2888 + +loc_26B7: ; CODE XREF: sub_269A+15j + mov ax, word_DDC8 + test ax, ax + jnz short loc_26B1 + cmp word_DDCA, 0 + jz short locret_26C9 + call word_DDCA + +locret_26C9: ; CODE XREF: sub_269A+5j sub_269A+29j + retf +sub_269A endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_26DE + +loc_26CA: ; CODE XREF: sub_26DE+32j + push ax + push es + push cs + call near ptr sub_25CE + pop ax + jmp short loc_26D7 +; END OF FUNCTION CHUNK FOR sub_26DE +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_26DE + +loc_26D4: ; CODE XREF: sub_26DE+24j + mov ax, 0FFF8h + +loc_26D7: ; CODE XREF: sub_26DE-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_26DE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_26DE proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 26CA SIZE 00000009 BYTES +; FUNCTION CHUNK AT 26D4 SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_DDC8 + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_DDA2, 4 + push ax + push cs + call near ptr sub_24CA + jb short loc_26D4 + mov es, ax + push word_DDC8 + push dx + push ax + push cs + call near ptr sub_278A + jb short loc_26CA + 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_2734 + rep movsb + jmp short loc_273A +; --------------------------------------------------------------------------- + nop + +loc_2734: ; CODE XREF: sub_26DE+4Fj sub_26DE+5Aj + lodsb + not al + stosb + loop loc_2734 + +loc_273A: ; CODE XREF: sub_26DE+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2742: ; CODE XREF: sub_26DE+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2742 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2752: ; CODE XREF: sub_26DE+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2752 + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_2762: ; CODE XREF: sub_26DE+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_2762 + test dl, dl + jz short loc_277E + mov ah, 4 + +loc_2770: ; CODE XREF: sub_26DE+9Ej + xor si, si + mov cx, bx + +loc_2774: ; CODE XREF: sub_26DE+9Aj + lodsb + and [di], al + inc di + loop loc_2774 + dec ah + jnz short loc_2770 + +loc_277E: ; CODE XREF: sub_26DE+8Ej + pop ds + mov ax, word_DDC8 + dec ax + pop di + pop si + pop bp + retf 8 +sub_26DE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_278A proc far ; CODE XREF: sub_26DE+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_27F9 + cmp word_DDC6, 0 + jnz short loc_27CA + mov word_DDA2, 4 + push 240h + push cs + call near ptr sub_24DE + mov word_DDC6, ax + mov ax, 0FFF8h + jb short loc_27F9 + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 15FAh + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_27CA: ; CODE XREF: sub_278A+17j + mov ax, bx + shl bx, 1 + cmp ax, word_DDC8 + jnb short loc_27E5 + cmp word ptr [bx+15FAh], 0 + jz short loc_27E9 + push word ptr [bx+11FAh] + push cs + call near ptr sub_25CE + jmp short loc_27E9 +; --------------------------------------------------------------------------- + +loc_27E5: ; CODE XREF: sub_278A+48j + inc ax + mov word_DDC8, ax + +loc_27E9: ; CODE XREF: sub_278A+4Fj sub_278A+59j + mov ax, [bp+arg_2] + mov [bx+15FAh], ax + mov ax, [bp+arg_0] + mov [bx+11FAh], ax + xor ax, ax + +loc_27F9: ; CODE XREF: sub_278A+10j sub_278A+2Cj + pop bx + pop bp + retf 6 +sub_278A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_27FE proc far ; CODE XREF: sub_ADE2+12P sub_B008+8P ... + +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_AE2 + jb short loc_2880 + mov bx, ax + mov cx, 5B6h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_2878 + mov al, byte_DDAB + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_2878 + xor si, si + mov ax, word_DDC2 + or ax, ax + jz short loc_2844 + 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_2844: ; CODE XREF: sub_27FE+37j + test byte_DDAB, 80h + jz short loc_2858 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_4C6 + pop cx + pop bx + jb short loc_2878 + +loc_2858: ; CODE XREF: sub_27FE+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_2878 + push bx + push cs + call near ptr sub_ACC + mov ax, word_DDB4 + sub ax, word_DDB2 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_2878: ; CODE XREF: sub_27FE+22j sub_27FE+2Ej ... + push ax + push bx + push cs + call near ptr sub_ACC + pop ax + stc + +loc_2880: ; CODE XREF: sub_27FE+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_27FE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2888 proc far ; CODE XREF: sub_269A+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_DDC8 + jnb short loc_28D0 + mov cx, bx + shl bx, 1 + mov ax, [bx+15FAh] + or ax, ax + jz short loc_28D0 + push word ptr [bx+11FAh] + push cs + call near ptr sub_25CE + mov [bx+11FAh], dx + mov [bx+15FAh], dx + inc cx + cmp cx, word_DDC8 + jnz short loc_28C8 + +loc_28B9: ; CODE XREF: sub_2888+3Dj + dec word_DDC8 + jz short loc_28C8 + dec bx + dec bx + mov cx, [bx+11FAh] + jcxz short loc_28B9 + nop + +loc_28C8: ; CODE XREF: sub_2888+2Fj sub_2888+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_28D0: ; CODE XREF: sub_2888+Cj sub_2888+18j + stc + mov ax, 0FFE1h + retf 2 +sub_2888 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_28D8 proc far ; CODE XREF: sub_9E16+3CP sub_9E16+51P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push ds + push si + push di + mov bx, [bp+arg_0] + shl bx, 1 + mov dx, [bx+15FAh] + mov cx, [bp+arg_4] + mov bp, [bp+arg_2] + mov ax, bp + shl ax, 2 + add bp, ax + shl bp, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add bp, ax + mov si, cx + mov ch, dh + shr ch, 1 + mov al, dl + mov ah, [si+5A6h] + mov cs:word_2A85, ax + test bp, 1 + jnz short loc_2948 + test dh, 1 + jnz short loc_2932 + mov cs:byte_29E5, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_29E3, al + mov cs:word_2A88, 0FF3Eh + jmp short loc_297A +; --------------------------------------------------------------------------- + +loc_2932: ; CODE XREF: sub_28D8+42j + mov cs:byte_2A13, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2A11, al + mov cs:word_2A88, 0FF62h + jmp short loc_297A +; --------------------------------------------------------------------------- + +loc_2948: ; CODE XREF: sub_28D8+3Dj + dec bp + test dh, 1 + jnz short loc_2966 + dec ch + mov cs:byte_2A4A, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_2A48, al + mov cs:word_2A88, 0FF90h + jmp short loc_297A +; --------------------------------------------------------------------------- + +loc_2966: ; CODE XREF: sub_28D8+74j + mov cs:byte_2A7B, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_2A79, al + mov cs:word_2A88, 0FFC6h + +loc_297A: ; CODE XREF: sub_28D8+58j sub_28D8+6Ej ... + mov ds, word ptr [bx+11FAh] + 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_2A82 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2A82 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2A82 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2A82 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2A82 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_28D8 endp + +; --------------------------------------------------------------------------- + db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_29E3 db 50h ; DATA XREF: sub_28D8+4Dw + db 0B5h +byte_29E5 db 11h ; DATA XREF: sub_28D8+44w + db 0FEh, 0CBh, 75h, 0E0h, 0C3h, 90h, 32h, 0D2h, 0Ah, 0EDh + db 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh, 4Fh, 8Ah + db 0D5h, 83h, 0C7h +byte_2A11 db 50h ; DATA XREF: sub_28D8+63w + db 0B5h +byte_2A13 db 11h ; DATA XREF: sub_28D8:loc_2932w + 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_2A48 db 50h ; DATA XREF: sub_28D8+81w + db 0B5h +byte_2A4A db 11h ; DATA XREF: sub_28D8+78w + db 0FEh, 0CBh, 75h, 0CBh, 0C3h, 0ACh, 32h, 0E4h, 0D3h + db 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh, 0Ah, 0EDh + db 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 22h, 0C7h, 32h + db 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h, 0EEh + db 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h +byte_2A79 db 50h ; DATA XREF: sub_28D8+97w + db 0B5h +byte_2A7B db 11h ; DATA XREF: sub_28D8:loc_2966w + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2A82: ; CODE XREF: sub_28D8+BBp sub_28D8+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2A85 dw 1234h ; DATA XREF: sub_28D8+35w + db 0E9h +word_2A88 dw 0FF3Eh ; DATA XREF: sub_28D8+51w sub_28D8+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2A8A proc far ; CODE XREF: sub_2AC6+4p sub_2B3C+9p + push si + push di + mov ah, 52h + int 21h ; DOS - 2+ internal - GET LIST OF LISTS + ; Return: ES:BX -> DOS list of lists + cld + mov bx, es:[bx-2] + +loc_2A95: ; CODE XREF: sub_2A8A+2Fj + mov es, bx + assume es:nothing + inc bx + mov ax, es:1 + or ax, ax + jz short loc_2AAD + mov di, 10h + mov cx, 0Ah + mov si, 5DEh + repe cmpsb + jz short loc_2ABE + +loc_2AAD: ; CODE XREF: sub_2A8A+14j + mov ax, es:3 + add bx, ax + mov al, es:0 + cmp al, 4Dh ; 'M' + jz short loc_2A95 + mov bx, 0 + +loc_2ABE: ; CODE XREF: sub_2A8A+21j + mov ax, bx + mov word_DAF8, ax + pop di + pop si + retf +sub_2A8A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2AC6 proc far ; CODE XREF: _main+DP + push si + push di + nop + push cs + call near ptr sub_2A8A + or ax, ax + mov ax, 2 + jnz short loc_2B38 + mov ax, 5800h + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: get allocation strategy + mov dx, ax + mov ax, 5801h + mov bx, 1 + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: set allocation strategy + mov ah, 48h ; 'H' + mov bx, 4 + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + mov cx, 0 + jb short loc_2B2F + mov bx, cs + cmp bx, ax + jnb short loc_2B0A + mov es, ax + assume es:nothing + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + mov ax, 5801h + mov bx, 2 + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: set allocation strategy + mov ah, 48h ; 'H' + mov bx, 4 + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + +loc_2B0A: ; CODE XREF: sub_2AC6+2Dj + mov cx, ax + mov word_DAF8, ax + dec cx + mov es, cx + assume es:nothing + mov ax, 0FFFFh + mov es:1, ax + inc cx + mov es, cx + assume es:nothing + cld + xor di, di + mov si, 5DEh + mov cx, 0Ah + rep movsb + xor ax, ax + stosw + stosw + stosw + mov cx, 1 + +loc_2B2F: ; CODE XREF: sub_2AC6+27j + mov ax, 5801h + mov bx, dx + int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY + ; AL = function code: set allocation strategy + mov ax, cx + +loc_2B38: ; CODE XREF: sub_2AC6+Cj + pop di + pop si + retf +sub_2AC6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2B3C proc far ; CODE XREF: _main+100P + mov ax, word_DAF8 + or ax, ax + jnz short loc_2B4C + nop + push cs + call near ptr sub_2A8A + or ax, ax + jnz short locret_2B58 + +loc_2B4C: ; CODE XREF: sub_2B3C+5j + mov es, ax + assume es:nothing + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + mov word_DAF8, 0 + +locret_2B58: ; CODE XREF: sub_2B3C+Ej + retf +sub_2B3C endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_2B5A dd 0 ; DATA XREF: sub_2B60+4r sub_2B60+71w ... +byte_2B5E db 0 ; DATA XREF: seg000:2C54r seg000:2C6Bw ... + db 90h ; + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2B60 proc far ; CODE XREF: sub_C421+60P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_2B5A + or ax, word ptr cs:dword_2B5A+2 + jz short loc_2B72 + jmp loc_2BF3 +; --------------------------------------------------------------------------- + +loc_2B72: ; CODE XREF: sub_2B60+Dj + push di + push si + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + push cs + call near ptr sub_9A8 + push 10h + push cs + call near ptr sub_24CA + mov di, ax + push ax + push 0 + push 10h + push cs + call near ptr sub_8F4 + mov ax, di + mov es, ax + mov di, es:0 + mov si, es:6 + push ax + push cs + call near ptr sub_25CE + push di + push cs + call near ptr sub_24CA + mov word_F290, ax + push ax + push 0 + push di + push cs + call near ptr sub_8F4 + push cs + call near ptr sub_888 + mov cx, di + mov ax, word_F290 + mov es, ax + mov ax, si + xor bx, bx + +loc_2BC1: ; CODE XREF: sub_2B60+68j + xor es:[bx], al + sub al, es:[bx] + inc bx + loop loc_2BC1 + pop si + pop di + mov ax, 3521h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov word ptr cs:dword_2B5A, bx + mov word ptr cs:dword_2B5A+2, es + mov word_F28C, 0 + mov word_F28E, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 2C54h + 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_2BF3: ; CODE XREF: sub_2B60+Fj + push si + push di + push ds + mov cx, 0FFFFh + mov al, 0 + les di, [bp+arg_0] + repne scasb + not cx + sub di, cx + mov si, di + mov di, 1A1Ch + 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_2B60 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2C1C proc far ; CODE XREF: sub_BFC2+3P + mov ax, word ptr cs:dword_2B5A + or ax, word ptr cs:dword_2B5A+2 + jz short locret_2C53 + push ds + lds dx, cs:dword_2B5A + 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_2B5A, ax + mov word ptr cs:dword_2B5A+2, ax + cmp word_F28C, ax + jz short locret_2C53 + push word_F28C + push cs + call near ptr sub_1BAE + push word_F290 + push cs + call near ptr sub_25CE + +locret_2C53: ; CODE XREF: sub_2C1C+9j sub_2C1C+25j + retf +sub_2C1C endp + +; --------------------------------------------------------------------------- + cmp cs:byte_2B5E, 0 + jz short loc_2C61 + jmp cs:dword_2B5A +; --------------------------------------------------------------------------- + +loc_2C61: ; CODE XREF: seg000:2C5Aj + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_2B5E + push word ptr [bp+18h] + popf + mov cs:byte_2CB8, ah + mov si, 2C88h + +loc_2C7C: ; CODE XREF: seg000:2C82j + add si, 4 + cmp ah, cs:[si] + jnz short loc_2C7C + mov di, word_F28E + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 0BCh, 2Ch, 3Eh, 0, 0F1h, 2Ch, 3Fh, 0, 0Fh, 2Dh + db 42h, 0, 23h, 2Dh, 46h, 0, 84h, 2Dh, 40h, 0, 88h, 2Dh + db 45h, 0, 88h, 2Dh, 4Ch, 0, 66h, 2Dh, 57h, 0, 88h, 2Dh + db 5Ch, 0, 88h, 2Dh, 44h, 0, 72h, 2Dh +byte_2CB8 db 0 ; DATA XREF: seg000:2C74w + db 0 +; --------------------------------------------------------------------------- + mov word ptr [di], gs + test al, 0Fh + jz short loc_2CC3 + jmp loc_2D8C +; --------------------------------------------------------------------------- + +loc_2CC3: ; CODE XREF: seg000:2CBEj + or di, di + js short loc_2CCA + jmp loc_2D8C +; --------------------------------------------------------------------------- + +loc_2CCA: ; CODE XREF: seg000:2CC5j + push ds + push offset unk_F20C + push word ptr [bp+2] + push dx + push cs + call near ptr sub_2EF2 + or ax, ax + jnz short loc_2CDD + jmp loc_2D8C +; --------------------------------------------------------------------------- + +loc_2CDD: ; CODE XREF: seg000:2CD8j + mov word_F28C, ax + mov es, ax + mov es, word ptr es:0 + mov ax, es:0 + mov word_F28E, ax + jmp loc_2DA7 +; --------------------------------------------------------------------------- + cmp bx, di + jz short loc_2CF8 + jmp loc_2D8C +; --------------------------------------------------------------------------- + +loc_2CF8: ; CODE XREF: seg000:2CF3j + push word_F28C + push cs + call near ptr sub_1BAE + mov word_F28C, 0 + mov word_F28E, 0FFFFh + jmp loc_2DA7 +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_2D8C + push word ptr [bp+2] + push dx + push cx + push word_F28C + push cs + call near ptr sub_1C78 + jmp loc_2DA7 +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_2D8C + or cx, cx + jl short loc_2D9E + cmp al, 1 + jz short loc_2D57 + jl short loc_2D4B + mov es, word_F28C + mov dx, es:16h + mov cx, es:18h + sub dx, es:12h + sbb cx, es:14h + jmp short loc_2D57 +; --------------------------------------------------------------------------- + +loc_2D4B: ; CODE XREF: seg000:2D2Fj + push cx + push dx + push word_F28C + push cs + call near ptr sub_1CA6 + pop dx + pop cx + +loc_2D57: ; CODE XREF: seg000:2D2Dj seg000:2D49j + push word_F28C + push cx + push dx + push cs + call near ptr sub_1CE2 + mov [bp+0Eh], dx + jmp short loc_2DA7 +; --------------------------------------------------------------------------- + db 2Eh, 0C5h, 16h, 5Ah, 2Bh, 0B8h, 21h, 25h, 0CDh, 21h + db 0EBh, 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h + db 6, 82h, 2Dh, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh + db 74h, 16h, 3Bh, 0DFh, 74h, 12h +; --------------------------------------------------------------------------- + +loc_2D8C: ; CODE XREF: seg000:2CC0j seg000:2CC7j ... + dec cs:byte_2B5E + push word ptr [bp+18h] + popf + pop es + pop ds + popa + cli + jmp cs:dword_2B5A +; --------------------------------------------------------------------------- + +loc_2D9E: ; CODE XREF: seg000:2D29j + or byte ptr [bp+18h], 1 + mov ax, 1 + jmp short loc_2DAB +; --------------------------------------------------------------------------- + +loc_2DA7: ; CODE XREF: seg000:2CEEj seg000:2D0Cj ... + and byte ptr [bp+18h], 0FEh + +loc_2DAB: ; CODE XREF: seg000:2DA5j + mov [bp+12h], ax + dec cs:byte_2B5E + pop es + pop ds + popa + iret +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_2DB8 proc far ; CODE XREF: sub_C421+57P + mov cx, 100h + mov dx, 188h + +loc_2DBE: ; CODE XREF: sub_2DB8+Bj + in al, dx + inc al + jnz short loc_2DC9 + loop loc_2DBE + xor ax, ax + jmp short loc_2DDD +; --------------------------------------------------------------------------- + +loc_2DC9: ; CODE XREF: sub_2DB8+9j + pushf + cli + mov bh, 7 + call sub_21E0 + and al, 3Fh + or al, 80h + mov bl, al + call sub_21CA + popf + mov ax, 1 + +loc_2DDD: ; CODE XREF: sub_2DB8+Fj + mov word_DABC, ax + retf +sub_2DB8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2DE2 proc near ; CODE XREF: sub_2DF4+10p + mov bh, 0Fh + call sub_21CA + mov dx, 188h + mov al, 0Eh + out dx, al + inc dx + inc dx + in al, dx + not al + retn +sub_2DE2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2DF4 proc far ; CODE XREF: sub_C986+FP seg002:0B13P ... + push bp + push si + push di + xor bp, bp + cmp word_DABC, 0 + jz short loc_2E0D + pushf + cli + mov bl, 80h ; '€' + call sub_2DE2 + and ax, 3Fh + mov si, ax + popf + +loc_2E0D: ; CODE XREF: sub_2DF4+Aj + or word_E9A4, si + pop di + pop si + pop bp + retf +sub_2DF4 endp + +; --------------------------------------------------------------------------- + nop + xchg dx, bx + out dx, al + xchg dx, bx + in al, dx + not al + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_2E20: ; CODE XREF: sub_C6A+19Cp sub_C6A+20Fp + mov ax, word_DA7C + mov cs:word_2E62, ax + mov ax, word_E986 + mov cs:word_2ED3, ax + mov ax, word_E98E + mov cs:word_2EE1, ax + mov ax, word_E982 + mov cs:word_2ECB, ax + mov ax, word_E98A + mov cs:word_2EDD, ax + mov ax, word_DA6E + mov cs:word_2E67, ax + mov cs:word_2E91, ax + mov ax, word_DA70 + mov cs:word_2E81, ax + jmp short $+2 + push bp + mov cx, word_E980 + mov bp, word_E988 +; --------------------------------------------------------------------------- + db 81h, 0FEh +word_2E62 dw 1234h ; DATA XREF: seg000:2E23w + db 77h, 61h, 0B8h +word_2E67 dw 1234h ; DATA XREF: seg000:2E46w + db 2Bh, 0C8h, 8Bh, 0DDh, 2Bh, 0D8h, 85h, 0CBh, 78h, 54h + db 3Bh, 0CBh, 7Fh, 2, 87h, 0CBh, 80h, 0FFh, 80h, 1Bh, 0C0h + db 23h, 0D8h, 0BFh +word_2E81 dw 1234h ; DATA XREF: seg000:2E51w + db 2Bh, 0CFh, 1Bh, 0C0h, 23h, 0C8h, 3, 0CFh, 2Bh, 0CBh + db 7Ch, 38h, 81h, 0C3h +word_2E91 dw 1234h ; DATA XREF: seg000:2E4Aw + db 8Bh, 0FBh, 0C1h, 0EFh, 4, 0D1h, 0E7h, 3, 0FEh, 83h + db 0E3h, 0Fh, 3, 0CBh, 83h, 0E9h, 10h, 0D1h, 0E3h, 8Bh + db 87h, 8Eh, 2, 0F7h, 0D0h, 23h, 6, 0E8h, 5, 8Bh, 0D9h + db 83h, 0E3h, 0Fh, 0D1h, 0E3h, 0C1h, 0F9h, 4, 78h, 6, 0ABh + db 0A1h, 0E8h, 5, 0F3h, 0ABh, 23h, 87h, 90h, 2, 0ABh, 81h + db 6, 94h, 11h +word_2ECB dw 1234h ; DATA XREF: seg000:2E38w + db 8Bh, 0Eh, 90h, 11h, 81h, 0D1h +word_2ED3 dw 1234h ; DATA XREF: seg000:2E2Aw + db 89h, 0Eh, 90h, 11h, 81h, 6, 9Ch, 11h +word_2EDD dw 1234h ; DATA XREF: seg000:2E3Fw + db 81h, 0D5h +word_2EE1 dw 1234h ; DATA XREF: seg000:2E31w + db 83h, 0C6h, 50h, 4Ah, 78h, 3, 0E9h, 74h, 0FFh, 89h, 2Eh + db 98h, 11h, 5Dh, 0C3h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2EF2 proc far ; CODE XREF: seg000:2CD3p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + enter 0, 0 + push si + push di + mov word_DDA2, 7 + push 1Fh + push cs + call near ptr sub_24CA + jb loc_2FFE + mov si, ax + push [bp+arg_6] + push [bp+arg_4] + push cs + call near ptr sub_574 + or ax, ax + jz loc_2FF7 + mov es, si + mov es:0, ax + mov ax, word_F290 + mov fs, ax + xor ax, ax + mov di, ax + +loc_2F29: ; CODE XREF: sub_2EF2+57j + mov al, fs:[di] + mov bx, 2 + or al, al + jz short loc_2F4B + mov bx, 3 + add bx, di + push [bp+arg_2] + push [bp+arg_0] + push fs + push bx + call sub_300C + jnz short loc_2F4D + add di, 20h ; ' ' + jmp short loc_2F29 +; --------------------------------------------------------------------------- + +loc_2F4B: ; CODE XREF: sub_2EF2+3Fj + mov ax, bx + +loc_2F4D: ; CODE XREF: sub_2EF2+52j + mov es, si + mov ax, fs:[di+14h] + mov dx, fs:[di+16h] + mov es:0Eh, ax + mov es:10h, dx + push word ptr es:0 + push dx + push ax + push 0 + push cs + call near ptr sub_63A + mov ax, 1C26h + mov dl, fs:[di+2] + mov es, si + or dl, dl + jz short loc_2F82 + mov es:1Eh, dl + mov ax, offset sub_1C6A + +loc_2F82: ; CODE XREF: sub_2EF2+86j + mov es:4, ax + mov es, cx + mov ax, fs:[di] + mov es, si + cmp ax, 0F388h + jz short loc_2F9C + cmp ax, 9595h + jz short loc_2FA6 + mov ax, 5 + jmp short loc_2FEB +; --------------------------------------------------------------------------- + +loc_2F9C: ; CODE XREF: sub_2EF2+9Ej + mov ax, es:4 + mov es:2, ax + jmp short loc_2FBB +; --------------------------------------------------------------------------- + +loc_2FA6: ; CODE XREF: sub_2EF2+A3j + mov word ptr es:2, 1BD8h + mov word ptr es:1Ah, 0 + mov word ptr es:1Ch, 0FFFFh + +loc_2FBB: ; CODE XREF: sub_2EF2+B2j + mov bx, fs:[di+10h] + mov dx, fs:[di+12h] + xor ax, ax + mov es:6, bx + mov es:8, ax + mov es:16h, dx + mov es:18h, ax + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + mov ax, si + jmp short loc_3005 +; --------------------------------------------------------------------------- + +loc_2FEB: ; CODE XREF: sub_2EF2+A8j + mov word_DAFE, ax + push word ptr es:0 + push cs + call near ptr sub_472 + +loc_2FF7: ; CODE XREF: sub_2EF2+24j + push si + push cs + call near ptr sub_25CE + jmp short loc_3003 +; --------------------------------------------------------------------------- + +loc_2FFE: ; CODE XREF: sub_2EF2+12j + mov byte ptr word_DAFE, 3 + +loc_3003: ; CODE XREF: sub_2EF2+10Aj + xor ax, ax + +loc_3005: ; CODE XREF: sub_2EF2+F7j + pop di + pop si + leave + retf 8 +sub_2EF2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_300C proc near ; CODE XREF: sub_2EF2+4Fp + +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+arg_4] + lds si, [bp+arg_0] + +loc_3018: ; CODE XREF: sub_300C+2Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_3025 + sub al, 20h ; ' ' + +loc_3025: ; CODE XREF: sub_300C+15j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_3030 + sub ah, 20h ; ' ' + +loc_3030: ; CODE XREF: sub_300C+1Fj + cmp ah, al + jnz short loc_303A + add al, 61h ; 'a' + jnz short loc_3018 + jmp short loc_303C +; --------------------------------------------------------------------------- + +loc_303A: ; CODE XREF: sub_300C+26j + xor ax, ax + +loc_303C: ; CODE XREF: sub_300C+2Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 +sub_300C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_3044 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 0AF2h + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_3044 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_451C + pop cx + nop + push cs + call near ptr sub_3044 +_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_E302, 20h ; ' ' + jnz short loc_30C1 + mov ax, 1 + jmp short loc_30DD +; --------------------------------------------------------------------------- + +loc_30C1: ; CODE XREF: _atexit+Aj + mov bx, word_E302 + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+247Ch], dx + mov [bx+247Ah], ax + inc word_E302 + xor ax, ax + +loc_30DD: ; 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:3830p ... + +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_3E37 + 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_816B+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_96AE+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_315F + mov [bp+var_6], 0 + jmp short loc_314A +; --------------------------------------------------------------------------- + +loc_3131: ; 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_314A: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_315F + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3131 + +loc_315F: ; 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_317D + 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_317D: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_3187 + jmp loc_326E +; --------------------------------------------------------------------------- + +loc_3187: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_3F6A + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_31A1 + jmp loc_326E +; --------------------------------------------------------------------------- + +loc_31A1: ; 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_3217 + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3217 + jmp short loc_3200 +; --------------------------------------------------------------------------- + +loc_31D4: ; 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_3200: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3221 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_31D4 + jmp short loc_3221 +; --------------------------------------------------------------------------- + +loc_3217: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_3221: ; 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_3263 + 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_3263: ; 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_3272 +; --------------------------------------------------------------------------- + +loc_326E: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_3272: ; 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_4A41+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_3044+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_E33C + 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_32D4 proc far ; CODE XREF: sub_32D9+29P sub_32D9+43P ... + push si + push di + pop di + pop si + retf +sub_32D4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_32D9 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_3306 + jmp short loc_32F6 +; --------------------------------------------------------------------------- + +loc_32E6: ; CODE XREF: sub_32D9+22j + dec word_E302 + mov bx, word_E302 + mov cl, 2 + shl bx, cl + call dword ptr [bx+247Ah] + +loc_32F6: ; CODE XREF: sub_32D9+Bj + cmp word_E302, 0 + jnz short loc_32E6 + nop + push cs + call __cleanup + call off_E304 + +loc_3306: ; CODE XREF: sub_32D9+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_332D + cmp [bp+arg_4], 0 + jnz short loc_3324 + call off_E308 + call off_E30C + +loc_3324: ; CODE XREF: sub_32D9+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_332D: ; CODE XREF: sub_32D9+3Bj + pop di + pop si + pop bp + retn 6 +sub_32D9 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_32D9 + 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_3044+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_32D9 + 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_32D9 + 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_32D9 + pop di + pop si + retf +__c_exit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +SCOPY@ proc far ; CODE XREF: sub_99C3+10P + +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:44B4p + +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:43F9p seg000:44F6p ... + +interruptno = byte ptr 6 +isr = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov ah, 25h ; '%' + mov al, [bp+interruptno] + push ds + lds dx, [bp+isr] + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + pop ds + pop di + pop si + pop bp + retf +_setvect endp + +; --------------------------------------------------------------------------- + +N_LDIV@: + pop cx + push cs + push cx + +LDIV@: + xor cx, cx + jmp short loc_33DF + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_7FB8+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_33DF +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_33DF +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_33DF: ; CODE XREF: seg000:33C7j 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_33FE + or dx, dx + jz short loc_3463 + or bx, bx + jz short loc_3463 + +loc_33FE: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_3420 + or dx, dx + jns short loc_3412 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_3412: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_3420 + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_3420: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_342A: ; CODE XREF: N_LUDIV@:loc_3441j + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_3441 + ja short loc_343C + cmp si, bx + jb short loc_3441 + +loc_343C: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_3441: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_342A + pop bx + test bx, 2 + jz short loc_3450 + mov ax, si + mov dx, di + shr bx, 1 + +loc_3450: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_345D + neg dx + neg ax + sbb dx, 0 + +loc_345D: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_3463: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_346C + xchg ax, dx + +loc_346C: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_345D +N_LUDIV@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LXLSH@ proc far ; CODE XREF: __sbrk+Fp + pop bx + push cs + push bx + +LXLSH@: + cmp cl, 10h + jnb short loc_3488 + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_3488: ; CODE XREF: N_LXLSH@+6j + sub cl, 10h + xchg ax, dx + xor ax, ax + shl dx, cl + retf +N_LXLSH@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_PADD@ proc far ; CODE XREF: __sbrk+38p + pop es + push cs + push es + +F_PADD@: + or cx, cx + jge short loc_34A4 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_34D3 +; --------------------------------------------------------------------------- + +loc_34A4: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_34AC + add dx, 1000h + +loc_34AC: ; 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_34D3 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_34A4 +; --------------------------------------------------------------------------- + +loc_34D3: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_34DB + sub dx, 1000h + +loc_34DB: ; 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_3514 + cmp dx, 58h ; 'X' + jle short loc_3505 + +loc_3502: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_3505: ; CODE XREF: __IOERROR+Fj + mov word_E4CA, dx + mov bx, dx + mov al, [bx+0CDCh] + cbw + mov dx, ax + jmp short loc_3522 +; --------------------------------------------------------------------------- + +loc_3514: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_E7AC + jg short loc_3502 + mov word_E4CA, 0FFFFh + +loc_3522: ; CODE XREF: __IOERROR+21j + mov word_D86E, 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:38E5p seg000:391Ep + +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+0CB2h], 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_357C + jmp short loc_3581 +; --------------------------------------------------------------------------- + +loc_357C: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_3581: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_37B0 + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 85h, 35h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 3593h + 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, 368Bh + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0D36h + 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_E52A + 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, 37B0h + 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_E52E + mov ax, word_E52C + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_E52E, dx + mov word_E52C, 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_3657 + mov ax, [bp+arg_0] + jmp short loc_365A +; --------------------------------------------------------------------------- + +loc_3657: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_365A: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_3663 +; --------------------------------------------------------------------------- + +loc_365F: ; CODE XREF: operator new(uint)+43j + call dword ptr word_E52C + +loc_3663: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_3F6A + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_367F + mov ax, word_E52C + or ax, seg_E52E + jnz short loc_365F + +loc_367F: ; 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_37B0 + dw 0 + dd unk_E526 + dd byte_3776 + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0CEh, 36h + +; =============== 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:1168o + +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, 36E6h + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 0D40h + 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, 0D36h + 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_374F: ; DATA XREF: dseg:1186o + 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, 0D36h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_3776 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:36D8o + db 0Dh dup(0), 1, 0, 1, 0, 11h, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_37B0 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:3585o seg000:36CEo + db 0Dh dup(0), 2, 0, 2, 0, 0F2h, 37h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 3Fh, 38h + dw seg seg000 + dw 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_3839 + 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_3837 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_383B +; --------------------------------------------------------------------------- + +loc_3837: ; CODE XREF: seg000:3826j + jmp short loc_383B +; --------------------------------------------------------------------------- + +loc_3839: ; CODE XREF: seg000:37FDj + xor ax, ax + +loc_383B: ; CODE XREF: seg000:3835j + ; seg000:loc_3837j + 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, 0CEh, 58h + 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_7FB8+51p sub_7FB8+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_3880 + mul bx + +loc_3880: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_3887 + xchg ax, cx + mul si + add ax, cx + +loc_3887: ; CODE XREF: N_LXMUL@:loc_3880j + 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_38AE + cmp ax, bx + +locret_38AE: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_38D8 +; --------------------------------------------------------------------------- + +loc_38B6: ; CODE XREF: seg000:38DCj + mov bx, cx + add bx, bx + mov word ptr [bx+0CB2h], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+0B24h], 0FFh + add ax, 0B20h + mov bx, dx + mov [bx+0B32h], ax + inc cx + +loc_38D8: ; CODE XREF: seg000:38B4j + cmp cx, word_E4A0 + jb short loc_38B6 + mov al, byte_E314 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_38F3 + and word_E312, 0FDFFh + +loc_38F3: ; CODE XREF: seg000:38EBj + mov ax, 200h + push ax + test byte ptr word_E312+1, 2 + jz short loc_3903 + mov ax, 1 + jmp short loc_3905 +; --------------------------------------------------------------------------- + +loc_3903: ; CODE XREF: seg000:38FCj + xor ax, ax + +loc_3905: ; CODE XREF: seg000:3901j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0B20h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_E328 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_392C + and word_E326, 0FDFFh + +loc_392C: ; CODE XREF: seg000:3924j + mov ax, 200h + push ax + test byte ptr word_E326+1, 2 + jz short loc_393C + mov ax, 2 + jmp short loc_393E +; --------------------------------------------------------------------------- + +loc_393C: ; CODE XREF: seg000:3935j + xor ax, ax + +loc_393E: ; CODE XREF: seg000:393Aj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 0B34h + 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_4A41+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_3965 + mov ax, 0FFFFh + jmp short loc_397F +; --------------------------------------------------------------------------- + +loc_3965: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_397B + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_397F +; --------------------------------------------------------------------------- + +loc_397B: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_397F: ; 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:35E4p seg000:36B4p ... + 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:35B1p + ; 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:3AFEp ... + +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:0E5Co + 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_3A52 + 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_3A52: ; 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), 0ECh, 3Ah + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 5Eh, 3Ah + 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_6643+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, 3A76h + 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_3AD0 + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_3AD0: ; 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_3AF4 +; --------------------------------------------------------------------------- + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_3AF4: ; 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:0E60o + 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_3B46 + 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_3B46: ; 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_3B82 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_3B82: ; 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_3BB5 + xor ax, ax + jmp short loc_3BEF +; --------------------------------------------------------------------------- + +loc_3BB5: ; 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_3BEF: ; 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_3C09 + xor ax, ax + jmp short loc_3C47 +; --------------------------------------------------------------------------- + +loc_3C09: ; 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_3C47: ; 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, 0E52h + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_E656, ax + mov word_E654, 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_E76A, 0 + jz short locret_3CF6 + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_E76A, 2 + jz short locret_3CF6 + 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_E76A, 3 + mov esp, edx + jz short locret_3CF6 + mov word_E76A, 4 + +locret_3CF6: ; CODE XREF: seg000:3CB2j seg000:3CC5j ... + retn +; --------------------------------------------------------------------------- +word_3CF7 dw 0 ; DATA XREF: sub_3D03r sub_3D03+1Dr ... +word_3CF9 dw 0 ; DATA XREF: sub_3D03+14w sub_3D03+27w ... +word_3CFB dw 0 ; DATA XREF: sub_3D03+4Cw sub_3DD7+19w ... +word_3CFD dw 0 ; DATA XREF: sub_3D03+32r + ; sub_3D03:loc_3D56r ... +word_3CFF dw 0 ; DATA XREF: sub_3FF1+1r sub_40D1+1Aw +word_3D01 dw 0 ; DATA XREF: sub_3FF1+7r sub_40D1+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_3D03 proc near ; CODE XREF: sub_3E37+18p + cmp dx, cs:word_3CF7 + jz short loc_3D41 + mov ds, dx + mov ds, word_D7F2 + cmp word_D7F2, 0 + jz short loc_3D1E + mov cs:word_3CF9, ds + jmp short loc_3D56 +; --------------------------------------------------------------------------- + +loc_3D1E: ; CODE XREF: sub_3D03+12j + mov ax, ds + cmp ax, cs:word_3CF7 + jz short loc_3D3C + mov ax, off_D7F8 + mov cs:word_3CF9, ax + push ds + xor ax, ax + push ax + call sub_3DD7 + mov ds, cs:word_3CFD + jmp short loc_3D5F +; --------------------------------------------------------------------------- + +loc_3D3C: ; CODE XREF: sub_3D03+22j + mov dx, cs:word_3CF7 + +loc_3D41: ; CODE XREF: sub_3D03+5j + mov cs:word_3CF7, 0 + mov cs:word_3CF9, 0 + mov cs:word_3CFB, 0 + +loc_3D56: ; CODE XREF: sub_3D03+19j + mov ds, cs:word_3CFD + push dx + xor ax, ax + push ax + +loc_3D5F: ; CODE XREF: sub_3D03+37j + call __brk + add sp, 4 + retn +sub_3D03 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3D66 proc near ; CODE XREF: sub_3E37:loc_3E54p + mov ds, dx + push ds + mov es, word_D7F2 + mov word_D7F2, 0 + mov off_D7F8, es + cmp dx, cs:word_3CF7 + jz short loc_3DAC + cmp word ptr es:2, 0 + jnz short loc_3DAC + mov ax, word_D7F0 + 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_3DA5 + mov es:8, cx + jmp short loc_3DAF +; --------------------------------------------------------------------------- + +loc_3DA5: ; CODE XREF: sub_3D66+36j + mov es:2, cx + jmp short loc_3DAF +; --------------------------------------------------------------------------- + +loc_3DAC: ; CODE XREF: sub_3D66+16j sub_3D66+1Ej + call sub_3E00 + +loc_3DAF: ; CODE XREF: sub_3D66+3Dj sub_3D66+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_D7F2, 0 + jz short loc_3DC1 + retn +; --------------------------------------------------------------------------- + +loc_3DC1: ; CODE XREF: sub_3D66+58j + mov ax, word_D7F0 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_D7F0 + mov es, bx + mov es:2, ax +sub_3D66 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_3DD7 proc near ; CODE XREF: sub_3D03+2Fp sub_3F74+66p + mov bx, ds + cmp bx, word_D7F6 + jz short loc_3DF8 + mov es, word_D7F6 + mov ds, word_D7F4 + mov word_D7F6, es + mov word ptr es:4, ds + mov cs:word_3CFB, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_3DF8: ; CODE XREF: sub_3DD7+6j + mov cs:word_3CFB, 0 + retn +sub_3DD7 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3E00 proc near ; CODE XREF: sub_3D66:loc_3DACp + mov ax, cs:word_3CFB + or ax, ax + jz short loc_3E29 + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov word_D7F4, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov word_D7F6, es + retn +; --------------------------------------------------------------------------- + +loc_3E29: ; CODE XREF: sub_3E00+6j + mov cs:word_3CFB, ds + mov word_D7F4, ds + mov word_D7F6, ds + retn +sub_3E00 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3E37 proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_3FF1+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_3CFD, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_3E57 + cmp dx, cs:word_3CF9 + jnz short loc_3E54 + call sub_3D03 + jmp short loc_3E57 +; --------------------------------------------------------------------------- + +loc_3E54: ; CODE XREF: sub_3E37+16j + call sub_3D66 + +loc_3E57: ; CODE XREF: sub_3E37+Fj sub_3E37+1Bj + mov ds, cs:word_3CFD + pop di + pop si + pop bp + retf +sub_3E37 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3E60 proc near ; CODE XREF: sub_3F74:loc_3FC9p + push ax + mov ds, cs:word_3CFD + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_3E89 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3CFD + push ax + push dx + call __sbrk + add sp, 4 + +loc_3E89: ; CODE XREF: sub_3E60+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3CFD + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3EC0 + mov cs:word_3CF7, dx + mov cs:word_3CF9, dx + mov ds, dx + mov word_D7F0, bx + mov word_D7F2, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3EC0: ; CODE XREF: sub_3E60+46j + xor ax, ax + cwd + retn +sub_3E60 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3EC4 proc near ; CODE XREF: sub_3F74:loc_3FC4p + push ax + mov ds, cs:word_3CFD + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_3EEC + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_3CFD + push ax + push dx + call __sbrk + add sp, 4 + +loc_3EEC: ; CODE XREF: sub_3EC4+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_3CFD + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_3F43 + and ax, 0Fh + jnz short loc_3F28 + +loc_3F10: ; CODE XREF: sub_3EC4+7Dj + mov cx, cs:word_3CF9 + mov cs:word_3CF9, dx + mov ds, dx + mov word_D7F0, bx + mov word_D7F2, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_3F28: ; CODE XREF: sub_3EC4+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_3F43 + inc dx + jmp short loc_3F10 +; --------------------------------------------------------------------------- + +loc_3F43: ; CODE XREF: sub_3EC4+45j sub_3EC4+7Aj + xor ax, ax + cwd + retn +sub_3EC4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3F47 proc near ; CODE XREF: sub_3F74:loc_3FCEp + mov bx, dx + sub word_D7F0, ax + add dx, word_D7F0 + mov ds, dx + mov word_D7F0, ax + mov word_D7F2, bx + mov bx, dx + add bx, word_D7F0 + mov ds, bx + mov word_D7F2, dx + mov ax, 4 + retn +sub_3F47 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3F6A 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_3F7D +sub_3F6A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3F74 proc far ; CODE XREF: sub_3FF1+Ep sub_40D1+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_3F7D: ; CODE XREF: sub_3F6A+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_3CFD, ds + jz short loc_3FE8 + add ax, 13h + adc dx, 0 + jb short loc_3FD3 + test dx, 0FFF0h + jnz short loc_3FD3 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_3CF7 + or dx, dx + jz short loc_3FC9 + mov dx, cs:word_3CFB + or dx, dx + jz short loc_3FC4 + mov bx, dx + +loc_3FB4: ; CODE XREF: sub_3F74+4Ej + mov ds, dx + cmp word_D7F0, ax + jnb short loc_3FD8 + mov dx, word_D7F6 + cmp dx, bx + jnz short loc_3FB4 + +loc_3FC4: ; CODE XREF: sub_3F74+3Cj + call sub_3EC4 + jmp short loc_3FE8 +; --------------------------------------------------------------------------- + +loc_3FC9: ; CODE XREF: sub_3F74+33j + call sub_3E60 + jmp short loc_3FE8 +; --------------------------------------------------------------------------- + +loc_3FCE: ; CODE XREF: sub_3F74:loc_3FD8j + call sub_3F47 + jmp short loc_3FE8 +; --------------------------------------------------------------------------- + +loc_3FD3: ; CODE XREF: sub_3F74+1Cj sub_3F74+22j + xor ax, ax + cwd + jmp short loc_3FE8 +; --------------------------------------------------------------------------- + +loc_3FD8: ; CODE XREF: sub_3F74+46j + ja short loc_3FCE + call sub_3DD7 + mov bx, off_D7F8 + mov word_D7F2, bx + mov ax, offset word_D7F4 + +loc_3FE8: ; CODE XREF: sub_3F74+14j sub_3F74+53j ... + mov ds, cs:word_3CFD + pop di + pop si + pop bp + retf +sub_3F74 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3FF1 proc near ; CODE XREF: sub_40D1:loc_412Dp + push bx + mov si, cs:word_3CFF + push si + mov si, cs:word_3D01 + push si + push cs + call near ptr sub_3F74 + add sp, 4 + or dx, dx + jnz short loc_400B + pop bx + retn +; --------------------------------------------------------------------------- + +loc_400B: ; CODE XREF: sub_3FF1+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_D7F0 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_405C + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_402F: ; CODE XREF: sub_3FF1+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_403E + mov cx, 1000h + +loc_403E: ; CODE XREF: sub_3FF1+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_405C + 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_402F +; --------------------------------------------------------------------------- + +loc_405C: ; CODE XREF: sub_3FF1+32j sub_3FF1+59j + mov ds, cs:word_3CFD + assume ds:dseg + push cs + call near ptr sub_3E37 + add sp, 4 + pop dx + mov ax, 4 + retn +sub_3FF1 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_406D proc near ; CODE XREF: sub_40D1:loc_4128p + cmp bx, cs:word_3CF9 + jz short loc_40B9 + 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_40A5 + mov es:2, di + jmp short loc_40AA +; --------------------------------------------------------------------------- + +loc_40A5: ; CODE XREF: sub_406D+2Fj + mov es:8, di + +loc_40AA: ; CODE XREF: sub_406D+36j + mov si, bx + push cs + call near ptr sub_3E37 + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_40B9: ; CODE XREF: sub_406D+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_406D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_40D1 proc far ; CODE XREF: sub_4B43+1DBp + ; seg003:075AP ... + +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_40DE +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_40DE: ; CODE XREF: sub_40D1+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_3CFD, ds + mov cs:word_3CFF, dx + mov cs:word_3D01, ax + or bx, bx + jz short loc_4132 + mov cx, ax + or cx, dx + jz short loc_413D + add ax, 13h + adc dx, 0 + jb short loc_4146 + test dx, 0FFF0h + jnz short loc_4146 + 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_412D + ja short loc_4128 + mov dx, bx + mov ax, 4 + jmp short loc_4149 +; --------------------------------------------------------------------------- + +loc_4128: ; CODE XREF: sub_40D1+4Ej + call sub_406D + jmp short loc_4149 +; --------------------------------------------------------------------------- + +loc_412D: ; CODE XREF: sub_40D1+4Cj + call sub_3FF1 + jmp short loc_4149 +; --------------------------------------------------------------------------- + +loc_4132: ; CODE XREF: sub_40D1+25j + push dx + push ax + push cs + call near ptr sub_3F74 + add sp, 4 + jmp short loc_4149 +; --------------------------------------------------------------------------- + +loc_413D: ; CODE XREF: sub_40D1+2Bj + push bx + push ax + push cs + call near ptr sub_3E37 + add sp, 4 + +loc_4146: ; CODE XREF: sub_40D1+33j sub_40D1+39j + xor ax, ax + cwd + +loc_4149: ; CODE XREF: sub_40D1+55j sub_40D1+5Aj ... + mov ds, cs:word_3CFD + pop di + pop si + pop bp + retf +sub_40D1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_4152 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_E76C + jz short loc_41B6 + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_D87E + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_4197 + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_4197: ; CODE XREF: sub_4152+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_41C8 + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_E76C, ax + +loc_41B6: ; CODE XREF: sub_4152+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_D87A, dx + mov word_D878, ax + mov ax, 1 + jmp short loc_41D8 +; --------------------------------------------------------------------------- + +loc_41C8: ; CODE XREF: sub_4152+58j + mov ax, segx + add ax, dx + mov word_D87E, ax + mov word_D87C, 0 + xor ax, ax + +loc_41D8: ; CODE XREF: sub_4152+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_4152 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_3D03:loc_3D5Fp + ; sub_406D+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_D876 + mov bx, word_D874 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_4218 + mov cx, word_D87E + mov bx, word_D87C + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_4218 + push [bp+arg_2] + push [bp+arg_0] + call sub_4152 + or ax, ax + jnz short loc_421D + +loc_4218: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_421F +; --------------------------------------------------------------------------- + +loc_421D: ; CODE XREF: __brk+36j + xor ax, ax + +loc_421F: ; 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_3E60+Ap sub_3E60+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_D87A + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_D878 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_424E + jg short loc_429E + cmp ax, 0FFFFh + ja short loc_429E + +loc_424E: ; CODE XREF: __sbrk+22j + mov dx, word_D87A + mov ax, word_D878 + 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_D876 + mov bx, word_D874 + call N_PCMP@ + jb short loc_429E + mov cx, word_D87E + mov bx, word_D87C + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_429E + mov dx, word_D87A + mov ax, word_D878 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_4152 + or ax, ax + jnz short loc_42A6 + +loc_429E: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_42AC +; --------------------------------------------------------------------------- + +loc_42A6: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_42AC: ; 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_E77A + mov ax, word_E778 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_42DB + cmp ax, 1 + jz short loc_4318 + +loc_42DB: ; CODE XREF: seg000:42D4j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_42EF + cmp word ptr [bp-2], 0FFFFh + jnz short loc_42F9 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_42F9 + +loc_42EF: ; CODE XREF: seg000:42E1j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_42F9: ; CODE XREF: seg000:42E7j seg000:42EDj + mov word_E77A, 0 + mov word_E778, 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_4318: ; CODE XREF: seg000:42D9j + mov sp, bp + pop bp + pop di + pop si + pop ds + pop es + pop dx + +; =============== S U B R O U T I N E ======================================= + + +sub_4320 proc far ; CODE XREF: sub_636C+7Bp sub_636C+9Ap ... + pop cx + pop bx + pop ax + iret +sub_4320 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_E77A + mov ax, word_E778 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_434D + cmp ax, 1 + jz short loc_438A + +loc_434D: ; CODE XREF: seg000:4346j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_4361 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_436B + cmp word ptr [bp-4], 0FFFFh + jnz short loc_436B + +loc_4361: ; CODE XREF: seg000:4353j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_436B: ; CODE XREF: seg000:4359j seg000:435Fj + mov word_E77A, 0 + mov word_E778, 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_438A: ; CODE XREF: seg000:434Bj + 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_E772 + mov ax, word_E770 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_43C1 + cmp ax, 1 + jz short loc_4406 + +loc_43C1: ; CODE XREF: seg000:43BAj + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_43D5 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_43DF + cmp word ptr [bp-4], 0FFFFh + jnz short loc_43DF + +loc_43D5: ; CODE XREF: seg000:43C7j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_43DF: ; CODE XREF: seg000:43CDj seg000:43D3j + mov word_E772, 0 + mov word_E770, 0 + push word_FCF4 + push word_FCF2 + 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_4406: ; CODE XREF: seg000:43BFj + 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_4415 proc far ; CODE XREF: seg000:445Ep sub_451C+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_441C: ; CODE XREF: sub_4415+1Cj + mov bx, dx + mov al, [bx+0F98h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_442D + mov ax, dx + jmp short loc_4436 +; --------------------------------------------------------------------------- + +loc_442D: ; CODE XREF: sub_4415+12j + inc dx + cmp dx, 6 + jl short loc_441C + mov ax, 0FFFFh + +loc_4436: ; CODE XREF: sub_4415+16j + pop di + pop si + pop bp + retf +sub_4415 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_E76F, 0 + jnz short loc_445A + mov word_FCEC, seg seg000 + mov word_FCEA, 443Ah + mov byte_E76F, 1 + +loc_445A: ; CODE XREF: seg000:4447j + push word ptr [bp+6] + push cs + call near ptr sub_4415 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_4479 + mov word_D86E, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_4516 +; --------------------------------------------------------------------------- + +loc_4479: ; CODE XREF: seg000:4468j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+0F82h] + mov ax, [bx+0F80h] + 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+0F82h], dx + mov [bx+0F80h], ax + cmp word ptr [bp+6], 2 + jnz short loc_44E3 + cmp byte_E76E, 0 + jnz short loc_44C4 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_FCF4, dx + mov word_FCF2, ax + mov byte_E76E, 1 + +loc_44C4: ; CODE XREF: seg000:44ACj + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_44D6 + push word_FCF4 + push word_FCF2 + jmp short loc_44DE +; --------------------------------------------------------------------------- + +loc_44D6: ; CODE XREF: seg000:44CAj + mov ax, seg seg000 + push ax + mov ax, 4396h + push ax + +loc_44DE: ; CODE XREF: seg000:44D4j + mov ax, 23h ; '#' + jmp short loc_4507 +; --------------------------------------------------------------------------- + +loc_44E3: ; CODE XREF: seg000:44A5j + cmp word ptr [bp+6], 8 + jnz short loc_4510 + mov ax, seg seg000 + push ax + mov ax, 42B2h + 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, 4324h + push ax + mov ax, 4 + +loc_4507: ; CODE XREF: seg000:44E1j + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_4510: ; CODE XREF: seg000:44E7j + mov dx, [bp-4] + mov ax, [bp-6] + +loc_4516: ; CODE XREF: seg000:4476j + 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_451C proc far ; CODE XREF: _abort+8p + +var_2 = word ptr -2 +arg_2 = word ptr 6 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + push [bp+arg_2] + push cs + call near ptr sub_4415 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_4539 + mov ax, 1 + jmp short loc_45AD +; --------------------------------------------------------------------------- + +loc_4539: ; CODE XREF: sub_451C+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+0F82h] + mov ax, [bx+0F80h] +sub_451C endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4548 proc far ; CODE XREF: sub_636C+7Bp sub_636C+9Ap ... + mov [bp-4], dx + mov [bp-6], ax + or dx, dx + jnz short loc_4557 + cmp ax, 1 + jz short loc_45AB + +loc_4557: ; CODE XREF: sub_4548+8j + mov ax, [bp-6] + or ax, [bp-4] + jnz short loc_4586 + mov ax, [bp+6] + cmp ax, 2 + jz short loc_4571 + cmp ax, 16h + jnz short loc_457A + nop + push cs + call near ptr sub_3044 +; --------------------------------------------------------------------------- + +loc_4571: ; CODE XREF: sub_4548+1Dj + 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_457A: ; CODE XREF: sub_4548+22j + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_45AB +; --------------------------------------------------------------------------- + +loc_4586: ; CODE XREF: sub_4548+15j + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+0F82h], 0 + mov word ptr [bx+0F80h], 0 + mov bx, [bp-2] + mov al, [bx+0F9Eh] + mov ah, 0 + push ax + push word ptr [bp+6] + call dword ptr [bp-6] + pop cx + pop cx + +loc_45AB: ; CODE XREF: sub_4548+Dj sub_4548+3Cj + xor ax, ax + +loc_45AD: ; CODE XREF: sub_451C+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4548 endp ; sp-analysis failed + + +; =============== 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_4F89+A8p sub_9625+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_45D2 + jmp short loc_45EA +; --------------------------------------------------------------------------- + +loc_45D2: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_45DD + test dl, 1 + jnz short loc_45E1 + +loc_45DD: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_45EA +; --------------------------------------------------------------------------- + +loc_45E1: ; CODE XREF: __access+28j + mov word_D86E, 5 + mov ax, 0FFFFh + +loc_45EA: ; 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, 0A4h, 0Fh, 0Bh, 6, 0A6h, 0Fh, 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, 0A8h, 0Fh, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_E794, si + mov word ptr dword_E794+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_4637 proc far ; CODE XREF: sub_465C+35p + ; sub_4B43+182p ... + +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_E794 + +loc_4645: ; CODE XREF: sub_4637+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_4657 + cmp al, dl + jb short loc_4657 + inc bx + inc bx + cmp al, dh + ja short loc_4645 + inc cx + +loc_4657: ; CODE XREF: sub_4637+13j sub_4637+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_4637 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_465C proc far ; CODE XREF: sub_4A07+23p sub_4B43+ACp ... + +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_4672: ; CODE XREF: sub_465C+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_467F + xor cx, cx + jmp short loc_46AD +; --------------------------------------------------------------------------- + +loc_467F: ; CODE XREF: sub_465C+1Dj + cmp cx, 1 + jnz short loc_4689 + mov cx, 2 + jmp short loc_46A0 +; --------------------------------------------------------------------------- + +loc_4689: ; CODE XREF: sub_465C+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_4637 + pop cx + or ax, ax + jz short loc_469E + mov cx, 1 + jmp short loc_46A0 +; --------------------------------------------------------------------------- + +loc_469E: ; CODE XREF: sub_465C+3Bj + xor cx, cx + +loc_46A0: ; CODE XREF: sub_465C+2Bj sub_465C+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_46AD + inc word ptr [bp+var_4] + jmp short loc_4672 +; --------------------------------------------------------------------------- + +loc_46AD: ; CODE XREF: sub_465C+21j sub_465C+4Aj + or cx, cx + jnz short loc_46B6 + mov ax, 1 + jmp short loc_46B8 +; --------------------------------------------------------------------------- + +loc_46B6: ; CODE XREF: sub_465C+53j + xor ax, ax + +loc_46B8: ; CODE XREF: sub_465C+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_465C 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_46D7 + xchg ax, cx + jmp short loc_46DB +; --------------------------------------------------------------------------- + +loc_46D7: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_46DB: ; 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_46F7 + nop + push cs + call near ptr _flushall + jmp loc_47A8 +; --------------------------------------------------------------------------- + +loc_46F7: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_4706 + jmp loc_47A3 +; --------------------------------------------------------------------------- + +loc_4706: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_475D + test byte ptr es:[bx+2], 8 + jnz short loc_472E + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_4728 + jmp loc_47A8 +; --------------------------------------------------------------------------- + +loc_4728: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_47A8 + +loc_472E: ; 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_47A8 + cmp es:[bx+0Ch], ax + jnz short loc_47A8 + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_47A8 +; --------------------------------------------------------------------------- + +loc_475D: ; 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_47A8 + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_47A8 + or word ptr es:[bx+2], 10h + +loc_47A3: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_47AA +; --------------------------------------------------------------------------- + +loc_47A8: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_47AA: ; 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_E4A0 + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 0B20h + jmp short loc_47E9 +; --------------------------------------------------------------------------- + +loc_47CD: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_47E5 + 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_47E5: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_47E9: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_47CD + 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_47FC proc near ; CODE XREF: _fseek+2Ep _ftell+B9p ... + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, [bp+arg_0] + cmp word ptr es:[bx], 0 + jge short loc_4819 + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_4826 +; --------------------------------------------------------------------------- + +loc_4819: ; CODE XREF: sub_47FC+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_4826: ; CODE XREF: sub_47FC+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_487A + 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_4873 + jmp short loc_485B +; --------------------------------------------------------------------------- + +loc_484C: ; CODE XREF: sub_47FC+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_485B + inc [bp+var_2] + +loc_485B: ; CODE XREF: sub_47FC+4Ej sub_47FC+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_484C + jmp short loc_487A +; --------------------------------------------------------------------------- + +loc_4864: ; CODE XREF: sub_47FC+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_4873 + inc [bp+var_2] + +loc_4873: ; CODE XREF: sub_47FC+4Cj sub_47FC+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_4864 + +loc_487A: ; CODE XREF: sub_47FC+35j sub_47FC+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_47FC 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_48A0 + mov ax, 0FFFFh + jmp short loc_4903 +; --------------------------------------------------------------------------- + +loc_48A0: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_48BD + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_48BD + push word ptr [bp+stream+2] + push bx + call sub_47FC + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_48BD: ; 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_4901 + cmp ax, 0FFFFh + jnz short loc_4901 + mov ax, 0FFFFh + jmp short loc_4903 +; --------------------------------------------------------------------------- + +loc_4901: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_4903: ; CODE XREF: _fseek+19j _fseek+7Aj + pop di + pop si + pop bp + retf +_fseek endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; __int32 __cdecl ftell(FILE *stream) +_ftell proc far + +var_8 = word ptr -8 +var_6 = word ptr -6 +_offset = dword ptr -4 +stream = dword ptr 6 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov ax, 1 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + les bx, [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov word ptr [bp+_offset+2], dx + mov word ptr [bp+_offset], ax + cmp dx, 0FFFFh + jnz short loc_493B + cmp ax, 0FFFFh + jnz short loc_493B + jmp loc_49DC +; --------------------------------------------------------------------------- + +loc_493B: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_4947 + jmp loc_49CC +; --------------------------------------------------------------------------- + +loc_4947: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+0CB3h], 8 + jz short loc_49BA + mov ax, 2 + push ax ; fromwhere + xor ax, ax + push ax + push ax ; offset + mov bx, word ptr [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + mov [bp+var_6], dx + mov [bp+var_8], ax + cmp dx, 0FFFFh + jnz short loc_4982 + cmp ax, 0FFFFh + jnz short loc_4982 + jmp short loc_49E2 +; --------------------------------------------------------------------------- + +loc_4982: ; CODE XREF: _ftell+72j _ftell+77j + xor ax, ax + push ax ; fromwhere + push word ptr [bp+_offset+2] + push word ptr [bp+_offset] ; offset + les bx, [bp+stream] + mov al, es:[bx+4] + cbw + push ax ; handle + nop + push cs + call near ptr _lseek + add sp, 8 + cmp dx, 0FFFFh + jnz short loc_49AE + cmp ax, 0FFFFh + jnz short loc_49AE + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_49E2 +; --------------------------------------------------------------------------- + +loc_49AE: ; CODE XREF: _ftell+98j _ftell+9Dj + mov dx, [bp+var_6] + mov ax, [bp+var_8] + mov word ptr [bp+_offset+2], dx + mov word ptr [bp+_offset], ax + +loc_49BA: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_47FC + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_49DC +; --------------------------------------------------------------------------- + +loc_49CC: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_47FC + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_49DC: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_49E2: ; CODE XREF: _ftell+79j _ftell+A5j + pop di + pop si + mov sp, bp + pop bp + retf +_ftell endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_49E8 proc near ; CODE XREF: sub_4A07+Ep sub_4A41+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_49FA + cmp ax, 2Fh ; '/' + jnz short loc_49FF + +loc_49FA: ; CODE XREF: sub_49E8+Bj + mov ax, 1 + jmp short loc_4A01 +; --------------------------------------------------------------------------- + +loc_49FF: ; CODE XREF: sub_49E8+10j + xor ax, ax + +loc_4A01: ; CODE XREF: sub_49E8+15j + pop di + pop si + pop bp + retn 2 +sub_49E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4A07 proc near ; CODE XREF: sub_4A41+CDp sub_4B43+59p ... + +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_49E8 + or ax, ax + jz short loc_4A39 + 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_465C + add sp, 8 + or ax, ax + jz short loc_4A39 + mov ax, 1 + jmp short loc_4A3B +; --------------------------------------------------------------------------- + +loc_4A39: ; CODE XREF: sub_4A07+13j sub_4A07+2Bj + xor ax, ax + +loc_4A3B: ; CODE XREF: sub_4A07+30j + pop di + pop si + pop bp + retn 8 +sub_4A07 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4A41 proc far ; CODE XREF: sub_4F89+10Dp + +drive = word ptr -12h +var_10 = word ptr -10h +var_C = dword ptr -0Ch +var_8 = dword ptr -8 +s = dword ptr -4 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 12h + push si + push di + mov ax, 0A1h ; '¡' + push ax + nop + push cs + call near ptr sub_3F6A + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_4A60 + jmp loc_4CA3 +; --------------------------------------------------------------------------- + +loc_4A60: ; CODE XREF: sub_4A41+1Aj + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_C+2], dx + mov word ptr [bp+var_C], ax + les bx, [bp+var_C] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0D51h], 0Ch + jz short loc_4AA0 + mov bx, word ptr [bp+var_C] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_4AA0 + 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+var_C], 2 + jmp short loc_4AB6 +; --------------------------------------------------------------------------- + +loc_4AA0: ; CODE XREF: sub_4A41+39j sub_4A41+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_4AB6: ; CODE XREF: sub_4A41+5Dj + les bx, [bp+var_C] + mov al, es:[bx] + cbw + push ax + call sub_49E8 + or ax, ax + jnz short loc_4B1E + 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_4AEE + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + jmp loc_4CA3 +; --------------------------------------------------------------------------- + +loc_4AEE: ; CODE XREF: sub_4A41+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+var_8+2], dx + mov word ptr [bp+var_8], ax + push dx + push word ptr [bp+s] + dec ax + push dx + push ax + call sub_4A07 + or ax, ax + jnz short loc_4B40 + les bx, [bp+var_8] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_4B3D +; --------------------------------------------------------------------------- + +loc_4B1E: ; CODE XREF: sub_4A41+82j + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov al, byte ptr [bp+var_10] + mov es:[bx], al + inc word ptr [bp+var_8] + les bx, [bp+var_8] + mov byte ptr es:[bx], 3Ah ; ':' + +loc_4B3D: ; CODE XREF: sub_4A41+DBj + inc word ptr [bp+var_8] + +loc_4B40: ; CODE XREF: sub_4A41+D2j + push word ptr [bp+var_C+2] +sub_4A41 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4B43 proc far ; CODE XREF: sub_601E+77p sub_601E+A1p ... + push word ptr [bp-0Ch] ; src + push word ptr [bp-6] + push word ptr [bp-8] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, [bp-2] + mov ax, [bp-4] + mov [bp-6], dx + mov [bp-8], ax + mov [bp-0Ah], dx + mov [bp-0Ch], ax + +loc_4B66: ; CODE XREF: sub_4B43+18Aj + ; sub_4B43+196j ... + les bx, [bp-0Ch] + inc word ptr [bp-0Ch] + mov al, es:[bx] + cbw + mov [bp-0Eh], ax + or ax, ax + jz short loc_4B82 + push ax + call sub_49E8 + or ax, ax + jnz short loc_4B82 + jmp loc_4CB4 +; --------------------------------------------------------------------------- + +loc_4B82: ; CODE XREF: sub_4B43+32j sub_4B43+3Aj + les bx, [bp-8] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4BA9 + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + add ax, 0FFFEh + push word ptr [bp-6] + push ax + call sub_4A07 + or ax, ax + jz short loc_4BA9 + sub word ptr [bp-8], 2 + jmp short loc_4C20 +; --------------------------------------------------------------------------- + +loc_4BA9: ; CODE XREF: sub_4B43+47j sub_4B43+5Ej + les bx, [bp-8] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_4C20 + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_4C20 + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + add ax, 0FFFDh + push word ptr [bp-6] + push ax + call sub_4A07 + or ax, ax + jz short loc_4C20 + sub word ptr [bp-8], 3 + les bx, [bp-8] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4C09 + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_465C + add sp, 8 + or ax, ax + jz short loc_4C09 + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + jmp loc_4CA3 +; --------------------------------------------------------------------------- + +loc_4C09: ; CODE XREF: sub_4B43+9Aj sub_4B43+B4j ... + push word ptr [bp-2] + push word ptr [bp-4] + dec word ptr [bp-8] + mov ax, [bp-8] + push word ptr [bp-6] + push ax + call sub_4A07 + or ax, ax + jz short loc_4C09 + +loc_4C20: ; CODE XREF: sub_4B43+64j sub_4B43+6Ej ... + cmp word ptr [bp-0Eh], 0 + jz short loc_4C29 + jmp loc_4CA9 +; --------------------------------------------------------------------------- + +loc_4C29: ; CODE XREF: sub_4B43+E1j + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + call sub_4A07 + or ax, ax + jz short loc_4C41 + dec word ptr [bp-8] + +loc_4C41: ; CODE XREF: sub_4B43+F9j + les bx, [bp-8] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_4C6F + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_465C + add sp, 8 + or ax, ax + jz short loc_4C6F + les bx, [bp-8] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp-8] + +loc_4C6F: ; CODE XREF: sub_4B43+106j + ; sub_4B43+120j + les bx, [bp-8] + mov byte ptr es:[bx], 0 + push word ptr [bp-2] + push word ptr [bp-4] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov dx, ax + mov ax, [bp+6] + or ax, [bp+8] + jnz short loc_4C91 + jmp loc_4D15 +; --------------------------------------------------------------------------- + +loc_4C91: ; CODE XREF: sub_4B43+149j + cmp dx, [bp+0Eh] + jbe short loc_4CEE + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + +loc_4CA3: ; CODE XREF: sub_4A41+1Cj sub_4A41+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_4D24 +; --------------------------------------------------------------------------- + +loc_4CA9: ; CODE XREF: sub_4B43+E3j + les bx, [bp-8] + mov al, [bp-0Eh] + mov es:[bx], al + jmp short loc_4CE8 +; --------------------------------------------------------------------------- + +loc_4CB4: ; CODE XREF: sub_4B43+3Cj + les bx, [bp-8] + mov al, [bp-0Eh] + mov es:[bx], al + inc word ptr [bp-8] + push word ptr [bp-0Eh] + nop + push cs + call near ptr sub_4637 + pop cx + or ax, ax + jnz short loc_4CD0 + jmp loc_4B66 +; --------------------------------------------------------------------------- + +loc_4CD0: ; CODE XREF: sub_4B43+188j + les bx, [bp-0Ch] + cmp byte ptr es:[bx], 0 + jnz short loc_4CDC + jmp loc_4B66 +; --------------------------------------------------------------------------- + +loc_4CDC: ; CODE XREF: sub_4B43+194j + mov al, es:[bx] + les bx, [bp-8] + mov es:[bx], al + inc word ptr [bp-0Ch] + +loc_4CE8: ; CODE XREF: sub_4B43+16Fj + inc word ptr [bp-8] + jmp loc_4B66 +; --------------------------------------------------------------------------- + +loc_4CEE: ; CODE XREF: sub_4B43+151j + push word ptr [bp-2] + push word ptr [bp-4] ; src + push word ptr [bp+8] + push word ptr [bp+6] ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_3E37 + add sp, 0Ch + mov dx, [bp+8] + mov ax, [bp+6] + jmp short loc_4D24 +; --------------------------------------------------------------------------- + +loc_4D15: ; CODE XREF: sub_4B43+14Bj + push dx + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_40D1 + add sp, 6 + +loc_4D24: ; CODE XREF: sub_4B43+164j + ; sub_4B43+1D0j + pop di + pop si + mov sp, bp + pop bp + retf +sub_4B43 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl _getdcwd(int drive, char *buf, int len) +__getdcwd proc far ; CODE XREF: sub_4A41+93p sub_4F89+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_4D46 + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_4D46: ; 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_4DA2 + 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_4D81 + mov word_D86E, 22h ; '"' + jmp short loc_4DA2 +; --------------------------------------------------------------------------- + +loc_4D81: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_4DA8 + push [bp+len] + nop + push cs + call near ptr sub_3F6A + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4DA8 + mov word_D86E, 8 + +loc_4DA2: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_4DC1 +; --------------------------------------------------------------------------- + +loc_4DA8: ; 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_4DC1: ; 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_96AE+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_4DF8 + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_4DF8 + les di, dword_E7C0 + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_4E05 + +loc_4DF8: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_4E31 +; --------------------------------------------------------------------------- + +loc_4DFE: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_4E05: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_4DF8 + mov al, es:[di] + or al, al + jz short loc_4DF8 + cmp ah, al + jnz short loc_4DFE + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_4DFE + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_4DFE + inc di + mov ax, di + mov dx, es + +loc_4E31: ; 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_4E58 + 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_4E58: ; 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_6643+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_4E77 + movsb + +loc_4E77: ; 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_4E9E + jcxz short loc_4EA5 + stosb + dec cx + +loc_4E9E: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_4EA5 + stosb + +loc_4EA5: ; 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_72EF+CFp seg003:09DEP + +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_4EE8 + std + mov ax, 1 + jmp short loc_4EEB +; --------------------------------------------------------------------------- + +loc_4EE8: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_4EEB: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_4EFE + add si, cx + dec si + add di, cx + dec di + +loc_4EFE: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_4F08 + jcxz short loc_4F17 + movsb + dec cx + +loc_4F08: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_4F17 + add si, ax + add di, ax + movsb + +loc_4F17: ; CODE XREF: _movmem+39j _movmem+45j + cld + pop ds + pop di + pop si + pop bp + retf +_movmem endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void *__cdecl memmove(void *dest, const void *src, size_t n) +_memmove proc far ; CODE XREF: seg003:099AP seg003:09C3P + +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_9625+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_4F69 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0FB4h + +loc_4F69: ; 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_4F89 + 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_4F89(char *src, __int32, char *pathname) +sub_4F89 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_4FAE + xor dx, dx + jmp short loc_4FBD +; --------------------------------------------------------------------------- + +loc_4FAE: ; CODE XREF: sub_4F89+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_4FBD: ; CODE XREF: sub_4F89+23j sub_4F89+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_5012 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_4FE3 + cmp bl, 2Fh ; '/' + jz short loc_4FE3 + cmp bl, 3Ah ; ':' + jnz short loc_4FFF + +loc_4FE3: ; CODE XREF: sub_4F89+4Ej sub_4F89+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_465C + add sp, 8 + or ax, ax + jnz short loc_5012 + +loc_4FFF: ; CODE XREF: sub_4F89+58j + push ds + mov ax, 0FB6h + 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_5012: ; CODE XREF: sub_4F89+3Fj sub_4F89+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_5086 + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_504D + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_50C5 +; --------------------------------------------------------------------------- + +loc_504D: ; CODE XREF: sub_4F89+B9j + xor dx, dx + jmp short loc_5065 +; --------------------------------------------------------------------------- + +loc_5051: ; CODE XREF: sub_4F89+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_5065: ; CODE XREF: sub_4F89+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_5074 + cmp byte ptr es:[bx], 0 + jnz short loc_5051 + +loc_5074: ; CODE XREF: sub_4F89+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5080 + jmp loc_4FBD +; --------------------------------------------------------------------------- + +loc_5080: ; CODE XREF: sub_4F89+F2j + inc word ptr [bp+arg_4] + jmp loc_4FBD +; --------------------------------------------------------------------------- + +loc_5086: ; CODE XREF: sub_4F89+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_4A41 + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_50C5 + 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_3E37 + add sp, 0Ch + +loc_50C5: ; CODE XREF: sub_4F89+C2j + ; sub_4F89+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4F89 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:3911p seg000:394Ap + +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_50DF + jmp loc_51B6 +; --------------------------------------------------------------------------- + +loc_50DF: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_50E8 + jmp loc_51B6 +; --------------------------------------------------------------------------- + +loc_50E8: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_50F2 + jmp loc_51B6 +; --------------------------------------------------------------------------- + +loc_50F2: ; CODE XREF: _setvbuf+22j + cmp word_E7AA, 0 + jnz short loc_5108 + cmp word ptr [bp+stream], 0B34h + jnz short loc_5108 + mov word_E7AA, 1 + jmp short loc_511C +; --------------------------------------------------------------------------- + +loc_5108: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_E7A8, 0 + jnz short loc_511C + cmp word ptr [bp+stream], 0B20h + jnz short loc_511C + mov word_E7A8, 1 + +loc_511C: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_5139 + 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_5139: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_5152 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + +loc_5152: ; 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_51E6 + cmp [bp+_size], 0 + jbe short loc_51E6 + mov word ptr off_E304+2, seg seg000 + mov word ptr off_E304, 54F4h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_51BB + push [bp+_size] + nop + push cs + call near ptr sub_3F6A + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_51B6 + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_51BB +; --------------------------------------------------------------------------- + +loc_51B6: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_51E8 +; --------------------------------------------------------------------------- + +loc_51BB: ; 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_51E6 + or word ptr es:[bx+2], 8 + +loc_51E6: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_51E8: ; 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_4F89+83p sub_4F89+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_521C + movsb + dec cx + +loc_521C: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_5223 + movsb + +loc_5223: ; CODE XREF: _strcat+34j + xchg ax, dx + mov dx, es + pop ds + pop di + pop si + pop bp + retf +_strcat endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl strcmp(const char *s1, const char *s2) +_strcmp proc far ; CODE XREF: typeinfo::before(typeinfo &)+61p + +s1 = dword ptr 6 +s2 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, ds + cld + xor ax, ax + mov bx, ax + les di, [bp+s2] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + mov di, si + lds si, [bp+s1] + repe cmpsb + mov al, [si-1] + mov bl, es:[di-1] + sub ax, bx + mov ds, dx + pop di + pop si + pop bp + retf +_strcmp endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl strcpy(char *dest, const char *src) +_strcpy proc far ; CODE XREF: sub_4B43+Bp sub_4B43+1B9p ... + +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_96AE+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_5299: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_52BD + scasb + jz short loc_5299 + cmp al, ch + jb short loc_52AE + cmp al, cl + ja short loc_52AE + sub al, 20h ; ' ' + +loc_52AE: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_52B9 + cmp bl, cl + ja short loc_52B9 + sub bl, 20h ; ' ' + +loc_52B9: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_5299 + +loc_52BD: ; 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_52D8 + cmp ax, di + jz short loc_52E2 + +loc_52D8: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_52E2: ; 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_52E6(char *s, char) +sub_52E6 proc far ; CODE XREF: sub_96AE+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_5325 +; --------------------------------------------------------------------------- + +loc_530E: ; CODE XREF: sub_52E6+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_5324 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_532D +; --------------------------------------------------------------------------- + +loc_5324: ; CODE XREF: sub_52E6+34j + dec cx + +loc_5325: ; CODE XREF: sub_52E6+26j + or cx, cx + jnz short loc_530E + xor dx, dx + xor ax, ax + +loc_532D: ; CODE XREF: sub_52E6+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_52E6 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_E4A0 + jb short loc_534F + mov ax, 6 + push ax + call __IOERROR + jmp loc_5493 +; --------------------------------------------------------------------------- + +loc_534F: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_535D + xor ax, ax + jmp loc_5493 +; --------------------------------------------------------------------------- + +loc_535D: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0CB3h], 8 + jz short loc_537C + 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_537C: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+0CB3h], 40h + jnz short loc_539F + 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_5493 +; --------------------------------------------------------------------------- + +loc_539F: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+0CB2h], 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_5439 +; --------------------------------------------------------------------------- + +loc_53BE: ; 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_53DB + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_53DB: ; 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_5443 + jnz short loc_5401 + cmp dx, 80h ; '€' + jb short loc_5443 + +loc_5401: ; 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_5439 + cmp dx, 0FFFFh + jnz short loc_5431 + mov ax, 0FFFFh + jmp short loc_548E +; --------------------------------------------------------------------------- + +loc_5431: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_5489 +; --------------------------------------------------------------------------- + +loc_5439: ; 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_5443: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_544C + jmp loc_53BE +; --------------------------------------------------------------------------- + +loc_544C: ; 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_5490 + 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_5490 + cmp dx, 0FFFFh + jnz short loc_5486 + mov ax, 0FFFFh + jmp short loc_548E +; --------------------------------------------------------------------------- + +loc_5486: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_5489: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_548E: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_5493 +; --------------------------------------------------------------------------- + +loc_5490: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_5493: ; 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+0CB2h], 1 + jz short loc_54B0 + mov ax, 5 + push ax + jmp short loc_54D1 +; --------------------------------------------------------------------------- + +loc_54B0: ; 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_54D0 + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+0CB2h], 1000h + pop ax + jmp short loc_54D4 +; --------------------------------------------------------------------------- + +loc_54D0: ; CODE XREF: __rtl_write+26j + push ax + +loc_54D1: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_54D4: ; 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], 0B20h + jmp short loc_5527 +; --------------------------------------------------------------------------- + +loc_550B: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_5520 + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_5520: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_5527: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_550B + 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_5554 + 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_5572 + +loc_5554: ; 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_5572: ; 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_566D + db 4 dup(0), 6Dh, 56h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 8Eh, 55h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 96h, 55h + +; =============== 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_D37A+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, 55A4h + 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, 562Ah + 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, 566Dh + 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_566D db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:558Eo + db 0Dh dup(0), 2, 0, 2, 0, 0AFh, 56h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0FCh, 56h + 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_56F6 + 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_56F4 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_56F8 +; --------------------------------------------------------------------------- + +loc_56F4: ; CODE XREF: seg000:56E3j + jmp short loc_56F8 +; --------------------------------------------------------------------------- + +loc_56F6: ; CODE XREF: seg000:56BAj + xor ax, ax + +loc_56F8: ; CODE XREF: seg000:56F2j + ; seg000:loc_56F4j + 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, 0CEh, 58h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0A2h + db 5Ah + 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), 34h, 57h + +; =============== 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, 5742h + 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_5787 + 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_57D9 + +loc_5787: ; 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_57C9 + 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_57C9: ; 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_57D9: ; 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_5AA2 + 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), 0FFh, 57h + +; =============== 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:35D6p seg000:369Ep ... + +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, 580Dh + 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_5852 + 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_58A8 + +loc_5852: ; 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_5898 + 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_5898: ; 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_58A8: ; 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:376Dp seg000:381Cp ... + +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_5928 + 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_5928 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_5928: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_5A6A + db 4 dup(0), 2Ch, 59h + 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, 5934h + 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, 5823h + 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, 5A6Ah + 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_5AA2 + 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), 8Dh, 59h + +; =============== 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, 599Bh + 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_59D4 + cmp ax, word ptr [bp+arg_4] + jz short loc_5A52 + +loc_59D4: ; 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_5A42 + 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_5A42: ; 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_5A52: ; 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_5A6A db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:592Co + db 0Dh dup(0), 1, 0, 1, 0, 0CEh, 58h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_5AA2 db 4, 0, 10h, 20h, 0Ah, 0, 0B5h, 5Ah ; DATA XREF: seg000:57FFo + ; seg000:598Do + 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, 11h, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +___JumpToCatch__ proc far ; CODE XREF: __ExceptionHandler+261p + push si + push di + mov sp, bx + mov bp, cx + push dx + push ax + retf +___JumpToCatch__ endp + +; --------------------------------------------------------------------------- + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5AFB 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_5B0F + mov dx, ds + mov ax, 0FBEh + jmp short loc_5B1C +; --------------------------------------------------------------------------- + +loc_5B0F: ; CODE XREF: sub_5AFB+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_5B1C: ; CODE XREF: sub_5AFB+12j + pop di + pop si + pop bp + retf +sub_5AFB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5B20 proc far ; CODE XREF: sub_5BBD+69p + ; sub_5BBD+106p ... + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + cmp dx, word ptr [bp+arg_4+2] + jnz short loc_5B38 + cmp ax, word ptr [bp+arg_4] + jz short loc_5BB4 + +loc_5B38: ; CODE XREF: sub_5B20+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_5BAC + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_5BAC + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + or ax, es:[bx+2] + test al, 80h + jnz short loc_5BAC + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+4] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_5B8E: ; CODE XREF: sub_5B20+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_5BB0 + +loc_5BAC: ; CODE XREF: sub_5B20+26j sub_5B20+34j ... + xor ax, ax + jmp short loc_5BB7 +; --------------------------------------------------------------------------- + +loc_5BB0: ; CODE XREF: sub_5B20+8Aj + or dx, dx + jnz short loc_5B8E + +loc_5BB4: ; CODE XREF: sub_5B20+16j + mov ax, 1 + +loc_5BB7: ; CODE XREF: sub_5B20+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5B20 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5BBD proc near ; CODE XREF: sub_5BBD+9Bp + ; sub_5BBD+135p ... + +var_A = dword ptr -0Ah +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+0Ch] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_5BD8: ; CODE XREF: sub_5BBD+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_5C6C + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_5C65 + cmp [bp+arg_C], 0 + jz short loc_5C14 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5C14 + mov ax, 1 + jmp short loc_5C16 +; --------------------------------------------------------------------------- + +loc_5C14: ; CODE XREF: sub_5BBD+41j sub_5BBD+50j + xor ax, ax + +loc_5C16: ; CODE XREF: sub_5BBD+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_5B20 + add sp, 8 + or ax, ax + jz short loc_5C39 + cmp [bp+var_6], 0 + jz short loc_5C39 + jmp loc_5CFC +; --------------------------------------------------------------------------- + +loc_5C39: ; CODE XREF: sub_5BBD+71j sub_5BBD+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5C65 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_5BBD + add sp, 0Eh + or ax, ax + jz short loc_5C65 + jmp loc_5CFC +; --------------------------------------------------------------------------- + +loc_5C65: ; CODE XREF: sub_5BBD+3Bj sub_5BBD+84j ... + add word ptr [bp+var_4], 8 + jmp loc_5BD8 +; --------------------------------------------------------------------------- + +loc_5C6C: ; CODE XREF: sub_5BBD+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_5C7F: ; CODE XREF: sub_5BBD+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_5D08 + cmp [bp+arg_C], 0 + jz short loc_5CB1 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_5CB1 + mov ax, 1 + jmp short loc_5CB3 +; --------------------------------------------------------------------------- + +loc_5CB1: ; CODE XREF: sub_5BBD+DEj sub_5BBD+EDj + xor ax, ax + +loc_5CB3: ; CODE XREF: sub_5BBD+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_5B20 + add sp, 8 + or ax, ax + jz short loc_5CD3 + cmp [bp+var_6], 0 + jnz short loc_5CFC + +loc_5CD3: ; CODE XREF: sub_5BBD+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_5D01 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_5BBD + add sp, 0Eh + or ax, ax + jz short loc_5D01 + +loc_5CFC: ; CODE XREF: sub_5BBD+79j sub_5BBD+A5j ... + mov ax, 1 + jmp short loc_5D0A +; --------------------------------------------------------------------------- + +loc_5D01: ; CODE XREF: sub_5BBD+11Ej + ; sub_5BBD+13Dj + add word ptr [bp+var_4], 8 + jmp loc_5C7F +; --------------------------------------------------------------------------- + +loc_5D08: ; CODE XREF: sub_5BBD+D8j + xor ax, ax + +loc_5D0A: ; CODE XREF: sub_5BBD+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5BBD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5D10 proc near ; CODE XREF: sub_5F19+1Dp sub_5F19+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_5D1B: ; CODE XREF: sub_5D10+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_5D2E + cmp ax, word ptr [bp+arg_4] + jnz short loc_5D2E + jmp loc_5E43 +; --------------------------------------------------------------------------- + +loc_5D2E: ; CODE XREF: sub_5D10+14j sub_5D10+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_5DBE + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_5D61 + jmp loc_5E04 +; --------------------------------------------------------------------------- + +loc_5D61: ; CODE XREF: sub_5D10+4Cj + or cx, cx + jz short loc_5D68 + jmp loc_5E7C +; --------------------------------------------------------------------------- + +loc_5D68: ; CODE XREF: sub_5D10+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_5D9E + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_5D8C + jmp loc_5E7C +; --------------------------------------------------------------------------- + +loc_5D8C: ; CODE XREF: sub_5D10+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_5E04 + +loc_5D9E: ; CODE XREF: sub_5D10+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_5DB2 + jmp loc_5E7C +; --------------------------------------------------------------------------- + +loc_5DB2: ; CODE XREF: sub_5D10+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_5DBB + jmp loc_5E7C +; --------------------------------------------------------------------------- + +loc_5DBB: ; CODE XREF: sub_5D10+A6j + jmp loc_5E43 +; --------------------------------------------------------------------------- + +loc_5DBE: ; CODE XREF: sub_5D10+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_5E2C + les bx, [bp+arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+arg_4] + cmp dx, es:[bx+0Ch] + jnz short loc_5DE3 + cmp ax, es:[bx+0Ah] + jz short loc_5E04 + +loc_5DE3: ; CODE XREF: sub_5D10+CBj + or cx, cx + jz short loc_5DEA + jmp loc_5E7C +; --------------------------------------------------------------------------- + +loc_5DEA: ; CODE XREF: sub_5D10+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_5E7C + +loc_5E04: ; CODE XREF: sub_5D10+4Ej sub_5D10+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_5D1B +; --------------------------------------------------------------------------- + +loc_5E2C: ; CODE XREF: sub_5D10+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_5B20 + add sp, 8 + or ax, ax + jz short loc_5E48 + +loc_5E43: ; CODE XREF: sub_5D10+1Bj + ; sub_5D10:loc_5DBBj + mov ax, 1 + jmp short loc_5E7E +; --------------------------------------------------------------------------- + +loc_5E48: ; CODE XREF: sub_5D10+131j + test byte ptr [bp+var_2], 2 + jz short loc_5E7C + test byte ptr [bp+var_4], 1 + jz short loc_5E7C + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_5E7C + mov ax, 1 + push ax + push [bp+arg_C] + push [bp+arg_A] + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5BBD + add sp, 0Eh + jmp short loc_5E7E +; --------------------------------------------------------------------------- + +loc_5E7C: ; CODE XREF: sub_5D10+55j sub_5D10+79j ... + xor ax, ax + +loc_5E7E: ; CODE XREF: sub_5D10+136j + ; sub_5D10+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_5D10 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5E84 proc far ; CODE XREF: sub_6643+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_3F6A + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+var_4] + or ax, [bp+var_2] + jnz short loc_5ED4 + cmp [bp+arg_0], 80h ; '€' + ja short loc_5EB6 + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_5EBB + +loc_5EB6: ; CODE XREF: sub_5E84+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_5EBB: ; CODE XREF: sub_5E84+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_5EDA +; --------------------------------------------------------------------------- + +loc_5ED4: ; CODE XREF: sub_5E84+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_5EDA: ; CODE XREF: sub_5E84+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_5E84 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + cmp dx, [bp+8] + jnz short loc_5F08 + cmp ax, [bp+6] + jnz short loc_5F08 + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_5F15 +; --------------------------------------------------------------------------- + +loc_5F08: ; CODE XREF: seg000:5EF5j seg000:5EFAj + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + +loc_5F15: ; CODE XREF: seg000:5F06j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_5F19 proc near ; CODE XREF: sub_77AA+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_5D10 + add sp, 0Eh + or ax, ax + jz short loc_5F43 + jmp loc_5FDF +; --------------------------------------------------------------------------- + +loc_5F43: ; CODE XREF: sub_5F19+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_5FD3 + push [bp+arg_6] + push [bp+arg_4] + mov ax, 1 + push ax + les bx, [bp+arg_8] + push word ptr es:[bx+8] + push word ptr es:[bx+6] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5D10 + add sp, 0Eh + or ax, ax + jnz short loc_5FDF + les bx, [bp+arg_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+arg_8+2], dx + mov word ptr [bp+arg_8], ax + les bx, [bp+arg_8] + mov ax, es:[bx+2] + mov [bp+var_4], ax + test byte ptr [bp+var_4], 10h + jz short loc_6016 + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_8+2] + push word ptr [bp+arg_8] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_5D10 + add sp, 0Eh + or ax, ax + jnz short loc_5FDF + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_6016 + +loc_5FD3: ; CODE XREF: sub_5F19+42j + test byte ptr [bp+var_4], 10h + jz short loc_6016 + test [bp+arg_C], 1 + jz short loc_5FE4 + +loc_5FDF: ; CODE XREF: sub_5F19+27j sub_5F19+67j ... + mov ax, 1 + jmp short loc_6018 +; --------------------------------------------------------------------------- + +loc_5FE4: ; CODE XREF: sub_5F19+C4j + test byte ptr [bp+var_2], 10h + jz short loc_6016 + test byte ptr [bp+var_2+1], 20h + jz short loc_5FF6 + test byte ptr [bp+var_4+1], 20h + jz short loc_6016 + +loc_5FF6: ; CODE XREF: sub_5F19+D5j + test byte ptr [bp+var_4], 40h + jz short loc_6016 + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_6012 + mov ax, 1 + jmp short loc_6014 +; --------------------------------------------------------------------------- + +loc_6012: ; CODE XREF: sub_5F19+F2j + xor ax, ax + +loc_6014: ; CODE XREF: sub_5F19+F7j + jmp short loc_6018 +; --------------------------------------------------------------------------- + +loc_6016: ; CODE XREF: sub_5F19+88j sub_5F19+B8j ... + xor ax, ax + +loc_6018: ; CODE XREF: sub_5F19+C9j + ; sub_5F19:loc_6014j + pop di + pop si + mov sp, bp + pop bp + retn +sub_5F19 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_601E proc near ; CODE XREF: sub_6643+263p + ; sub_72EF+1FDp + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = dword ptr 0Ch +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+var_2], ax + push ds + mov ds, [bp+var_2] + mov ax, [bp+arg_C] + and ax, 1 + mov [bp+var_4], ax + test byte ptr [bp+arg_C], 4 + jz short loc_6049 + or [bp+var_4], 2 + +loc_6049: ; CODE XREF: sub_601E+25j + test byte ptr [bp+arg_C], 2 + jz short loc_605D + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_605D + or [bp+var_4], 20h + +loc_605D: ; CODE XREF: sub_601E+2Fj sub_601E+39j + test byte ptr [bp+arg_C], 20h + jz short loc_6067 + or [bp+var_4], 8 + +loc_6067: ; CODE XREF: sub_601E+43j + test byte ptr [bp+arg_C], 80h + jz short loc_6071 + or [bp+var_4], 10h + +loc_6071: ; CODE XREF: sub_601E+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_607A + jmp loc_61FF +; --------------------------------------------------------------------------- + +loc_607A: ; CODE XREF: sub_601E+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_6085 + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_6085: ; CODE XREF: sub_601E+62j + add bx, bx + jmp cs:off_633C[bx] + +loc_608C: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:off_633Co + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_609E: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6305 +; --------------------------------------------------------------------------- + +loc_60B0: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_60D6 +; --------------------------------------------------------------------------- + +loc_60C4: ; CODE XREF: sub_601E+69j + ; sub_601E+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_60D6: ; CODE XREF: sub_601E+A4j + add sp, 0Ah + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_60DC: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_60EB: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_60FA: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6120 +; --------------------------------------------------------------------------- + +loc_610E: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6120: ; CODE XREF: sub_601E+EEj + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_6123: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_6133: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_613B: ; CODE XREF: sub_601E+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_6143: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6151: ; CODE XREF: sub_601E+263j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6167 +; --------------------------------------------------------------------------- + +loc_6156: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6164: ; CODE XREF: sub_601E+272j + call [bp+arg_8] + +loc_6167: ; CODE XREF: sub_601E+136j + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_616A: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6184 +; --------------------------------------------------------------------------- + +loc_6178: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_6181: ; CODE XREF: sub_601E+205j + call [bp+arg_8] + +loc_6184: ; CODE XREF: sub_601E+158j + ; sub_601E+1FCj + pop cx + pop cx + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_6189: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + pop ds + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_61A0: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6305 +; --------------------------------------------------------------------------- + +loc_61B7: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_61C0: ; CODE XREF: sub_601E+234j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_61D1 +; --------------------------------------------------------------------------- + +loc_61C5: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_61CE: ; CODE XREF: sub_601E+23Dj + call [bp+arg_8] + +loc_61D1: ; CODE XREF: sub_601E+1A5j + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_61D4: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_61E8: ; CODE XREF: sub_601E+69j + ; sub_601E+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_6305 +; --------------------------------------------------------------------------- + +loc_61FC: ; CODE XREF: sub_601E+69j + ; sub_601E+1EEj + ; DATA XREF: ... + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_61FF: ; CODE XREF: sub_601E+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_620A + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_620A: ; CODE XREF: sub_601E+1E7j + add bx, bx + jmp cs:off_630C[bx] + +loc_6211: ; DATA XREF: seg000:off_630Co + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6184 +; --------------------------------------------------------------------------- + +loc_621D: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:630Eo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_6181 +; --------------------------------------------------------------------------- + +loc_6226: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6310o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6246 +; --------------------------------------------------------------------------- + +loc_6237: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6312o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_8] + +loc_6246: ; CODE XREF: sub_601E+217j + add sp, 8 + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_624C: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6314o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_61C0 +; --------------------------------------------------------------------------- + +loc_6255: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6316o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_61CE +; --------------------------------------------------------------------------- + +loc_625E: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:631Co + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_6305 +; --------------------------------------------------------------------------- + +loc_626C: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:631Eo + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_613B +; --------------------------------------------------------------------------- + +loc_6275: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6318o ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6151 +; --------------------------------------------------------------------------- + +loc_6284: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:631Ao ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6164 +; --------------------------------------------------------------------------- + +loc_6293: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:632Co + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_629F: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:632Eo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62AB: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6330o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + pop cx + pop ds + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62BD: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6332o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62CF: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6334o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62DA: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6336o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62E5: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:6338o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp short loc_6305 +; --------------------------------------------------------------------------- + +loc_62F5: ; CODE XREF: sub_601E+1EEj + ; DATA XREF: seg000:633Ao + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop ds + jmp short $+2 + +loc_6305: ; CODE XREF: sub_601E+64j sub_601E+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_601E endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_630C dw offset loc_6211 ; DATA XREF: sub_601E+1EEr + dw offset loc_621D + dw offset loc_6226 + dw offset loc_6237 + dw offset loc_624C + dw offset loc_6255 + dw offset loc_6275 + dw offset loc_6284 + dw offset loc_625E + dw offset loc_626C + dw offset loc_6275 + dw offset loc_6284 + dw offset loc_6305 + dw offset loc_6305 + dw offset loc_6305 + dw offset loc_6305 + dw offset loc_6293 + dw offset loc_629F + dw offset loc_62AB + dw offset loc_62BD + dw offset loc_62CF + dw offset loc_62DA + dw offset loc_62E5 + dw offset loc_62F5 +off_633C dw offset loc_608C ; DATA XREF: sub_601E+69r + dw offset loc_609E + dw offset loc_60B0 + dw offset loc_60C4 + dw offset loc_60DC + dw offset loc_60EB + dw offset loc_60FA + dw offset loc_610E + dw offset loc_6123 + dw offset loc_6133 + dw offset loc_6143 + dw offset loc_6156 + dw offset loc_61FC + dw offset loc_61FC + dw offset loc_61FC + dw offset loc_61FC + dw offset loc_616A + dw offset loc_6178 + dw offset loc_6189 + dw offset loc_61A0 + dw offset loc_61B7 + dw offset loc_61C5 + dw offset loc_61D4 + dw offset loc_61E8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_636C proc near ; CODE XREF: sub_6643+2BCp + ; sub_6FFB+2Bp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp [bp+arg_A], 0 + jz short loc_637F + mov ax, 2 + jmp short loc_6381 +; --------------------------------------------------------------------------- + +loc_637F: ; CODE XREF: sub_636C+Cj + xor ax, ax + +loc_6381: ; CODE XREF: sub_636C+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_63A7 + or [bp+var_6], 2 + +loc_63A7: ; CODE XREF: sub_636C+35j + test byte ptr [bp+arg_8], 2 + jz short loc_63BB + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_63BB + or [bp+var_6], 20h + +loc_63BB: ; CODE XREF: sub_636C+3Fj sub_636C+49j + test byte ptr [bp+arg_8], 20h + jz short loc_63C5 + or [bp+var_6], 8 + +loc_63C5: ; CODE XREF: sub_636C+53j + test byte ptr [bp+arg_8], 80h + jz short loc_63CF + or [bp+var_6], 10h + +loc_63CF: ; CODE XREF: sub_636C+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_63DA + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_63DA: ; CODE XREF: sub_636C+69j + add bx, bx + jmp cs:off_64F4[bx] + +loc_63E1: ; DATA XREF: seg000:off_64F4o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_63EF: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:64F6o + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_63FD: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:64F8o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + add sp, 6 + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_640F: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:64FAo + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + add sp, 6 + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_6421: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:64FCo + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6487 +; --------------------------------------------------------------------------- + +loc_642C: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:64FEo + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_6484 +; --------------------------------------------------------------------------- + +loc_6434: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6500o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_644E +; --------------------------------------------------------------------------- + +loc_6442: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6502o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_644E: ; CODE XREF: sub_636C+D4j + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_6451: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6504o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_645F: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6506o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_64ED +; --------------------------------------------------------------------------- + +loc_646D: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6508o + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6487 +; --------------------------------------------------------------------------- + +loc_647B: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:650Ao + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_6484: ; CODE XREF: sub_636C+C6j + call [bp+arg_4] + +loc_6487: ; CODE XREF: sub_636C+BEj + ; sub_636C+10Dj + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_6489: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6514o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_6495: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6516o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64A1: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6518o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop ds + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64AF: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:651Ao + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64BD: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:651Co + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64C8: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:651Eo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64D3: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6520o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_64ED +; --------------------------------------------------------------------------- + +loc_64E0: ; CODE XREF: sub_636C+70j + ; DATA XREF: seg000:6522o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_64ED: ; CODE XREF: sub_636C+6Bj sub_636C+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_636C endp + +; --------------------------------------------------------------------------- +off_64F4 dw offset loc_63E1 ; DATA XREF: sub_636C+70r + dw offset loc_63EF + dw offset loc_63FD + dw offset loc_640F + dw offset loc_6421 + dw offset loc_642C + dw offset loc_6434 + dw offset loc_6442 + dw offset loc_6451 + dw offset loc_645F + dw offset loc_646D + dw offset loc_647B + dw offset loc_64ED + dw offset loc_64ED + dw offset loc_64ED + dw offset loc_64ED + dw offset loc_6489 + dw offset loc_6495 + dw offset loc_64A1 + dw offset loc_64AF + dw offset loc_64BD + dw offset loc_64C8 + dw offset loc_64D3 + dw offset loc_64E0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6524 proc near ; CODE XREF: sub_816B+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_654F + or [bp+var_4], 2 + +loc_654F: ; CODE XREF: sub_6524+25j + test byte ptr [bp+arg_8], 2 + jz short loc_6559 + or [bp+var_4], 4 + +loc_6559: ; CODE XREF: sub_6524+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_6563 + or [bp+var_4], 8 + +loc_6563: ; CODE XREF: sub_6524+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_65D6 + add bx, bx + jmp cs:off_65DD[bx] + +loc_6572: ; DATA XREF: seg000:off_65DDo + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_657B: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65DFo + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_6584: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65E1o + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_6598 +; --------------------------------------------------------------------------- + +loc_658F: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65E3o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_6598: ; CODE XREF: sub_6524+69j + pop cx + pop cx + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_659C: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65E5o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_65AA +; --------------------------------------------------------------------------- + +loc_65A4: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65E7o + push [bp+arg_0] + call [bp+arg_4] + +loc_65AA: ; CODE XREF: sub_6524+7Ej + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_65AC: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65EDo + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_65B6: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65EFo + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_65D6 +; --------------------------------------------------------------------------- + +loc_65C0: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65E9o ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_65D4 +; --------------------------------------------------------------------------- + +loc_65CB: ; CODE XREF: sub_6524+49j + ; DATA XREF: seg000:65EBo ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_65D4: ; CODE XREF: sub_6524+A5j + jmp short $+2 + +loc_65D6: ; CODE XREF: sub_6524+45j sub_6524+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6524 endp + +; --------------------------------------------------------------------------- +off_65DD dw offset loc_6572 ; DATA XREF: sub_6524+49r + dw offset loc_657B + dw offset loc_6584 + dw offset loc_658F + dw offset loc_659C + dw offset loc_65A4 + dw offset loc_65C0 + dw offset loc_65CB + dw offset loc_65AC + dw offset loc_65B6 + dw offset loc_65C0 + dw offset loc_65CB + db 4 dup(0), 0B3h, 68h + dw seg seg000 + db 14h dup(0), 0Ch, 69h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0F5h, 65h + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 0Dh, 66h + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_6643(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_6643 proc far ; 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, 6625h + 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_66CF +; --------------------------------------------------------------------------- + +loc_66AC: ; CODE XREF: sub_6643+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_66CC + les bx, [bp+var_34] + mov al, es:[bx] + les bx, [bp+var_38] + mov es:[bx], al + inc word ptr [bp+var_38] + +loc_66CC: ; CODE XREF: sub_6643+78j + inc word ptr [bp+var_34] + +loc_66CF: ; CODE XREF: sub_6643+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_66AC + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + les bx, [bp+var_22] + mov ax, es:[bx] + mov [bp+n], ax + les bx, [bp+var_22] + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_672C + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_672E +; --------------------------------------------------------------------------- + +loc_672C: ; CODE XREF: sub_6643+DEj + xor ax, ax + +loc_672E: ; CODE XREF: sub_6643+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_6748 + les bx, [bp+var_26] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + +loc_6748: ; CODE XREF: sub_6643+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_5E84 + pop cx + mov word ptr [bp+var_30+2], dx + mov word ptr [bp+var_30], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + mov es:[bx+0Ch], ax + les bx, [bp+var_30] + mov ax, [bp+n] + mov es:[bx+0Eh], ax + les bx, [bp+var_30] + mov ax, [bp+var_2A] + mov es:[bx+14h], ax + les bx, [bp+var_30] + mov ax, [bp+var_2C] + mov es:[bx+16h], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_26+2] + mov ax, word ptr [bp+var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, [bp+var_30] + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, [bp+var_30] + mov word ptr es:[bx+24h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+18h], ds + les bx, [bp+var_30] + mov word ptr es:[bx+1Ch], seg seg000 + mov word ptr es:[bx+1Ah], 5EE0h + les bx, [bp+var_30] + mov ax, [bp+arg_14] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_10] + mov es:[bx+22h], ax + les bx, [bp+var_30] + mov byte ptr es:[bx+39h], 0 + les bx, [bp+var_30] + mov byte ptr es:[bx+38h], 1 + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_68D2 + 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_601E + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_68BD +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_68BD: ; CODE XREF: sub_6643+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_68D2: ; CODE XREF: sub_6643+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_6916 + test byte ptr [bp+var_2C], 2 + jz short loc_6916 + mov [bp+var_12], 12h + mov ax, 1 + push ax + les bx, [bp+var_22] + push word ptr es:[bx+22h] + les bx, [bp+var_22] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_636C + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_6916 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_6916: ; CODE XREF: sub_6643+293j + ; sub_6643+299j ... + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+var_46], dx + mov [bp+var_48], ax + mov dx, [bp+arg_1C] + mov ax, [bp+arg_1A] + mov [bp+var_42], dx + mov [bp+var_44], ax + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov [bp+var_3E], dx + mov [bp+var_40], ax + push ss + lea ax, [bp+var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nop + push cs + call near ptr _RaiseException + add sp, 10h + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_6643 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:3600p + ; xalloc::raise(void)+6Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], bp + mov bx, [bp+var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + xor ax, ax + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_18] ; int + push [bp+arg_16] ; int + push [bp+arg_14] ; int + push [bp+arg_12] ; int + push [bp+arg_10] ; int + push [bp+arg_E] ; int + push [bp+arg_C] ; int + push [bp+arg_A] ; int + push [bp+arg_8] ; int + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push [bp+arg_2] ; int + push [bp+arg_0] ; int + push cs + call near ptr sub_6643 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ThrowException$qnvt1t1t1uiuiuinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _ReThrowException(unsigned int, unsigned char *) +@_ReThrowException$quinuc proc far + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+var_A], bp + mov bx, [bp+var_A] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, word ptr [bp+var_8] + or ax, word ptr [bp+var_8+2] + jnz short loc_6A06 + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_6A06: ; 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_6A52 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_6A5B +; --------------------------------------------------------------------------- + +loc_6A52: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_6A5B: ; 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_6643 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ReThrowException$quinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_6A75 proc far ; CODE XREF: sub_6A7A+22p + push si + push di + pop di + pop si + retf +sub_6A75 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6A7A proc far ; 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_6A94 + inc [bp+var_4] + +loc_6A94: ; CODE XREF: sub_6A7A+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_6A75 + jmp short loc_6AE2 +; --------------------------------------------------------------------------- + +loc_6AA1: ; CODE XREF: sub_6A7A+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_6ACC + mov ax, dx + jmp short loc_6B00 +; --------------------------------------------------------------------------- + +loc_6ACC: ; CODE XREF: sub_6A7A+4Cj + cmp [bp+var_4], 0 + jz short loc_6AD9 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_6AD9: ; CODE XREF: sub_6A7A+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_6AE2: ; CODE XREF: sub_6A7A+25j + cmp [bp+var_2], 0FFFFh + jz short loc_6AF0 + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_6AA1 + +loc_6AF0: ; CODE XREF: sub_6A7A+6Cj + cmp [bp+var_4], 0 + jz short loc_6AFD + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_6AFD: ; CODE XREF: sub_6A7A+7Aj + mov ax, 1 + +loc_6B00: ; CODE XREF: sub_6A7A+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_6A7A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Global_unwind proc far ; 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_6B31 + mov [bp+var_4A], 0 + mov [bp+var_4C], 26h ; '&' + mov [bp+var_46], 0 + mov [bp+var_48], 2 + mov [bp+var_3E], 0 + lea dx, [bp+var_4C] + +loc_6B31: ; 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_6A7A + add sp, 8 + pop di + pop si + mov sp, bp + pop bp + retf +__Global_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_6B4D proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_6B4D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_6643+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 6FC4 SIZE 0000000D BYTES + + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, sp + sub sp, 186h + lea ax, [bp+var_86] + push ax + push cs + call near ptr sub_6B4D + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_E76A, 3 + jnb short loc_6B7B + jmp loc_6C31 +; --------------------------------------------------------------------------- + +loc_6B7B: ; 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_6C7A +; --------------------------------------------------------------------------- + +loc_6C31: ; 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_6C7A: ; 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_6CAB + cmp [bp+arg_0], 0FACEh + jnz short loc_6CAB + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_6CB9 +; --------------------------------------------------------------------------- + +loc_6CAB: ; 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_6CB9: ; 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_6D8A + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_6D8A: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_6DA2 + ja short loc_6D98 + cmp [bp+arg_8], 0Fh + jbe short loc_6DA2 + +loc_6D98: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_6DA2: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_6DD8 +; --------------------------------------------------------------------------- + +loc_6DAF: ; 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_6DD8: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_6DAF + jnz short loc_6DE9 + cmp ax, [bp+arg_8] + jb short loc_6DAF + +loc_6DE9: ; 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_6A7A + add sp, 8 + or ax, ax + jnz short loc_6E34 + test byte ptr [bp+arg_4], 1 + jz short loc_6E54 + mov [bp+var_54], 0C000h + mov [bp+var_56], 25h ; '%' + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov [bp+var_50], dx + mov [bp+var_52], ax + mov [bp+var_4A], 0 + mov [bp+var_4C], 0 + mov [bp+var_4E], 0 + mov [bp+var_48], 0 + jmp short loc_6DE9 +; --------------------------------------------------------------------------- + +loc_6E34: ; 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_6A7A + add sp, 8 + or ax, ax + jz short loc_6E54 + jmp loc_6FBF +; --------------------------------------------------------------------------- + +loc_6E54: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_E76A, 3 + jnb short loc_6E5E + jmp loc_6F3E +; --------------------------------------------------------------------------- + +loc_6E5E: ; 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_6FC4 +; --------------------------------------------------------------------------- + +loc_6F3E: ; 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_6FC4 +; --------------------------------------------------------------------------- + +loc_6FBF: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_6FC4: ; CODE XREF: _RaiseException+3E9j + ; _RaiseException+46Bj + mov sp, bp + pop es + pop ds + pop di + pop si + pop bp + pop bx + pop bx + pop dx + pop cx + pop ax + retf +; END OF FUNCTION CHUNK FOR _RaiseException +; --------------------------------------------------------------------------- + db 4 dup(0), 33h, 70h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0D1h, 6Fh + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6FFB proc near ; CODE XREF: sub_704B+58p sub_704B+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, 6FE9h + 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_636C + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_703D +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_703D: ; CODE XREF: sub_6FFB+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_6FFB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_704B proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_7595+138p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + cmp byte ptr es:[bx+38h], 0 + jz short loc_70C6 + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_70BE + 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_6FFB + 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_70BE: ; CODE XREF: sub_704B+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_70C6: ; CODE XREF: sub_704B+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_711D + les bx, [bp+arg_0] + mov dx, es:[bx+34h] + mov ax, es:[bx+32h] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + test byte ptr es:[bx+2], 2 + jz short loc_7115 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_7115 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push ss + les bx, [bp+arg_0] + push word ptr es:[bx+36h] + call sub_6FFB + add sp, 0Ah + +loc_7115: ; CODE XREF: sub_704B+9Ej sub_704B+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_711D: ; CODE XREF: sub_704B+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_704B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _CatchCleanup(void) +@_CatchCleanup$qv proc far ; CODE XREF: ___call_terminate+69p + ; sub_6643+277p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_4] + mov ax, es:[bx+24h] + mov [bp+var_6], ax + mov bx, [bp+var_6] + les ax, ss:[bx+arg_0] + mov bx, [bp+var_6] + add ax, ss:[bx+arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+var_6] + mov ss:[bx+arg_6], ax + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + call sub_704B + pop cx + pop cx + push ds + les bx, [bp+var_4] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + les bx, [bp+var_4] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + pop di + pop si + mov sp, bp + pop bp + retf +@_CatchCleanup$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_71A0 proc near ; CODE XREF: sub_71A0+A0p sub_726C+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_71A8: ; CODE XREF: sub_71A0+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_71C5 + xor ax, ax + jmp loc_7266 +; --------------------------------------------------------------------------- + +loc_71C5: ; CODE XREF: sub_71A0+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_71F1 + les bx, [bp+var_8] + mov ax, es:[bx] + mov dx, word ptr [bp+var_8+2] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_71F1: ; CODE XREF: sub_71A0+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_5B20 + add sp, 8 + or ax, ax + jnz short loc_724A + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_725F + les bx, [bp+var_4] + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + add ax, es:[bx+0Ah] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_C] + or ax, [bp+var_A] + jz short loc_725F + lea ax, [bp+var_8] + push ax + push [bp+arg_8] + push [bp+arg_6] + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + call sub_71A0 + add sp, 0Ch + or ax, ax + jz short loc_725F + +loc_724A: ; CODE XREF: sub_71A0+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_7266 +; --------------------------------------------------------------------------- + +loc_725F: ; CODE XREF: sub_71A0+70j sub_71A0+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_71A8 +; --------------------------------------------------------------------------- + +loc_7266: ; CODE XREF: sub_71A0+22j sub_71A0+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_71A0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_726C proc far ; CODE XREF: sub_72EF+159p + ; sub_72EF+1C2p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_72DD + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + xor ax, ax + push ax + push [bp+var_2] + push [bp+var_4] + call sub_71A0 + add sp, 0Ch + or ax, ax + jnz short loc_72DD + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ch] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + mov ax, 1 + push ax + push [bp+var_2] + push [bp+var_4] + call sub_71A0 + add sp, 0Ch + or ax, ax + jz short loc_72E5 + +loc_72DD: ; CODE XREF: sub_726C+Ej sub_726C+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_72E9 +; --------------------------------------------------------------------------- + +loc_72E5: ; CODE XREF: sub_726C+6Fj + xor dx, dx + xor ax, ax + +loc_72E9: ; CODE XREF: sub_726C+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_726C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_72EF proc near ; 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_731E + jmp loc_758F +; --------------------------------------------------------------------------- + +loc_731E: ; CODE XREF: sub_72EF+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_732B + jmp loc_758F +; --------------------------------------------------------------------------- + +loc_732B: ; CODE XREF: sub_72EF+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_739F + les bx, [bp+var_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov dx, es:[bx+2] + +loc_739F: ; CODE XREF: sub_72EF+96j + test cl, 10h + jz short loc_73C7 + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_73C7 + push [bp+n] ; n + xor ax, ax + push ax ; c + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; s + nop + push cs + call near ptr _memset + add sp, 8 + jmp loc_74F2 +; --------------------------------------------------------------------------- + +loc_73C7: ; CODE XREF: sub_72EF+B3j sub_72EF+BDj + test dl, 1 + jnz short loc_73CF + jmp loc_7473 +; --------------------------------------------------------------------------- + +loc_73CF: ; CODE XREF: sub_72EF+DBj + test cl, 30h + jnz short loc_73D7 + jmp loc_7473 +; --------------------------------------------------------------------------- + +loc_73D7: ; CODE XREF: sub_72EF+E3j + test cl, 20h + jz short loc_73DE + jmp short loc_7401 +; --------------------------------------------------------------------------- + +loc_73DE: ; CODE XREF: sub_72EF+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_7408 + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_7401: ; CODE XREF: sub_72EF+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_7408: ; CODE XREF: sub_72EF+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_5B20 + add sp, 8 + or ax, ax + jnz short loc_7469 + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + mov [bp+var_16], dx + mov [bp+var_18], ax + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_726C + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + cmp dx, [bp+var_16] + jnz short loc_7464 + cmp ax, [bp+var_18] + jz short loc_7469 + +loc_7464: ; CODE XREF: sub_72EF+16Ej + mov [bp+var_14], 1 + +loc_7469: ; CODE XREF: sub_72EF+133j + ; sub_72EF+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_753D +; --------------------------------------------------------------------------- + +loc_7473: ; CODE XREF: sub_72EF+DDj sub_72EF+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_74F9 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push cs + call near ptr sub_5B20 + add sp, 8 + or ax, ax + jnz short loc_74C2 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_726C + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_74C2: ; CODE XREF: sub_72EF+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_7540 + les bx, [bp+arg_0] + push word ptr es:[bx+0Eh] + les bx, [bp+arg_0] + push word ptr es:[bx+0Ch] + push word ptr es:[bx+0Ah] + push word ptr [bp+src+2] + push word ptr [bp+src] + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] + call sub_601E + add sp, 0Eh + +loc_74F2: ; CODE XREF: sub_72EF+D5j + ; sub_72EF+227j + mov [bp+var_14], 1 + jmp short loc_7559 +; --------------------------------------------------------------------------- + +loc_74F9: ; CODE XREF: sub_72EF+18Cj + test cl, 20h + jz short loc_7518 + push [bp+n] ; n + push ss + lea ax, [bp+src] + push ax ; src + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + jmp short loc_74F2 +; --------------------------------------------------------------------------- + +loc_7518: ; CODE XREF: sub_72EF+20Dj + test cl, 10h + jz short loc_7540 + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_7540 + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_10], ds + mov [bp+var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+var_12] + +loc_753D: ; CODE XREF: sub_72EF+181j + push ax + jmp short loc_7549 +; --------------------------------------------------------------------------- + +loc_7540: ; CODE XREF: sub_72EF+1DBj + ; sub_72EF+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_7549: ; CODE XREF: sub_72EF+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_7559: ; CODE XREF: sub_72EF+208j + cmp [bp+var_14], 0 + jnz short loc_758F + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_7587 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_6FFB + add sp, 0Ah + +loc_7587: ; CODE XREF: sub_72EF+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_758F: ; CODE XREF: sub_72EF+2Cj sub_72EF+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_72EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7595 proc near ; 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_773A +; --------------------------------------------------------------------------- + +loc_75ED: ; CODE XREF: sub_7595+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_7628 + jmp loc_7737 +; --------------------------------------------------------------------------- + +loc_7628: ; CODE XREF: sub_7595+8Ej + add bx, bx + jmp cs:off_7754[bx] + +loc_762F: ; DATA XREF: seg000:off_7754o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_FCF6+2, dx + mov word ptr dword_FCF6, ax + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 1 + push ds + pop es + assume es:dseg + push ds + mov ds, [bp+var_C] + push bp + mov bp, [bp+var_A] + call es:dword_FCF6 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_7737 +; --------------------------------------------------------------------------- + +loc_766A: ; CODE XREF: sub_7595+95j + ; DATA XREF: seg000:775Co + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_7699 +; --------------------------------------------------------------------------- + +loc_7679: ; CODE XREF: sub_7595+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_7693 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_7693 + jmp short loc_76B3 +; --------------------------------------------------------------------------- + +loc_7693: ; CODE XREF: sub_7595+EEj sub_7595+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_7699: ; CODE XREF: sub_7595+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_7679 + +loc_76B3: ; CODE XREF: sub_7595+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_704B + pop cx + pop cx + push ds + les bx, [bp+var_16] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_16+2] + push word ptr [bp+var_16] + les bx, [bp+var_16] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + jmp short loc_7737 +; --------------------------------------------------------------------------- + +loc_76EC: ; CODE XREF: sub_7595+95j + ; DATA XREF: seg000:775Eo + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1C], ax + add [bp+var_12], 2 + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1E], ds + mov [bp+var_20], ax + mov ax, word ptr [bp+var_4+2] + mov dx, [bp+var_20] + mov [bp+var_1E], ax + mov [bp+var_20], dx + push [bp+var_A] + push [bp+arg_0] + mov ax, [bp+var_1C] + add ax, [bp+var_E] + cwd + push dx + push ax + push [bp+var_1E] + push [bp+var_20] + call sub_816B + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_7737: ; CODE XREF: sub_7595+90j sub_7595+95j ... + mov ax, [bp+var_8] + +loc_773A: ; CODE XREF: sub_7595+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_774E + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_774E + jmp loc_75ED +; --------------------------------------------------------------------------- + +loc_774E: ; CODE XREF: sub_7595+1ACj + ; sub_7595+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7595 endp + +; --------------------------------------------------------------------------- +off_7754 dw offset loc_762F ; DATA XREF: sub_7595+95r + dw offset loc_7737 + dw offset loc_7737 + dw offset loc_7737 + dw offset loc_766A + dw offset loc_76EC + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Local_unwind proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + push [bp+arg_0] + push [bp+var_2] + call sub_7595 + pop cx + pop cx + pop di + pop si + mov sp, bp + pop bp + retf +__Local_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Return_unwind proc far + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + xor ax, ax + push ax + push [bp+var_2] + call sub_7595 + pop cx + pop cx + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov ss:14h, ax + pop di + pop si + mov sp, bp + pop bp + retf +__Return_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_77AA proc near ; 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_7818 +; --------------------------------------------------------------------------- + +loc_77C3: ; CODE XREF: sub_77AA+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_780C + xor ax, ax + push ax + les bx, [bp+arg_4] + push word ptr es:[bx+0Ch] + push [bp+var_6] + push [bp+var_8] + les bx, [bp+arg_4] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call sub_5F19 + add sp, 10h + or ax, ax + jz short loc_7814 + +loc_780C: ; CODE XREF: sub_77AA+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_7828 +; --------------------------------------------------------------------------- + +loc_7814: ; CODE XREF: sub_77AA+60j + add word ptr [bp+var_4], 10h + +loc_7818: ; CODE XREF: sub_77AA+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_77C3 + xor dx, dx + xor ax, ax + +loc_7828: ; CODE XREF: sub_77AA+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_77AA endp + +; --------------------------------------------------------------------------- + db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__ExceptionHandler proc far ; 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_78C2 + jmp loc_796A +; --------------------------------------------------------------------------- + +loc_78C2: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_7595 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_78DB + jmp loc_7B9D +; --------------------------------------------------------------------------- + +loc_78DB: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_78E5 + jmp loc_7B9D +; --------------------------------------------------------------------------- + +loc_78E5: ; 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_7900 + jmp loc_7B9D +; --------------------------------------------------------------------------- + +loc_7900: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_793E +; --------------------------------------------------------------------------- + +loc_7902: ; 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_5F19 + add sp, 10h + or ax, ax + jz short loc_793A + jmp loc_7B9D +; --------------------------------------------------------------------------- + +loc_793A: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_793E: ; CODE XREF: __ExceptionHandler:loc_7900j + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_7902 + mov ax, ss:14h + mov word ptr [bp+var_24+2], ax + mov bx, [bp+var_4] + mov ax, ss:[bx] + mov ss:14h, ax + nop + push cs + call near ptr ___call_unexpected +; --------------------------------------------------------------------------- + mov ax, word ptr [bp+var_24+2] + mov ss:14h, ax + jmp loc_7B9D +; --------------------------------------------------------------------------- + +loc_796A: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_7B91 +; --------------------------------------------------------------------------- + +loc_7974: ; 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_79A5 + jmp loc_7B8E +; --------------------------------------------------------------------------- + +loc_79A5: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_7BA6[bx] + +loc_79AC: ; DATA XREF: seg000:7BACo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_79BA + jmp loc_7B8E +; --------------------------------------------------------------------------- + +loc_79BA: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_79C4 + jmp loc_7B8E +; --------------------------------------------------------------------------- + +loc_79C4: ; 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_77AA + add sp, 8 + mov word ptr [bp+var_24+2], dx + mov word ptr [bp+var_24], ax + mov ax, word ptr [bp+var_24] + or ax, word ptr [bp+var_24+2] + jnz short loc_79FE + jmp loc_7B8E +; --------------------------------------------------------------------------- + +loc_79FE: ; 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_7A32: ; 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_7595 + pop cx + pop cx + mov bx, [bp+var_4] + mov ax, [bp+var_2E] + mov ss:[bx+arg_6], ax + cmp word ptr [bp+var_20+2], 3 + jnz short loc_7A84 + push [bp+var_16] + push [bp+var_26] + push [bp+var_28] + push word ptr [bp+var_C+2] + push word ptr [bp+var_C] + push [bp+var_4] + push word ptr [bp+var_24+2] + push word ptr [bp+var_24] + call sub_72EF + add sp, 10h + +loc_7A84: ; 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_7B8E +; --------------------------------------------------------------------------- + +loc_7A9D: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7BA8o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7AB2 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7AB2 + jmp loc_7B8E +; --------------------------------------------------------------------------- + +loc_7AB2: ; 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_FCFA+2, dx + mov word ptr dword_FCFA, ax + mov ax, ds + mov es, ax + assume es:dseg + push si + mov si, [bp+var_1C] + push ds + mov ds, [bp+var_1A] + push bp + mov bp, [bp+var_16] + call es:dword_FCFA + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_7B49 +; --------------------------------------------------------------------------- + +loc_7B14: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:7BAAo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_7B28 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_7B28 + jmp short loc_7B8E +; --------------------------------------------------------------------------- + +loc_7B28: ; 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_7B49: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_7B67 + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_7B63 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_7B63: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_7BA0 +; --------------------------------------------------------------------------- + +loc_7B67: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_7B6F + jmp short loc_7B8E +; --------------------------------------------------------------------------- + +loc_7B6F: ; 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_7A32 +; --------------------------------------------------------------------------- + +loc_7B8E: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_7B91: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_7B9D + jmp loc_7974 +; --------------------------------------------------------------------------- + +loc_7B9D: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_7BA0: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_7BA6 dw offset loc_7B8E ; DATA XREF: __ExceptionHandler+171r + dw offset loc_7A9D + dw offset loc_7B14 + dw offset loc_79AC + dw offset loc_7B8E + dw offset loc_7B8E + db 4 dup(0), 45h, 7Ch + dw seg seg000 + db 14h dup(0), 55h, 7Ch + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0CAh, 7Bh + dw seg seg000 + db 2 dup(0), 4, 0, 6, 0, 3, 0, 0B2h, 7Bh + dw seg seg000 + db 6, 0, 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7C00 proc far ; CODE XREF: sub_7CED+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, 7BE2h + 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_636C + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_7C4E +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7C4E: ; CODE XREF: sub_7C00+43j + mov [bp+var_12], 0 + jmp short loc_7C5E +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7C5E: ; CODE XREF: sub_7C00+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_7C00 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7C6C proc far ; CODE XREF: sub_7CED+DCp + ; sub_7CED+162p ... + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_C] + jmp short loc_7CDB +; --------------------------------------------------------------------------- + +loc_7C79: ; CODE XREF: sub_7C6C+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_7CA1 + les bx, [bp+var_4] + mov ax, es:[bx] + mov dx, word ptr [bp+var_4+2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_7CA1: ; CODE XREF: sub_7C6C+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_7CDB + push [bp+arg_10] + xor ax, ax + push ax + xor ax, ax + push ax + push cx + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + nop + push cs + call near ptr sub_7CED + add sp, 10h + xor cx, cx + +loc_7CDB: ; CODE XREF: sub_7C6C+Bj sub_7C6C+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_7C79 + pop di + pop si + mov sp, bp + pop bp + retf +sub_7C6C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7CED proc far ; CODE XREF: sub_7C6C+67p + ; sub_7CED+25Ep ... + +var_2A = word ptr -2Ah +var_28 = word ptr -28h +var_26 = word ptr -26h +var_24 = word ptr -24h +var_22 = dword ptr -22h +var_1E = word ptr -1Eh +var_1C = word ptr -1Ch +var_1A = word ptr -1Ah +var_18 = dword ptr -18h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 2Ah + push si + push di + cmp [bp+arg_C], 0 + jz short loc_7D04 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_7D0B +; --------------------------------------------------------------------------- + +loc_7D04: ; CODE XREF: sub_7CED+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_7D0B: ; CODE XREF: sub_7CED+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_7D2D + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_7D46 + jnz short loc_7D2D + cmp ax, [bp+var_1C] + jb short loc_7D46 + +loc_7D2D: ; CODE XREF: sub_7CED+2Cj sub_7CED+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_7C00 + add sp, 0Ah + jmp loc_7FB2 +; --------------------------------------------------------------------------- + +loc_7D46: ; CODE XREF: sub_7CED+37j sub_7CED+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_7DDF + +loc_7D71: ; CODE XREF: sub_7CED+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_7DDF + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7DD9 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7DD2 + jnz short loc_7DA8 + cmp bx, [bp+var_1C] + jb short loc_7DD2 + +loc_7DA8: ; CODE XREF: sub_7CED+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_7DC2: ; CODE XREF: sub_7CED+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_7C6C + add sp, 12h + jmp loc_7FB2 +; --------------------------------------------------------------------------- + +loc_7DD2: ; CODE XREF: sub_7CED+B2j sub_7CED+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7DD9: ; CODE XREF: sub_7CED+A4j + add word ptr [bp+var_10], 8 + jmp short loc_7D71 +; --------------------------------------------------------------------------- + +loc_7DDF: ; CODE XREF: sub_7CED+82j sub_7CED+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_7DF8: ; CODE XREF: sub_7CED+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_7E6E + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_7E68 + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_7E61 + jnz short loc_7E2F + cmp bx, [bp+var_1C] + jb short loc_7E61 + +loc_7E2F: ; CODE XREF: sub_7CED+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_7C6C + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_7E5E + jmp loc_7FB2 +; --------------------------------------------------------------------------- + +loc_7E5E: ; CODE XREF: sub_7CED+16Cj + jmp loc_7F92 +; --------------------------------------------------------------------------- + +loc_7E61: ; CODE XREF: sub_7CED+139j + ; sub_7CED+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_7E68: ; CODE XREF: sub_7CED+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_7DF8 +; --------------------------------------------------------------------------- + +loc_7E6E: ; CODE XREF: sub_7CED+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_7E87: ; CODE XREF: sub_7CED+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_7EC1 + les bx, [bp+var_22] + mov ax, es:[bx+0Ah] + mov [bp+var_1E], ax + les bx, [bp+var_22] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_22+2], dx + mov word ptr [bp+var_22], ax + +loc_7EC1: ; CODE XREF: sub_7CED+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_7EE5 + jb short loc_7EDB + cmp bx, [bp+var_1C] + jnb short loc_7EE5 + +loc_7EDB: ; CODE XREF: sub_7CED+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_7FAB +; --------------------------------------------------------------------------- + +loc_7EE5: ; CODE XREF: sub_7CED+1E5j + ; sub_7CED+1ECj ... + les bx, [bp+var_18] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+4] + mov [bp+var_24], dx + mov [bp+var_26], ax + les bx, [bp+var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+var_28], dx + mov [bp+var_2A], ax + cmp [bp+var_1E], 1 + jbe short loc_7F31 + push [bp+arg_E] + push [bp+var_1A] + push [bp+var_1C] + les bx, [bp+var_18] + push word ptr es:[bx+2] + push word ptr es:[bx] + push [bp+var_24] + push [bp+var_26] + nop + push cs + call near ptr sub_7FB8 + add sp, 0Eh + jmp short loc_7F51 +; --------------------------------------------------------------------------- + +loc_7F31: ; CODE XREF: sub_7CED+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_7CED + add sp, 10h + +loc_7F51: ; CODE XREF: sub_7CED+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_7F6A + jmp loc_7EE5 +; --------------------------------------------------------------------------- + +loc_7F6A: ; CODE XREF: sub_7CED+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_7C6C + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_7FB2 + +loc_7F92: ; CODE XREF: sub_7CED:loc_7E5Ej + push [bp+arg_E] + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + push word ptr [bp+var_10+2] + push word ptr [bp+var_10] + jmp loc_7DC2 +; --------------------------------------------------------------------------- + +loc_7FAB: ; CODE XREF: sub_7CED+1F5j + add word ptr [bp+var_18], 6 + jmp loc_7E87 +; --------------------------------------------------------------------------- + +loc_7FB2: ; CODE XREF: sub_7CED+56j sub_7CED+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_7CED endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7FB8 proc far ; CODE XREF: sub_7CED+23Cp + ; sub_816B+316p + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+0Ah] + mov [bp+var_6], ax + les bx, [bp+var_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+1Ah] + mov [bp+var_8], 0 + mov [bp+var_A], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jnz short loc_8012 + mov bx, [bp+var_6] + xor cx, cx + mov dx, [bp+var_8] + mov ax, [bp+var_A] + call N_LXMUL@ + mov [bp+arg_A], dx + mov [bp+arg_8], ax + +loc_8012: ; CODE XREF: sub_7FB8+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_80A2 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_808F +; --------------------------------------------------------------------------- + +loc_8070: ; CODE XREF: sub_7FB8+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_808F: ; CODE XREF: sub_7FB8+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_7CED + add sp, 10h + +loc_80A2: ; CODE XREF: sub_7FB8+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_8070 + pop di + pop si + mov sp, bp + pop bp + retf +sub_7FB8 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_80BA proc far ; CODE XREF: sub_816B+1B1p + ; sub_816B+2E4p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_4] + mov bx, cx + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+8] + and ax, 50h + cmp ax, 50h ; 'P' + jnz short loc_815F + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_815F + les bx, [bp+var_4] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_4] + test byte ptr es:[bx+9], 10h + jz short loc_8119 + les bx, [bp+var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + jmp short loc_8122 +; --------------------------------------------------------------------------- + +loc_8119: ; CODE XREF: sub_80BA+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_8122: ; CODE XREF: sub_80BA+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_815F: ; CODE XREF: sub_80BA+27j sub_80BA+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_80BA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_816B proc near ; CODE XREF: sub_7595+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_8181 + jmp loc_856E +; --------------------------------------------------------------------------- + +loc_8181: ; CODE XREF: sub_816B+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_81DA + les bx, [bp+arg_0] + les bx, es:[bx] + les bx, es:[bx+6] + mov ax, es:[bx+1Ah] + mov [bp+var_6], 0 + mov [bp+var_8], ax + +loc_81DA: ; CODE XREF: sub_816B+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_81F1 + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_8570 +; --------------------------------------------------------------------------- + +loc_81F1: ; CODE XREF: sub_816B+77j + cmp [bp+var_6], 0 + jg short loc_8223 + jnz short loc_81FF + cmp [bp+var_8], 0 + ja short loc_8223 + +loc_81FF: ; CODE XREF: sub_816B+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_8211 + jmp loc_856E +; --------------------------------------------------------------------------- + +loc_8211: ; CODE XREF: sub_816B+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_8388 +; --------------------------------------------------------------------------- + +loc_8223: ; CODE XREF: sub_816B+8Aj sub_816B+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_822F: ; CODE XREF: sub_816B+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8242 + sub word ptr [bp+var_C], 0Ah + jmp loc_8388 +; --------------------------------------------------------------------------- + +loc_8242: ; CODE XREF: sub_816B+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_826A + jmp loc_8334 +; --------------------------------------------------------------------------- + +loc_826A: ; CODE XREF: sub_816B+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_828E + jmp loc_8334 +; --------------------------------------------------------------------------- + +loc_828E: ; CODE XREF: sub_816B+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_829B + jmp loc_8334 +; --------------------------------------------------------------------------- + +loc_829B: ; CODE XREF: sub_816B+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_82A8 + jmp loc_8334 +; --------------------------------------------------------------------------- + +loc_82A8: ; CODE XREF: sub_816B+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_82C1 + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_1C+2], ss + jmp short loc_82CF +; --------------------------------------------------------------------------- + +loc_82C1: ; CODE XREF: sub_816B+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_82CF: ; CODE XREF: sub_816B+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_82F7 + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_8300 +; --------------------------------------------------------------------------- + +loc_82F7: ; CODE XREF: sub_816B+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_8300: ; CODE XREF: sub_816B+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_8311 + add word ptr [bp+var_1C], 4 + +loc_8311: ; CODE XREF: sub_816B+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_80BA + add sp, 6 + mov word ptr [bp+var_1C+2], dx + mov word ptr [bp+var_1C], ax + mov dx, word ptr [bp+var_12+2] + mov ax, word ptr [bp+var_12] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_8334: ; CODE XREF: sub_816B+FCj + ; sub_816B+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8359 + les bx, [bp+var_16] + mov ax, es:[bx+0Ah] + mov [bp+var_18], ax + les bx, [bp+var_16] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_8359: ; CODE XREF: sub_816B+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_8377 + jnz short loc_8388 + cmp ax, [bp+var_8] + jnb short loc_8388 + +loc_8377: ; CODE XREF: sub_816B+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_822F +; --------------------------------------------------------------------------- + +loc_8388: ; CODE XREF: sub_816B+B5j sub_816B+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_83B7 + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_16], ss + jmp short loc_83C5 +; --------------------------------------------------------------------------- + +loc_83B7: ; CODE XREF: sub_816B+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_83C5: ; CODE XREF: sub_816B+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_83D1 + jmp loc_845B +; --------------------------------------------------------------------------- + +loc_83D1: ; CODE XREF: sub_816B+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_8403 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_840C +; --------------------------------------------------------------------------- + +loc_8403: ; CODE XREF: sub_816B+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_840C: ; CODE XREF: sub_816B+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_842A + add [bp+var_18], 4 + +loc_842A: ; CODE XREF: sub_816B+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_845B + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_845B + test byte ptr [bp+var_16+2], 8 + jz short loc_845B + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_80BA + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_845B: ; CODE XREF: sub_816B+263j + ; sub_816B+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_84A9 + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8489 + push [bp+arg_A] + push [bp+var_6] + push [bp+var_8] + push word ptr [bp+var_12+2] + push word ptr [bp+var_12] + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_7FB8 + add sp, 0Eh + jmp short loc_84A9 +; --------------------------------------------------------------------------- + +loc_8489: ; CODE XREF: sub_816B+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_7CED + add sp, 10h + +loc_84A9: ; CODE XREF: sub_816B+2F4j + ; sub_816B+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_84B7 + jmp loc_8555 +; --------------------------------------------------------------------------- + +loc_84B7: ; CODE XREF: sub_816B+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_84C6 + sub word ptr [bp+driver], 4 + +loc_84C6: ; CODE XREF: sub_816B+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8515 + les bx, [bp+var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_12+2], dx + mov word ptr [bp+var_12], ax + les bx, [bp+var_12] + mov ax, es:[bx+16h] + or ax, es:[bx+18h] + jz short loc_8502 + les bx, [bp+var_12] + push word ptr es:[bx+14h] + les bx, [bp+var_12] + push word ptr es:[bx+18h] + push word ptr es:[bx+16h] + jmp short loc_8534 +; --------------------------------------------------------------------------- + +loc_8502: ; CODE XREF: sub_816B+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_8555 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_8553 +; --------------------------------------------------------------------------- + +loc_8515: ; CODE XREF: sub_816B+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_8542 + les bx, [bp+var_12] + push word ptr es:[bx+12h] + les bx, [bp+var_12] + push word ptr es:[bx+10h] + push word ptr es:[bx+0Eh] + +loc_8534: ; CODE XREF: sub_816B+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_6524 + add sp, 0Ah + jmp short loc_8555 +; --------------------------------------------------------------------------- + +loc_8542: ; CODE XREF: sub_816B+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_8555 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_8553: ; CODE XREF: sub_816B+3A8j + pop cx + pop cx + +loc_8555: ; CODE XREF: sub_816B+349j + ; sub_816B+39Bj ... + mov [bp+var_6], 0 + mov [bp+var_8], 0 + mov ax, word ptr [bp+var_C] + sub word ptr [bp+var_C], 0Ah + cmp ax, word ptr [bp+arg_0] + jbe short loc_856E + jmp loc_8388 +; --------------------------------------------------------------------------- + +loc_856E: ; CODE XREF: sub_816B+13j sub_816B+A3j ... + xor ax, ax + +loc_8570: ; CODE XREF: sub_816B+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_816B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__CurrExcContext proc far + +s1 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, [bp+arg_0] + mov [bp+var_2], ax + cmp [bp+var_2], 0FFFFh + jz short loc_85B9 + mov bx, [bp+var_2] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + add ax, 0FFF8h + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + mov ax, 8 + push ax ; n + push ds + mov ax, 0FC7h + push ax ; s2 + push word ptr [bp+s1+2] + push word ptr [bp+s1] ; s1 + nop + push cs + call near ptr _memcmp + add sp, 0Ah + or ax, ax + jz short loc_85BE + +loc_85B9: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_85C5 +; --------------------------------------------------------------------------- + +loc_85BE: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_85C5: ; 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_8621 + mov ax, 8 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+arg_0+2], dx + mov word ptr [bp+arg_0], ax + or ax, dx + jz short loc_865F + +loc_8621: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8BFDh + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_2], 0 + mov [bp+src], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 8BDFh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_865F: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+22j + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +@typeinfo@0$bctr$qmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::operator=(typeinfo const &) +@typeinfo@0$basg$qmx8typeinfo proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + pop bp + retf +@typeinfo@0$basg$qmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far typeinfo___typeinfo(void (*driver)(void), int) +@typeinfo@0$bdtr$qv proc far + +driver = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_4] + mov ax, word ptr [bp+driver] + or ax, word ptr [bp+driver+2] + jz short loc_86AA + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 8BFDh + test dl, 1 + jz short loc_86AA + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_86AA: ; 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_5B20 + add sp, 8 + pop di + pop si + pop bp + retf +@typeinfo@0$beql$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::operator!=(typeinfo const &)const +@typeinfo@0$bneq$xqmx8typeinfo proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) + add sp, 8 + neg ax + sbb ax, ax + inc ax + pop di + pop si + pop bp + retf +@typeinfo@0$bneq$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::before(typeinfo const &)const +@typeinfo@0before$xqmx8typeinfo proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_870E + xor ax, ax + jmp short loc_8767 +; --------------------------------------------------------------------------- + +loc_870E: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_8720 + mov ax, 1 + jmp short loc_8767 +; --------------------------------------------------------------------------- + +loc_8720: ; CODE XREF: typeinfo::before(typeinfo &)+24j + les bx, [bp+arg_4] + mov dx, es:[bx+6] + mov word ptr [bp+var_4+2], dx + mov ax, es:[bx+4] + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + add ax, es:[bx+4] + push dx + push ax ; s2 + les bx, [bp+arg_0] + mov dx, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov ax, es:[bx+4] + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + add ax, es:[bx+4] + push dx + push ax ; s1 + nop + push cs + call near ptr _strcmp + add sp, 8 + or ax, ax + jge short loc_8765 + mov ax, 1 + jmp short loc_8767 +; --------------------------------------------------------------------------- + +loc_8765: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_8767: ; CODE XREF: typeinfo::before(typeinfo &)+17j + ; typeinfo::before(typeinfo &)+29j ... + pop di + pop si + mov sp, bp + pop bp + retf +@typeinfo@0before$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::name(void)const +@typeinfo@0name$xqv proc far + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push si + push di + les bx, [bp+arg_0] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + push cs + call near ptr sub_5AFB + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) +@__GetTypeInfo$qnvt1t1t1 proc far + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_87C9 + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 250Eh + push ax ; src + push cs ; int + mov ax, 8BC9h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_87C9: ; 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_880A proc near ; CODE XREF: sub_880A+143p + ; sub_880A+1C4p ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_1C = dword ptr -1Ch +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h +arg_10 = word ptr 14h +arg_12 = word ptr 16h +arg_14 = word ptr 18h +arg_16 = word ptr 1Ah +arg_18 = word ptr 1Ch +arg_1A = word ptr 1Eh +arg_1C = word ptr 20h +arg_1E = word ptr 22h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+var_8], 0 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + mov [bp+var_E], 0 + mov ax, [bp+arg_14] + or ax, [bp+arg_16] + jz short loc_8845 + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push [bp+arg_16] + push [bp+arg_14] + push cs + call near ptr sub_5B20 + add sp, 8 + or ax, ax + jnz short loc_884F + +loc_8845: ; CODE XREF: sub_880A+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_8856 + +loc_884F: ; CODE XREF: sub_880A+39j + xor dx, dx + xor ax, ax + jmp loc_8A4A +; --------------------------------------------------------------------------- + +loc_8856: ; CODE XREF: sub_880A+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_8868: ; CODE XREF: sub_880A+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_886E: ; CODE XREF: sub_880A+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_8889 + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_8889: ; CODE XREF: sub_880A+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_8896 + jmp loc_8A0B +; --------------------------------------------------------------------------- + +loc_8896: ; CODE XREF: sub_880A+87j + cmp [bp+arg_1A], 0 + jz short loc_88B0 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_88B0 + mov ax, 1 + jmp short loc_88B2 +; --------------------------------------------------------------------------- + +loc_88B0: ; CODE XREF: sub_880A+90j sub_880A+9Fj + xor ax, ax + +loc_88B2: ; CODE XREF: sub_880A+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_88F9 + les bx, [bp+var_14] + mov ax, es:[bx] + mov dx, word ptr [bp+var_14+2] + mov word ptr [bp+var_14+2], dx + mov word ptr [bp+var_14], ax + mov dx, word ptr [bp+var_1C+2] + mov ax, word ptr [bp+var_1C] + mov [bp+var_16], dx + mov [bp+var_18], ax + +loc_88F9: ; CODE XREF: sub_880A+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_5B20 + add sp, 8 + or ax, ax + jnz short loc_897B + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_891D + jmp loc_8A0B +; --------------------------------------------------------------------------- + +loc_891D: ; CODE XREF: sub_880A+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_880A + add sp, 20h + mov [bp+var_1E], dx + mov [bp+var_20], ax + mov ax, [bp+var_20] + or ax, [bp+var_1E] + jnz short loc_8964 + jmp loc_8A0B +; --------------------------------------------------------------------------- + +loc_8964: ; CODE XREF: sub_880A+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_89D8 +; --------------------------------------------------------------------------- + +loc_897B: ; CODE XREF: sub_880A+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_899C + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_8A0B + cmp ax, word ptr [bp+var_14] + jnz short loc_8A0B + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_8A4A +; --------------------------------------------------------------------------- + +loc_899C: ; CODE XREF: sub_880A+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_89D8 + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push [bp+arg_18] + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+arg_16] + push [bp+arg_14] + push [bp+arg_12] + push [bp+arg_10] + push word ptr [bp+var_1C+2] + push word ptr [bp+var_1C] + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + call sub_880A + add sp, 20h + or ax, dx + jz short loc_8A0B + +loc_89D8: ; CODE XREF: sub_880A+16Fj + ; sub_880A+198j + cmp [bp+var_E], 0 + jz short loc_89F6 + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_89F6 + cmp ax, [bp+var_C] + jnz short loc_89F6 + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_8A0B +; --------------------------------------------------------------------------- + +loc_89F6: ; CODE XREF: sub_880A+1D2j + ; sub_880A+1DDj ... + inc [bp+var_E] + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_10] + mov [bp+var_8], ax + +loc_8A0B: ; CODE XREF: sub_880A+89j + ; sub_880A+110j ... + add word ptr [bp+var_4], 8 + jmp loc_886E +; --------------------------------------------------------------------------- + +loc_8A12: ; CODE XREF: sub_880A+7Cj + cmp [bp+var_6], 0 + jnz short loc_8A2B + inc [bp+var_6] + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + jmp loc_8868 +; --------------------------------------------------------------------------- + +loc_8A2B: ; CODE XREF: sub_880A+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_8A44 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_8A44: ; CODE XREF: sub_880A+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_8A4A: ; CODE XREF: sub_880A+49j + ; sub_880A+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_880A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) +@__DynamicCast$qnvt1t1t1i proc far + +var_16 = word ptr -16h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_8A7B + jmp loc_8B7F +; --------------------------------------------------------------------------- + +loc_8A7B: ; 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_8AD1 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_5B20 + add sp, 8 + or ax, ax + jz short loc_8ADA + +loc_8AD1: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_8BAF +; --------------------------------------------------------------------------- + +loc_8ADA: ; 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_5B20 + add sp, 8 + or ax, ax + jnz short loc_8B33 + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+var_16] + push ax + push [bp+var_2] + push [bp+var_4] + push [bp+arg_2] + push [bp+arg_0] + push [bp+var_6] + push [bp+var_8] + xor ax, ax + push ax + push ax + push [bp+var_A] + push [bp+var_C] + push [bp+var_E] + push [bp+var_10] + call sub_880A + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jnz short loc_8B77 + +loc_8B33: ; 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_880A + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jz short loc_8B7F + cmp [bp+var_16], 0 + jz short loc_8B7F + +loc_8B77: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_8BAF +; --------------------------------------------------------------------------- + +loc_8B7F: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_8BAB + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 250Fh + push ax ; src + push cs ; int + mov ax, 8BB5h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_8BAB: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_8BAF: ; 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, 1, 8Ch + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 1, 8Ch + dw seg seg000 + db 4 dup(0), 7Ah, 86h + dw seg seg000 + db 8 ; Method + db 0 + db 3 ; Destructor/SafeFunction + db 0 + db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 + db 0, 1, 0, 7Ah, 86h + dw seg seg000 + db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh + db 0Eh dup(0) + +; =============== 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_96AE:loc_9819p + +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_8C66 + 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_8C66: ; 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_8C90 +; --------------------------------------------------------------------------- + +loc_8C74: ; 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_8C90: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8C74 + push [bp+var_2] + nop + push cs + call near ptr sub_3F6A + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_8CB6 + xor dx, dx + xor ax, ax + jmp loc_8D6C +; --------------------------------------------------------------------------- + +loc_8CB6: ; 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_8CF9 + 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_8CF9: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8D47 + 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_8D3B +; --------------------------------------------------------------------------- + +loc_8D0F: ; 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_8D3B: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8D0F + +loc_8D47: ; 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_8D6C: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_8E03 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_8E55 db 0 ; DATA XREF: __exec+50w +byte_8E56 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_8ED4 db 0FFh, 0 ; DATA XREF: __exec+22Dr +word_8ED6 dw 0 ; DATA XREF: __exec+1D0w +word_8ED8 dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_90D4r ... +byte_8EDA 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_D866 + mov cs:word_8ED8, 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_8EFF + jmp loc_910D +; --------------------------------------------------------------------------- + +loc_8EFF: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_8E03, 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_8E55, al + +loc_8F2F: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_8F40 + cmp al, 9 + jz short loc_8F40 + cmp al, 0Dh + jz short loc_8F40 + inc si + jmp short loc_8F2F +; --------------------------------------------------------------------------- + +loc_8F40: ; 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_8E56, 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_D86C, 3 + jnb short loc_8F5F + sub bx, 280h + +loc_8F5F: ; 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_8F74 + xor ax, ax + mov di, ax + jmp short loc_8F91 +; --------------------------------------------------------------------------- + +loc_8F74: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_8F7E: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_8F7E + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_8F91: ; 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_D866 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_8FB9 + dec cs:byte_8EDA + inc ax + sub [bp+var_4], ax + +loc_8FB9: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 8E05h + +loc_8FC1: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_8FC1 + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 8D74h + 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_9003 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_900F + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_9000 + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_9000 + jmp short loc_904B +; --------------------------------------------------------------------------- + +loc_9000: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_9003: ; 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_910D +; --------------------------------------------------------------------------- + +loc_900F: ; 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_9029: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_9029 + 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_9075 +; --------------------------------------------------------------------------- + +loc_904B: ; 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_9057: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_9057 + 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_9075: ; 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_908B + jmp loc_9003 +; --------------------------------------------------------------------------- + +loc_908B: ; 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_90A2 + jmp loc_9003 +; --------------------------------------------------------------------------- + +loc_90A2: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_8ED6, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 8D74h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_8EDA, 0 + jnz short loc_90D4 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_910D + jmp short loc_90D8 +; --------------------------------------------------------------------------- + +loc_90D4: ; CODE XREF: __exec+1EDj + mov ax, cs:word_8ED8 + +loc_90D8: ; 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_8EDA, 0 + jnz short loc_9107 + mov es, cs:word_8ED8 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_9107: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:byte_8ED4 +; --------------------------------------------------------------------------- + +loc_910D: ; 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_9A17+179P + ; sub_9BDF+160P ... + +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, 8EDBh + push ax ; int + call sub_96AE + 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_4152+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_9152 + mov ax, 0FFFFh + jmp short loc_9158 +; --------------------------------------------------------------------------- + +loc_9152: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_9158: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_D866 + xor di, di + push es + push word_D868 + nop + push cs + call near ptr sub_3F6A + pop bx + mov bx, ax + pop es + mov word ptr dword_E7C0, ax + mov word ptr dword_E7C0+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_9185 + nop + nop + jmp near ptr sub_3044 +; --------------------------------------------------------------------------- + +loc_9185: ; CODE XREF: seg000:917Ej + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_919F + +loc_9190: ; CODE XREF: seg000:919Dj + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_9190 + +loc_919F: ; CODE XREF: seg000:918Ej + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_E7C0+2 + mov word_D862, ax + mov ax, word ptr dword_E7C0 + 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_CC0B + db 4 dup(0), 0B9h, 91h + 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_920E + 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_920C + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9210 +; --------------------------------------------------------------------------- + +loc_920C: ; CODE XREF: seg000:91FBj + jmp short loc_9210 +; --------------------------------------------------------------------------- + +loc_920E: ; CODE XREF: seg000:91D2j + xor ax, ax + +loc_9210: ; CODE XREF: seg000:920Aj + ; seg000:loc_920Cj + 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_CDB3 + dd byte_CD65 + db 4 dup(0), 0BEh, 1 + dw seg seg003 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 19h, 92h + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 25h, 92h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_9290 + 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_928E + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9292 +; --------------------------------------------------------------------------- + +loc_928E: ; CODE XREF: seg000:927Dj + jmp short loc_9292 +; --------------------------------------------------------------------------- + +loc_9290: ; CODE XREF: seg000:9254j + xor ax, ax + +loc_9292: ; CODE XREF: seg000:928Cj + ; seg000:loc_928Ej + 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_92DD + 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_92DB + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_92DF +; --------------------------------------------------------------------------- + +loc_92DB: ; CODE XREF: seg000:92CAj + jmp short loc_92DF +; --------------------------------------------------------------------------- + +loc_92DD: ; CODE XREF: seg000:92A1j + xor ax, ax + +loc_92DF: ; CODE XREF: seg000:92D9j + ; seg000:loc_92DBj + 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), 0E8h, 92h + dw seg seg000 + db 0E2h, 0FFh, 6, 0Ch + dw seg seg003 + db 4 dup(0), 0CCh, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 6, 0Ch + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 94h, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 0F2h, 92h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0FAh, 92h, 6, 0 + db 5, 0, 1, 0, 12h, 93h, 6, 0Ch + dw seg seg003 + db 4 dup(0), 0CCh, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 6, 0Ch + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 94h, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 36h, 93h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 3Eh, 93h, 6, 0, 5 + db 0, 1, 0, 56h, 93h, 6, 0Ch + dw seg seg003 + db 4 dup(0), 0CCh, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 6, 0Ch + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 94h, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 7Ah, 93h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 82h, 93h, 6, 0, 5 + db 0, 1, 0, 9Ah, 93h, 4 dup(0), 0BEh, 93h + dw seg seg000 + db 0E2h, 0FFh, 52h, 0Bh + dw seg seg003 + dd byte_D796 + db 4 dup(0), 0C8h, 93h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0DAh, 93h + dw seg seg000 +byte_93E2 db 0E2h, 0FFh, 52h, 0Bh ; DATA XREF: seg000:93F0o + dw seg seg003 + dd byte_D694 + dd 0 + dd byte_93E2+2 + db 0E2h, 0FFh, 4 dup(0), 0F6h, 93h + dw seg seg000 + db 0E2h, 0FFh, 52h, 0Bh + dw seg seg003 + dd byte_D694 + db 5 dup(0), 94h + 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_948E + 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_948C + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9490 +; --------------------------------------------------------------------------- + +loc_948C: ; CODE XREF: seg000:947Bj + jmp short loc_9490 +; --------------------------------------------------------------------------- + +loc_948E: ; CODE XREF: seg000:9452j + xor ax, ax + +loc_9490: ; CODE XREF: seg000:948Aj + ; seg000:loc_948Cj + 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_94DB + 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_94D9 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_94DD +; --------------------------------------------------------------------------- + +loc_94D9: ; CODE XREF: seg000:94C8j + jmp short loc_94DD +; --------------------------------------------------------------------------- + +loc_94DB: ; CODE XREF: seg000:949Fj + xor ax, ax + +loc_94DD: ; CODE XREF: seg000:94D7j + ; seg000:loc_94D9j + 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_9528 + 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_9526 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_952A +; --------------------------------------------------------------------------- + +loc_9526: ; CODE XREF: seg000:9515j + jmp short loc_952A +; --------------------------------------------------------------------------- + +loc_9528: ; CODE XREF: seg000:94ECj + xor ax, ax + +loc_952A: ; CODE XREF: seg000:9524j + ; seg000:loc_9526j + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_952E proc far ; CODE XREF: _main+34P + push si + push di + cmp byte_E82A, 0 + jz short loc_9541 + mov byte_E82A, 0 + mov al, byte_E82B + jmp short loc_9546 +; --------------------------------------------------------------------------- + +loc_9541: ; CODE XREF: sub_952E+7j + mov ax, 700h + int 21h ; DOS - DIRECT STDIN INPUT, NO ECHO + +loc_9546: ; CODE XREF: sub_952E+11j + mov ah, 0 + pop di + pop si + retf +sub_952E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +; int kbhit(void) +_kbhit proc far + push si + push di + cmp byte_E82A, 0 + jz short loc_9559 + mov ax, 1 + jmp short loc_955E +; --------------------------------------------------------------------------- + +loc_9559: ; CODE XREF: _kbhit+7j + mov ah, 0Bh + int 21h ; DOS - CHECK STANDARD INPUT STATUS + ; Return: AL = FFh if character available + ; 00h if no character + cbw + +loc_955E: ; CODE XREF: _kbhit+Cj + pop di + pop si + retf +_kbhit endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9561 proc far ; CODE XREF: sub_C6DB+7FP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + cmp ah, 81h ; '' + jb short loc_959B + cmp ah, 0A0h ; ' ' + jb short loc_957D + cmp ah, 0E0h ; 'à' + jb short loc_959B + cmp ah, 0F0h ; 'ð' + jnb short loc_959B + +loc_957D: ; CODE XREF: sub_9561+10j + cmp al, 40h ; '@' + jb short loc_959B + cmp al, 0FDh ; 'ý' + jnb short loc_959B + cmp al, 7Fh ; '' + jz short loc_959B + cmp al, 80h ; '€' + adc al, 61h ; 'a' + jb short loc_9591 + sub al, 0A2h ; '¢' + +loc_9591: ; CODE XREF: sub_9561+2Cj + rcl ah, 1 + and ah, 7Fh + add ax, 1F21h + jmp short loc_959D +; --------------------------------------------------------------------------- + +loc_959B: ; CODE XREF: sub_9561+Bj sub_9561+15j ... + xor ax, ax + +loc_959D: ; CODE XREF: sub_9561+38j + pop di + pop si + pop bp + retf +sub_9561 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_95A1 proc far ; CODE XREF: sub_96AE+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_9612 +; --------------------------------------------------------------------------- + +loc_95B7: ; CODE XREF: sub_95A1+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_4637 + pop cx + or ax, ax + jz short loc_95D6 + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_960F + jmp short loc_961B +; --------------------------------------------------------------------------- + +loc_95D6: ; CODE XREF: sub_95A1+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_95F5 +; --------------------------------------------------------------------------- + +loc_95E4: ; CODE XREF: sub_95A1+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_95FE + inc word ptr [bp+var_8] + +loc_95F5: ; CODE XREF: sub_95A1+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_95E4 + +loc_95FE: ; CODE XREF: sub_95A1+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_960F + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_961F +; --------------------------------------------------------------------------- + +loc_960F: ; CODE XREF: sub_95A1+31j sub_95A1+64j + inc word ptr [bp+var_4] + +loc_9612: ; CODE XREF: sub_95A1+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_95B7 + +loc_961B: ; CODE XREF: sub_95A1+33j + xor dx, dx + xor ax, ax + +loc_961F: ; CODE XREF: sub_95A1+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_95A1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_9625(int, int, char *pathname, char *src, int) +sub_9625 proc far ; CODE XREF: sub_96AE+7Fp sub_96AE+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_9679 + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 113Eh + 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_96A6 + jmp short loc_96A1 +; --------------------------------------------------------------------------- + +loc_9679: ; CODE XREF: sub_9625+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_96A6 + +loc_96A1: ; CODE XREF: sub_9625+52j + mov ax, 1 + jmp short loc_96A8 +; --------------------------------------------------------------------------- + +loc_96A6: ; CODE XREF: sub_9625+50j sub_9625+7Aj + xor ax, ax + +loc_96A8: ; CODE XREF: sub_9625+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_9625 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_96AE(int, char *s, int, int, int, int, int) +sub_96AE proc near ; CODE XREF: _execl+19p + +pathname = word ptr -9Ch +var_1A = word ptr -1Ah +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +s1 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +s = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h + + push bp + mov bp, sp + sub sp, 9Ch + push si + push di + les bx, [bp+s] + mov al, es:[bx] + cbw + mov dx, ax + cmp ax, 61h ; 'a' + jb short loc_96C8 + sub dx, 20h ; ' ' + +loc_96C8: ; CODE XREF: sub_96AE+15j + cmp dx, 41h ; 'A' + jb short loc_96DC + cmp dx, 5Ah ; 'Z' + ja short loc_96DC + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_96F2 + +loc_96DC: ; CODE XREF: sub_96AE+1Dj sub_96AE+22j + push ds + mov ax, 1143h + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_95A1 + add sp, 8 + or ax, dx + jz short loc_96F7 + +loc_96F2: ; CODE XREF: sub_96AE+2Cj + mov [bp+arg_E], 0 + +loc_96F7: ; CODE XREF: sub_96AE+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_52E6 + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_9756 + push [bp+arg_E] ; int + push ds + mov ax, 1146h + 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_9625 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_973D + jmp loc_97C1 +; --------------------------------------------------------------------------- + +loc_973D: ; CODE XREF: sub_96AE+8Aj + push ds + mov ax, 1147h + 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_97C1 + jmp short loc_97BC +; --------------------------------------------------------------------------- + +loc_9756: ; CODE XREF: sub_96AE+68j + push [bp+arg_E] ; int + push ds + mov ax, 114Ch + 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_9625 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_97C1 + push [bp+arg_E] ; int + push ds + mov ax, 1151h + 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_9625 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_97C1 + push [bp+arg_E] ; int + push ds + mov ax, 1156h + 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_9625 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_97C1 + +loc_97BC: ; CODE XREF: sub_96AE+A6j + mov [bp+var_1A], 1 + +loc_97C1: ; CODE XREF: sub_96AE+8Cj sub_96AE+A4j ... + cmp [bp+var_18], 0 + jz short loc_97E3 + cmp [bp+var_1A], 0 + jz short loc_97EC + push ds + mov ax, 115Bh + 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_97EC + +loc_97E3: ; CODE XREF: sub_96AE+117j + mov word_D86E, 2 + jmp loc_98B2 +; --------------------------------------------------------------------------- + +loc_97EC: ; CODE XREF: sub_96AE+11Dj + ; sub_96AE+133j + cmp [bp+var_1A], 0 + jz short loc_9805 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, offset aC ; "/c" + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_9819 +; --------------------------------------------------------------------------- + +loc_9805: ; CODE XREF: sub_96AE+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_9819: ; CODE XREF: sub_96AE+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_9833 + mov word_D86E, 8 + jmp loc_98B2 +; --------------------------------------------------------------------------- + +loc_9833: ; CODE XREF: sub_96AE+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_985C + mov word_D86E, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + jmp short loc_98B2 +; --------------------------------------------------------------------------- + +loc_985C: ; CODE XREF: sub_96AE+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_9871 + mov dx, word ptr dword_E7C0+2 + mov ax, word ptr dword_E7C0 + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_9871: ; CODE XREF: sub_96AE+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_9885 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_988B +; --------------------------------------------------------------------------- + +loc_9885: ; CODE XREF: sub_96AE+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_988B: ; CODE XREF: sub_96AE+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_98B7 + mov word_D86E, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3E37 + pop cx + pop cx + +loc_98B2: ; CODE XREF: sub_96AE+13Bj + ; sub_96AE+182j ... + mov ax, 0FFFFh + jmp short loc_9902 +; --------------------------------------------------------------------------- + +loc_98B7: ; CODE XREF: sub_96AE+1EFj + call off_E304 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_98D5 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_98DB +; --------------------------------------------------------------------------- + +loc_98D5: ; CODE XREF: sub_96AE+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_98DB: ; CODE XREF: sub_96AE+225j + push dx + push ax + call [bp+arg_0] + add sp, 0Ch + mov [bp+var_16], ax + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + nop + push cs + call near ptr sub_3E37 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_3E37 + add sp, 8 + mov ax, [bp+var_16] + +loc_9902: ; CODE XREF: sub_96AE+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_96AE endp + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + ;org 8 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9908 proc near ; CODE XREF: _main+5Fp + +var_A = word ptr -0Ah +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_3 = word ptr -3 + + enter 0Ah, 0 + push ds + push offset aYume_cfg ; "YUME.CFG" + call sub_9A8 + push ss + lea ax, [bp+var_8] + push ax + push 8 + call sub_8F4 + call sub_888 + mov ax, [bp+var_3] + mov [bp+var_A], ax + mov word ptr dword_FC54+2, ax + mov word ptr dword_FC54, 0 + les bx, dword_FC54 + mov al, [bp+var_8] + mov es:[bx+15h], al + call sub_BEFA + mov byte_D880, 0 + cmp byte_DDCC, 0 + jnz short loc_9961 + les bx, dword_FC54 + mov byte ptr es:[bx+15h], 0 + mov byte_D880, 1 + jmp short loc_996C +; --------------------------------------------------------------------------- + +loc_9961: ; CODE XREF: sub_9908+47j + cmp [bp+var_8], 0 + jnz short loc_996C + mov byte_DDCC, 0 + +loc_996C: ; CODE XREF: sub_9908+57j sub_9908+5Dj + les bx, dword_FC54 + mov al, [bp+var_7] + mov es:[bx+16h], al + mov al, [bp+var_6] + mov es:[bx+0Bh], al + leave + retn +sub_9908 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9980 proc near ; CODE XREF: sub_9A17+159p + ; sub_9BDF+140p ... + +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 + + enter 8, 0 + push ds + push offset aYume_cfg ; "YUME.CFG" + call sub_7C8 + push large 0 + push 0 + call sub_9E4 + les bx, dword_FC54 + mov al, es:[bx+15h] + mov [bp+var_8], al + mov al, es:[bx+16h] + mov [bp+var_7], al + mov al, es:[bx+0Bh] + mov [bp+var_6], al + push ss + lea ax, [bp+var_8] + push ax + push 4 + call sub_A26 + call sub_888 + leave + retn +sub_9980 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_99C3 proc near ; CODE XREF: _main+EEp + +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 + + enter 8, 0 + lea ax, [bp+var_8] + push ss + push ax + push ds + push offset unk_D881 + mov cx, 8 + call SCOPY@ + push ds + push offset aYume_cfg ; "YUME.CFG" + call sub_7C8 + push large 0 + push 0 + call sub_9E4 + les bx, dword_FC54 + mov al, es:[bx+15h] + mov [bp+var_8], al + mov al, es:[bx+16h] + mov [bp+var_7], al + mov al, es:[bx+0Bh] + mov [bp+var_6], al + push ss + lea ax, [bp+var_8] + push ax + push 8 + call sub_A26 + call sub_888 + leave + retn +sub_99C3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9A17 proc near ; CODE XREF: sub_A0E0:loc_A184p + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + les bx, dword_FC54 + mov byte ptr es:[bx+39h], 0 + mov byte ptr es:[bx+17h], 0 + mov byte ptr es:[bx+33h], 0 + mov byte ptr es:[bx+0Eh], 0 + mov byte ptr es:[bx+0Fh], 1 + mov byte ptr es:[bx+28h], 1 + mov byte ptr es:[bx+34h], 2 + mov byte ptr es:[bx+35h], 0 + mov byte ptr es:[bx+0Dh], 0FFh + call sub_BD9A + or al, al + jz short loc_9A59 + mov al, 1 + jmp loc_9B9A +; --------------------------------------------------------------------------- + +loc_9A59: ; CODE XREF: sub_9A17+3Bj + ; sub_9A17+11Dj + les bx, dword_FC54 + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + mov bx, ax + sar bx, 1 + mov al, [bx+0A0h] + mov ah, 0 + mov [bp+var_4], ax + mov bx, word ptr dword_FC54 + mov eax, es:[bx+10h] + mov dword_DB02, eax + xor si, si + jmp short loc_9ADB +; --------------------------------------------------------------------------- + +loc_9A85: ; CODE XREF: sub_9A17+84j sub_9A17+8Cj ... + call sub_1D12 + mov bx, 7 + cwd + idiv bx + mov [bp+var_2], dx + mov bx, [bp+var_2] + cmp byte ptr [bx+99h], 0 + jnz short loc_9A85 + mov ax, [bp+var_4] + cmp ax, [bp+var_2] + jz short loc_9A85 + mov byte ptr [bx+99h], 1 + mov ax, [bp+var_2] + add ax, ax + inc ax + mov [bp+var_2], ax + les bx, dword_FC54 + add bx, si + mov al, byte ptr [bp+var_2] + mov es:[bx+29h], al + mov bx, word ptr dword_FC54 + mov al, es:[bx+0Ch] + mov ah, 0 + cmp ax, [bp+var_2] + jnz short loc_9ADA + add bx, si + mov al, byte ptr [bp+var_2] + inc al + mov es:[bx+29h], al + +loc_9ADA: ; CODE XREF: sub_9A17+B6j + inc si + +loc_9ADB: ; CODE XREF: sub_9A17+6Cj + cmp si, 6 + jl short loc_9A85 + les bx, dword_FC54 + mov al, es:[bx+29h] + mov es:[bx+0Dh], al + mov al, byte ptr [bp+var_4] + add al, al + inc al + mov es:[bx+2Fh], al + mov byte ptr es:[bx+30h], 0Fh + cmp byte ptr es:[bx+0Ch], 0Fh + jnz short loc_9B07 + inc byte ptr es:[bx+30h] + +loc_9B07: ; CODE XREF: sub_9A17+EAj + les bx, dword_FC54 + mov byte ptr es:[bx+31h], 11h + cmp byte ptr es:[bx+0Ch], 11h + jnz short loc_9B1B + inc byte ptr es:[bx+31h] + +loc_9B1B: ; CODE XREF: sub_9A17+FEj + xor si, si + jmp short loc_9B39 +; --------------------------------------------------------------------------- + +loc_9B1F: ; CODE XREF: sub_9A17+125j + les bx, dword_FC54 + add bx, si + mov al, es:[bx+29h] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + cmp ax, 9 + jge loc_9A59 + inc si + +loc_9B39: ; CODE XREF: sub_9A17+106j + cmp si, 9 + jl short loc_9B1F + xor si, si + jmp short loc_9B4E +; --------------------------------------------------------------------------- + +loc_9B42: ; CODE XREF: sub_9A17+13Aj + les bx, dword_FC54 + add bx, si + mov byte ptr es:[bx+18h], 0 + inc si + +loc_9B4E: ; CODE XREF: sub_9A17+129j + cmp si, 10h + jl short loc_9B42 + les bx, dword_FC54 + mov byte ptr es:[bx+36h], 3 + mov byte ptr es:[bx+37h], 0 + mov al, es:[bx+0Bh] + mov ah, 0 + imul ax, 19h + add al, 46h ; 'F' + mov es:[bx+38h], al + call sub_9980 + call sub_F1A + push 100h + call sub_C403 + call sub_BFC2 + push large 0 + push ds + push offset path ; "mainl" + push ds + push offset path ; "mainl" + call _execl + add sp, 0Ch + mov al, 0 + +loc_9B9A: ; CODE XREF: sub_9A17+3Fj + pop si + leave + retn +sub_9A17 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9B9D proc near ; CODE XREF: sub_9BDF+27p sub_9BDF+30p ... + +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_9BB8 + push large 1B0012h + push ds + push offset aIiklmnop ; "ˆ‰Š‹ŒŽ" + jmp short loc_9BD3 +; --------------------------------------------------------------------------- + +loc_9BB8: ; CODE XREF: sub_9B9D+Dj + cmp di, 1 + jnz short loc_9BC9 + push large 1B0013h + push ds + push offset aIiklccss ; "ˆ‰Š‹–—˜™" + jmp short loc_9BD3 +; --------------------------------------------------------------------------- + +loc_9BC9: ; CODE XREF: sub_9B9D+1Ej + push large 1B0014h + push ds + push offset aTufxmnop ; "’“”•ŒŽ" + +loc_9BD3: ; CODE XREF: sub_9B9D+19j sub_9B9D+2Aj + push si + call sub_FCC + pop di + pop si + pop bp + retn 4 +sub_9B9D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9BDF proc near ; CODE XREF: sub_A0E0+B7p _main+7Dp + +var_2 = word ptr -2 + + enter 2, 0 + push si + xor si, si + les bx, dword_FC54 + cmp byte ptr es:[bx+28h], 80h ; '€' + jnb loc_9C8B + call sub_21F4 + call sub_B0AF + mov [bp+var_2], 0 + push large 0E1h ; 'á' + call sub_9B9D + push large 10001h + call sub_9B9D + push large 20001h + call sub_9B9D + +loc_9C1B: ; CODE XREF: sub_9BDF+AAj + call sub_C986 + or si, si + jnz short loc_9C7E + test byte ptr word_F296, 1 + jz short loc_9C4A + push [bp+var_2] + push 1 + call sub_9B9D + dec [bp+var_2] + cmp [bp+var_2], 0 + jge short loc_9C41 + mov [bp+var_2], 2 + +loc_9C41: ; CODE XREF: sub_9BDF+5Bj + push [bp+var_2] + push 0E1h ; 'á' + call sub_9B9D + +loc_9C4A: ; CODE XREF: sub_9BDF+4Aj + test byte ptr word_F296, 2 + jz short loc_9C70 + push [bp+var_2] + push 1 + call sub_9B9D + inc [bp+var_2] + cmp [bp+var_2], 2 + jle short loc_9C67 + mov [bp+var_2], 0 + +loc_9C67: ; CODE XREF: sub_9BDF+81j + push [bp+var_2] + push 0E1h ; 'á' + call sub_9B9D + +loc_9C70: ; CODE XREF: sub_9BDF+70j + test byte ptr word_F296, 20h + jnz short loc_9C9B + test byte ptr word_F296+1, 20h + jnz short loc_9C9B + +loc_9C7E: ; CODE XREF: sub_9BDF+43j + mov si, word_F296 + push 1 + call sub_C19E + jmp short loc_9C1B +; --------------------------------------------------------------------------- + +loc_9C8B: ; CODE XREF: sub_9BDF+10j + les bx, dword_FC54 + mov al, es:[bx+28h] + mov ah, 0 + add ax, 0FF80h + mov [bp+var_2], ax + +loc_9C9B: ; CODE XREF: sub_9BDF+96j sub_9BDF+9Dj + cmp [bp+var_2], 2 + jnz short loc_9CA5 + mov al, 1 + jmp short loc_9CA7 +; --------------------------------------------------------------------------- + +loc_9CA5: ; CODE XREF: sub_9BDF+C0j + mov al, 0 + +loc_9CA7: ; CODE XREF: sub_9BDF+C4j + les bx, dword_FC54 + mov es:[bx+0Eh], al + cmp [bp+var_2], 1 + jz short loc_9CB9 + mov al, 1 + jmp short loc_9CBB +; --------------------------------------------------------------------------- + +loc_9CB9: ; CODE XREF: sub_9BDF+D4j + mov al, 0 + +loc_9CBB: ; CODE XREF: sub_9BDF+D8j + les bx, dword_FC54 + mov es:[bx+0Fh], al + mov byte ptr es:[bx+39h], 0 + mov byte ptr es:[bx+17h], 0 + mov byte ptr es:[bx+33h], 0 + mov al, byte ptr [bp+var_2] + add al, 80h ; '€' + mov es:[bx+28h], al + mov byte ptr es:[bx+35h], 0 + cmp [bp+var_2], 1 + jnz short loc_9CEF + call sub_BA88 + or al, al + jz short loc_9D03 + jmp short loc_9CF6 +; --------------------------------------------------------------------------- + +loc_9CEF: ; CODE XREF: sub_9BDF+105j + call sub_BC1F + or al, al + jz short loc_9D03 + +loc_9CF6: ; CODE XREF: sub_9BDF+10Ej + les bx, dword_FC54 + mov byte ptr es:[bx+28h], 0 + mov al, 1 + jmp short loc_9D49 +; --------------------------------------------------------------------------- + +loc_9D03: ; CODE XREF: sub_9BDF+10Cj + ; sub_9BDF+115j + mov [bp+var_2], 0 + jmp short loc_9D19 +; --------------------------------------------------------------------------- + +loc_9D0A: ; CODE XREF: sub_9BDF+13Ej + les bx, dword_FC54 + add bx, [bp+var_2] + mov byte ptr es:[bx+18h], 0 + inc [bp+var_2] + +loc_9D19: ; CODE XREF: sub_9BDF+129j + cmp [bp+var_2], 10h + jl short loc_9D0A + call sub_9980 + call sub_F1A + push 100h + call sub_C403 + call sub_BFC2 + push large 0 + push ds + push offset path ; "mainl" + push ds + push offset path ; "mainl" + call _execl + add sp, 0Ch + mov al, 0 + +loc_9D49: ; CODE XREF: sub_9BDF+122j + pop si + leave + retn +sub_9BDF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9D4C proc near ; CODE XREF: sub_9E16+23p + push bp + mov bp, sp + push si + les bx, dword_FC54 + mov byte ptr es:[bx+0Eh], 1 + mov byte ptr es:[bx+0Fh], 1 + inc byte ptr es:[bx+39h] + cmp byte ptr es:[bx+39h], 4 + jbe short loc_9D6E + mov byte ptr es:[bx+39h], 1 + +loc_9D6E: ; CODE XREF: sub_9D4C+1Bj + les bx, dword_FC54 + mov byte ptr es:[bx+17h], 0 + mov byte ptr es:[bx+33h], 0 + mov byte ptr es:[bx+28h], 7Fh ; '' + mov byte ptr es:[bx+35h], 0 + mov al, es:[bx+39h] + mov ah, 0 + add ax, ax + mov bx, ax + mov al, [bx+0C2h] + mov bx, word ptr dword_FC54 + mov es:[bx+0Ch], al + mov al, es:[bx+39h] + mov ah, 0 + add ax, ax + mov dx, 0C2h ; 'Â' + inc dx + add ax, dx + mov bx, ax + mov al, [bx] + mov bx, word ptr dword_FC54 + mov es:[bx+0Dh], al + mov al, es:[bx+39h] + mov ah, 0 + shl ax, 2 + mov bx, ax + mov eax, [bx+0C8h] + mov bx, word ptr dword_FC54 + mov es:[bx+10h], eax + xor si, si + jmp short loc_9DDF +; --------------------------------------------------------------------------- + +loc_9DD3: ; CODE XREF: sub_9D4C+96j + les bx, dword_FC54 + add bx, si + mov byte ptr es:[bx+18h], 0 + inc si + +loc_9DDF: ; CODE XREF: sub_9D4C+85j + cmp si, 10h + jl short loc_9DD3 + push 1 + call far ptr loc_536 + call sub_9980 + call sub_F1A + push 100h + call sub_C403 + call sub_BFC2 + push large 0 + push ds + push offset path ; "mainl" + push ds + push offset path ; "mainl" + call _execl + add sp, 0Ch + pop si + pop bp + retn +sub_9D4C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9E16 proc near ; CODE XREF: sub_A0E0+BDp + ; _main:loc_A4BCp + push bp + mov bp, sp + push si + mov word_F296, 0 + xor si, si + jmp short loc_9E43 +; --------------------------------------------------------------------------- + +loc_9E24: ; CODE XREF: sub_9E16+32j + call sub_C986 + les bx, dword_FC54 + inc dword ptr es:[bx+10h] + inc si + cmp si, 208h + jle short loc_9E3C + call sub_9D4C + +loc_9E3C: ; CODE XREF: sub_9E16+21j + push 1 + call sub_C19E + +loc_9E43: ; CODE XREF: sub_9E16+Cj + cmp word_F296, 0 + jz short loc_9E24 + push large 0A00100h + push 0 + call sub_28D8 + mov si, 0B0h ; '°' + jmp short loc_9E76 +; --------------------------------------------------------------------------- + +loc_9E5C: ; CODE XREF: sub_9E16+64j + push si + call sub_B10A + push si + push large 1000002h + call sub_28D8 + push 1 + call sub_C19E + add si, 8 + +loc_9E76: ; CODE XREF: sub_9E16+44j + cmp si, 120h + jl short loc_9E5C + pop si + pop bp + retn +sub_9E16 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9E7F proc near ; CODE XREF: sub_A0E0+DBp + push bp + mov bp, sp + push si + les bx, dword_FC54 + mov byte ptr es:[bx+33h], 0FFh + mov byte ptr es:[bx+35h], 1 + mov byte ptr es:[bx+28h], 0 + xor si, si + jmp short loc_9EA6 +; --------------------------------------------------------------------------- + +loc_9E9A: ; CODE XREF: sub_9E7F+2Aj + les bx, dword_FC54 + add bx, si + mov byte ptr es:[bx+18h], 0 + inc si + +loc_9EA6: ; CODE XREF: sub_9E7F+19j + cmp si, 10h + jl short loc_9E9A + call sub_9980 + call sub_F1A + push 100h + call sub_C403 + call sub_269A + call sub_BFC2 + push large 0 + push ds + push offset path ; "mainl" + push ds + push offset path ; "mainl" + call _execl + add sp, 0Ch + mov al, 0 + pop si + pop bp + retn +sub_9E7F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9EDD proc near ; CODE XREF: sub_A0E0+3Ap + +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_9EF8 + push large 190011h + push ds + push offset unk_D8CC + jmp short loc_9F4B +; --------------------------------------------------------------------------- + +loc_9EF8: ; CODE XREF: sub_9EDD+Dj + cmp si, 1 + jnz short loc_9F09 + push large 170012h + push ds + push offset a345678 ; "345678" + jmp short loc_9F4B +; --------------------------------------------------------------------------- + +loc_9F09: ; CODE XREF: sub_9EDD+1Ej + cmp si, 2 + jnz short loc_9F1A + push large 160013h + push ds + push offset aAbcdefg ; "ABCDEFG" + jmp short loc_9F4B +; --------------------------------------------------------------------------- + +loc_9F1A: ; CODE XREF: sub_9EDD+2Fj + cmp si, 3 + jnz short loc_9F2B + push large 180014h + push ds + push offset aVgdej ; "‚ƒ„…†" + jmp short loc_9F4B +; --------------------------------------------------------------------------- + +loc_9F2B: ; CODE XREF: sub_9EDD+40j + cmp si, 4 + jnz short loc_9F3C + push large 190015h + push ds + push offset a?@ ; "=>?@" + jmp short loc_9F4B +; --------------------------------------------------------------------------- + +loc_9F3C: ; CODE XREF: sub_9EDD+51j + cmp si, 5 + jnz short loc_9F51 + push large 1A0016h + push ds + push offset aHij ; "HIJ" + +loc_9F4B: ; CODE XREF: sub_9EDD+19j sub_9EDD+2Aj ... + push di + call sub_FCC + +loc_9F51: ; CODE XREF: sub_9EDD+62j + pop di + pop si + pop bp + retn 4 +sub_9EDD endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9F57 proc near ; CODE XREF: sub_A203+2Ep sub_A203+F6p ... + +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_9FD6 + push large 190011h + push ds + push offset aNop ; "nop" + push si + call sub_FCC + push large 250011h + push ds + push offset asc_D965 ; " " + push 0E1h ; 'á' + call sub_2254 + les bx, dword_FC54 + mov al, es:[bx+0Bh] + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja loc_A092 + add bx, bx + jmp cs:off_A099[bx] + +loc_9FA2: ; DATA XREF: seg001:off_A099o + push large 260011h + push ds + push offset aQrs ; "qrs" + jmp loc_A08C +; --------------------------------------------------------------------------- + +loc_9FAF: ; CODE XREF: sub_9F57+46j + ; DATA XREF: seg001:079Bo + push large 250011h + push ds + push offset aTuvw ; "tuvw" + jmp loc_A08C +; --------------------------------------------------------------------------- + +loc_9FBC: ; CODE XREF: sub_9F57+46j + ; DATA XREF: seg001:079Do + push large 260011h + push ds + push offset aXyz ; "xyz" + jmp loc_A08C +; --------------------------------------------------------------------------- + +loc_9FC9: ; CODE XREF: sub_9F57+46j + ; DATA XREF: seg001:079Fo + push large 250011h + push ds + push offset asc_D910 ; "{|}~" + jmp loc_A08C +; --------------------------------------------------------------------------- + +loc_9FD6: ; CODE XREF: sub_9F57+Dj + cmp di, 1 + jnz short loc_A02A + push large 190013h + push ds + push offset aKlmn ; "KLMN" + push si + call sub_FCC + les bx, dword_FC54 + mov al, es:[bx+15h] + mov ah, 0 + or ax, ax + jz short loc_A006 + cmp ax, 1 + jz short loc_A012 + cmp ax, 2 + jz short loc_A01E + jmp loc_A092 +; --------------------------------------------------------------------------- + +loc_A006: ; CODE XREF: sub_9F57+A0j + push large 230013h + push ds + push offset aZ ; "ÏÏZ[ÏÏÏ" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A012: ; CODE XREF: sub_9F57+A5j + push large 230013h + push ds + push offset aOpqr ; "ÏOPQRÏÏ" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A01E: ; CODE XREF: sub_9F57+AAj + push large 230013h + push ds + push offset aStuvwxy ; "STUVWXY" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A02A: ; CODE XREF: sub_9F57+82j + cmp di, 2 + jnz short loc_A07D + push large 170015h + push ds + push offset a_A ; "\\]^_`a" + push si + call sub_FCC + les bx, dword_FC54 + mov al, es:[bx+16h] + mov ah, 0 + or ax, ax + jz short loc_A059 + cmp ax, 1 + jz short loc_A065 + cmp ax, 2 + jz short loc_A071 + jmp short loc_A092 +; --------------------------------------------------------------------------- + +loc_A059: ; CODE XREF: sub_9F57+F4j + push large 250015h + push ds + push offset aHilmhi ; "hilmhi" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A065: ; CODE XREF: sub_9F57+F9j + push large 250015h + push ds + push offset aJklmhi ; "jklmhi" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A071: ; CODE XREF: sub_9F57+FEj + push large 250015h + push ds + push offset aHilmjk ; "hilmjk" + jmp short loc_A08C +; --------------------------------------------------------------------------- + +loc_A07D: ; CODE XREF: sub_9F57+D6j + cmp di, 3 + jnz short loc_A092 + push large 200016h + push ds + push offset aHij ; "HIJ" + +loc_A08C: ; CODE XREF: sub_9F57+55j sub_9F57+62j ... + push si + call sub_FCC + +loc_A092: ; CODE XREF: sub_9F57+40j sub_9F57+ACj ... + pop di + pop si + pop bp + retn 4 +sub_9F57 endp + +; --------------------------------------------------------------------------- + db 0 +off_A099 dw offset loc_9FA2 ; DATA XREF: sub_9F57+46r + dw offset loc_9FAF + dw offset loc_9FBC + dw offset loc_9FC9 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A0A1 proc near ; CODE XREF: sub_A0E0+73p sub_A0E0+81p ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + mov al, byte_D951 + cbw + push ax + push 1 + call word_E97E + mov al, [bp+arg_0] + add byte_D951, al + cmp byte_D951, 0 + jge short loc_A0C3 + mov al, [bp+arg_2] + mov byte_D951, al + +loc_A0C3: ; CODE XREF: sub_A0A1+1Aj + mov al, byte_D951 + cmp al, [bp+arg_2] + jle short loc_A0D0 + mov byte_D951, 0 + +loc_A0D0: ; CODE XREF: sub_A0A1+28j + mov al, byte_D951 + cbw + push ax + push 0E1h ; 'á' + call word_E97E + pop bp + retn 4 +sub_A0A1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A0E0 proc near ; CODE XREF: _main+B3p _main:loc_A4E6p + push bp + mov bp, sp + push si + cmp byte_D954, 0 + jnz short loc_A133 + call sub_21F4 + cmp byte_D953, 0 + jnz short loc_A0FA + call sub_B0DB + +loc_A0FA: ; CODE XREF: sub_A0E0+15j + mov byte_D953, 0 + mov byte_E97A, 0 + xor si, si + jmp short loc_A11E +; --------------------------------------------------------------------------- + +loc_A108: ; CODE XREF: sub_A0E0+41j + push si + mov al, byte_D951 + cbw + cmp ax, si + jnz short loc_A116 + mov ax, 0E1h ; 'á' + jmp short loc_A119 +; --------------------------------------------------------------------------- + +loc_A116: ; CODE XREF: sub_A0E0+2Fj + mov ax, 1 + +loc_A119: ; CODE XREF: sub_A0E0+34j + push ax + call sub_9EDD + inc si + +loc_A11E: ; CODE XREF: sub_A0E0+26j + cmp si, 6 + jl short loc_A108 + mov word_E97E, 5DDh + mov byte_D954, 1 + mov byte_E97A, 0 + +loc_A133: ; CODE XREF: sub_A0E0+9j + cmp word_F296, 0 + jnz short loc_A13F + mov byte_E97A, 1 + +loc_A13F: ; CODE XREF: sub_A0E0+58j + cmp byte_E97A, 0 + jz loc_A1F3 + test byte ptr word_F296, 1 + jz short loc_A156 + push 5 + push 0FFFFh + call sub_A0A1 + +loc_A156: ; CODE XREF: sub_A0E0+6Dj + test byte ptr word_F296, 2 + jz short loc_A164 + push 5 + push 1 + call sub_A0A1 + +loc_A164: ; CODE XREF: sub_A0E0+7Bj + test byte ptr word_F296+1, 20h + jnz short loc_A172 + test byte ptr word_F296, 20h + jz short loc_A1DB + +loc_A172: ; CODE XREF: sub_A0E0+89j + mov al, byte_D951 + cbw + mov bx, ax + cmp bx, 5 + ja short loc_A1DB + add bx, bx + jmp cs:off_A1F7[bx] + +loc_A184: ; DATA XREF: seg001:off_A1F7o + call sub_9A17 + jmp short loc_A19A +; --------------------------------------------------------------------------- + +loc_A189: ; CODE XREF: sub_A0E0+9Fj + ; DATA XREF: seg001:08F9o + les bx, dword_FC54 + mov byte ptr es:[bx+0Ch], 1 + mov byte ptr es:[bx+0Dh], 1 + call sub_9BDF + +loc_A19A: ; CODE XREF: sub_A0E0+A7j sub_A0E0+D9j + call sub_B008 + call sub_9E16 + call sub_B3C3 + mov byte_D954, 0 + mov byte_E97A, 0 + mov byte_D953, 1 + jmp short loc_A1F3 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr sub_AC06 + jmp short loc_A19A +; --------------------------------------------------------------------------- + call sub_9E7F + jmp short loc_A1DB +; --------------------------------------------------------------------------- + mov byte_D954, 0 + mov byte_E97C, 1 + mov byte_D951, 0 + jmp short loc_A1DB +; --------------------------------------------------------------------------- + mov byte_D954, 0 + mov byte_D952, 1 + +loc_A1DB: ; CODE XREF: sub_A0E0+90j sub_A0E0+9Bj ... + test byte ptr word_F296+1, 10h + jz short loc_A1E7 + mov byte_D952, 1 + +loc_A1E7: ; CODE XREF: sub_A0E0+100j + cmp word_F296, 0 + jz short loc_A1F3 + mov byte_E97A, 0 + +loc_A1F3: ; CODE XREF: sub_A0E0+64j sub_A0E0+D2j ... + pop si + pop bp + retn +sub_A0E0 endp + +; --------------------------------------------------------------------------- + db 0 +off_A1F7 dw offset loc_A184 ; DATA XREF: sub_A0E0+9Fr + dw offset loc_A189 + db 0B4h, 8, 0BBh, 8, 0C0h, 8, 0D1h, 8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A203 proc near ; CODE XREF: _main:loc_A4EBp + push bp + mov bp, sp + push si + cmp byte_D955, 0 + jnz short loc_A24A + call sub_21F4 + call sub_B0AF + mov byte_E97B, 0 + xor si, si + jmp short loc_A235 +; --------------------------------------------------------------------------- + +loc_A21F: ; CODE XREF: sub_A203+35j + push si + mov al, byte_D951 + cbw + cmp ax, si + jnz short loc_A22D + mov ax, 0E1h ; 'á' + jmp short loc_A230 +; --------------------------------------------------------------------------- + +loc_A22D: ; CODE XREF: sub_A203+23j + mov ax, 1 + +loc_A230: ; CODE XREF: sub_A203+28j + push ax + call sub_9F57 + inc si + +loc_A235: ; CODE XREF: sub_A203+1Aj + cmp si, 4 + jl short loc_A21F + mov word_E97E, 657h + mov byte_D955, 1 + mov byte_E97B, 0 + +loc_A24A: ; CODE XREF: sub_A203+9j + cmp word_F296, 0 + jnz short loc_A256 + mov byte_E97B, 1 + +loc_A256: ; CODE XREF: sub_A203+4Cj + cmp byte_E97B, 0 + jz loc_A414 + test byte ptr word_F296, 1 + jz short loc_A26D + push 3 + push 0FFFFh + call sub_A0A1 + +loc_A26D: ; CODE XREF: sub_A203+61j + test byte ptr word_F296, 2 + jz short loc_A27B + push 3 + push 1 + call sub_A0A1 + +loc_A27B: ; CODE XREF: sub_A203+6Fj + test byte ptr word_F296, 8 + jz loc_A31D + mov al, byte_D951 + cbw + or ax, ax + jz short loc_A298 + cmp ax, 1 + jz short loc_A2AE + cmp ax, 2 + jz short loc_A2FE + jmp short loc_A312 +; --------------------------------------------------------------------------- + +loc_A298: ; CODE XREF: sub_A203+87j + les bx, dword_FC54 + inc byte ptr es:[bx+0Bh] + cmp byte ptr es:[bx+0Bh], 3 + jbe short loc_A312 + mov byte ptr es:[bx+0Bh], 0 + jmp short loc_A312 +; --------------------------------------------------------------------------- + +loc_A2AE: ; CODE XREF: sub_A203+8Cj + cmp byte_D880, 0 + jnz short loc_A312 + les bx, dword_FC54 + cmp byte ptr es:[bx+15h], 0 + jnz short loc_A2DB + mov byte ptr es:[bx+15h], 1 + push 100h + call sub_C403 + call sub_BEFA + push 0 + call sub_C403 + jmp short loc_A2F1 +; --------------------------------------------------------------------------- + +loc_A2DB: ; CODE XREF: sub_A203+BBj + les bx, dword_FC54 + mov byte ptr es:[bx+15h], 0 + push 100h + call sub_C403 + mov byte_DDCC, 0 + +loc_A2F1: ; CODE XREF: sub_A203+D6j + mov al, byte_D951 + cbw + push ax + push 0E1h ; 'á' + call sub_9F57 + jmp short loc_A312 +; --------------------------------------------------------------------------- + +loc_A2FE: ; CODE XREF: sub_A203+91j + les bx, dword_FC54 + inc byte ptr es:[bx+16h] + cmp byte ptr es:[bx+16h], 2 + jbe short loc_A312 + mov byte ptr es:[bx+16h], 0 + +loc_A312: ; CODE XREF: sub_A203+93j sub_A203+A2j ... + mov al, byte_D951 + cbw + push ax + push 0E1h ; 'á' + call sub_9F57 + +loc_A31D: ; CODE XREF: sub_A203+7Dj + test byte ptr word_F296, 4 + jz loc_A3CC + mov al, byte_D951 + cbw + or ax, ax + jz short loc_A33B + cmp ax, 1 + jz short loc_A357 + cmp ax, 2 + jz short loc_A3A7 + jmp loc_A3C1 +; --------------------------------------------------------------------------- + +loc_A33B: ; CODE XREF: sub_A203+129j + les bx, dword_FC54 + cmp byte ptr es:[bx+0Bh], 0 + jnz short loc_A34D + mov byte ptr es:[bx+0Bh], 3 + jmp short loc_A3C1 +; --------------------------------------------------------------------------- + +loc_A34D: ; CODE XREF: sub_A203+141j + les bx, dword_FC54 + dec byte ptr es:[bx+0Bh] + jmp short loc_A3C1 +; --------------------------------------------------------------------------- + +loc_A357: ; CODE XREF: sub_A203+12Ej + cmp byte_D880, 0 + jnz short loc_A3C1 + les bx, dword_FC54 + cmp byte ptr es:[bx+15h], 0 + jnz short loc_A384 + mov byte ptr es:[bx+15h], 1 + push 100h + call sub_C403 + call sub_BEFA + push 0 + call sub_C403 + jmp short loc_A39A +; --------------------------------------------------------------------------- + +loc_A384: ; CODE XREF: sub_A203+164j + les bx, dword_FC54 + mov byte ptr es:[bx+15h], 0 + push 100h + call sub_C403 + mov byte_DDCC, 0 + +loc_A39A: ; CODE XREF: sub_A203+17Fj + mov al, byte_D951 + cbw + push ax + push 0E1h ; 'á' + call sub_9F57 + jmp short loc_A3C1 +; --------------------------------------------------------------------------- + +loc_A3A7: ; CODE XREF: sub_A203+133j + les bx, dword_FC54 + cmp byte ptr es:[bx+16h], 0 + jnz short loc_A3B9 + mov byte ptr es:[bx+16h], 2 + jmp short loc_A3C1 +; --------------------------------------------------------------------------- + +loc_A3B9: ; CODE XREF: sub_A203+1ADj + les bx, dword_FC54 + dec byte ptr es:[bx+16h] + +loc_A3C1: ; CODE XREF: sub_A203+135j + ; sub_A203+148j ... + mov al, byte_D951 + cbw + push ax + push 0E1h ; 'á' + call sub_9F57 + +loc_A3CC: ; CODE XREF: sub_A203+11Fj + test byte ptr word_F296+1, 20h + jnz short loc_A3DA + test byte ptr word_F296, 20h + jz short loc_A3F2 + +loc_A3DA: ; CODE XREF: sub_A203+1CEj + mov al, byte_D951 + cbw + cmp ax, 3 + jnz short loc_A3F2 + mov byte_D955, 0 + mov byte_D951, 4 + mov byte_E97C, 0 + +loc_A3F2: ; CODE XREF: sub_A203+1D5j + ; sub_A203+1DEj + test byte ptr word_F296+1, 10h + jz short loc_A408 + mov byte_D955, 0 + mov byte_D951, 4 + mov byte_E97C, 0 + +loc_A408: ; CODE XREF: sub_A203+1F4j + cmp word_F296, 0 + jz short loc_A414 + mov byte_E97B, 0 + +loc_A414: ; CODE XREF: sub_A203+58j + ; sub_A203+20Aj + pop si + pop bp + retn +sub_A203 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl main(int argc, const char **argv, const char **envp) +_main proc far ; CODE XREF: start+13BP + +_argc = word ptr 6 +_argv = dword ptr 8 +_envp = dword ptr 0Ch + + push bp + mov bp, sp + call sub_10FE + call sub_21F4 + call sub_2AC6 + cmp word_DAB8, 0 + jz short loc_A452 + push ds + push offset aVfvcvbgngngbgn ; "‚f‚c‚bƒNƒƒbƒN‚ª‚T‚l‚g‚š‚É‚È‚Á‚Ä‚¢‚Ü‚·"... + call sub_688 + push ds + push offset aUmx ; "“Œ•û–²Žž‹ó‚Í‚QD‚T‚l‚g‚š‚Å‚È‚¢‚Ƴí‚Ƀ"... + call sub_688 + push ds + push offset aViosrfvVVkvqbd ; "\n‚¨Žè”‚Å‚·‚ª‚QD‚T‚l‚g‚š‚ÉØ‚è‘Ö‚¦‚ÄA"... + +loc_A446: ; CODE XREF: _main+4Fj + call sub_688 + call sub_952E + pop bp + retf +; --------------------------------------------------------------------------- + +loc_A452: ; CODE XREF: _main+17j + push ds + push offset aCOul ; "–²Žž‹ó1.dat" + call sub_C421 + add sp, 4 + or ax, ax + jz short loc_A468 + push ds + push offset aGbgvgkxsslvVBb ; "\nƒƒ‚ƒŠ•s‘«‚Å‚·Bƒƒ‚ƒŠ‹ó‚«‚ð‘‚₵‚Ä‚©"... + jmp short loc_A446 +; --------------------------------------------------------------------------- + +loc_A468: ; CODE XREF: _main+49j + call sub_EF6 + push ds + push offset aMikoft_bft ; "MIKOFT.bft" + call sub_F36 + call sub_9908 + les bx, dword_FC54 + cmp byte ptr es:[bx+28h], 80h ; '€' + jb short loc_A497 + cmp byte ptr es:[bx+39h], 0 + jnz short loc_A497 + call sub_B38D + call sub_B3EF + call sub_B3C3 + call sub_9BDF + +loc_A497: ; CODE XREF: _main+6Bj _main+72j + les bx, dword_FC54 + cmp byte ptr es:[bx+37h], 0 + jnz short loc_A4B0 + call sub_ADE2 + les bx, dword_FC54 + mov byte ptr es:[bx+37h], 1 + jmp short loc_A4BC +; --------------------------------------------------------------------------- + +loc_A4B0: ; CODE XREF: _main+89j + les bx, dword_FC54 + mov byte ptr es:[bx+37h], 0 + call sub_B008 + +loc_A4BC: ; CODE XREF: _main+97j + call sub_9E16 + mov byte_E97C, 0 + mov word_F296, 0 + call sub_A0E0 + call sub_B3C3 + jmp short loc_A4FE +; --------------------------------------------------------------------------- + +loc_A4D2: ; CODE XREF: _main+ECj + call sub_C986 + mov al, byte_E97C + cbw + or ax, ax + jz short loc_A4E6 + cmp ax, 1 + jz short loc_A4EB + jmp short loc_A4EE +; --------------------------------------------------------------------------- + +loc_A4E6: ; CODE XREF: _main+C6j + call sub_A0E0 + jmp short loc_A4EE +; --------------------------------------------------------------------------- + +loc_A4EB: ; CODE XREF: _main+CBj + call sub_A203 + +loc_A4EE: ; CODE XREF: _main+CDj _main+D2j + les bx, dword_FC54 + inc dword ptr es:[bx+10h] + push 1 + call sub_C19E + +loc_A4FE: ; CODE XREF: _main+B9j + cmp byte_D952, 0 + jz short loc_A4D2 + call sub_99C3 + call sub_F1A + call sub_21F4 + call sub_BEB8 + call sub_2B3C + pop bp + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A51E proc near ; CODE XREF: sub_A590+19p sub_AC06+DFp ... + +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_F828+1 + mov [bp+var_1], al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 10h + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 4 + add ax, 28h ; '(' + push ax + mov al, [bp+arg_0] + mov ah, 0 + or ax, 20h + push ax + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+5F2h] + call sub_C6DB + mov dx, 0A6h ; '¦' + mov al, byte ptr word_F828+1 + out dx, al ; Interrupt Controller #2, 8259A + push 10h + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 4 + add ax, 28h ; '(' + push ax + mov al, [bp+arg_0] + mov ah, 0 + or ax, 20h + push ax + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+5F2h] + call sub_C6DB + leave + retn 4 +sub_A51E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A590 proc near ; CODE XREF: sub_AC06+77p + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + push si + xor si, si + jmp short loc_A5AD +; --------------------------------------------------------------------------- + +loc_A598: ; CODE XREF: sub_A590+20j + push si + mov al, [bp+arg_0] + mov ah, 0 + cmp ax, si + jnz short loc_A5A6 + mov al, 0Fh + jmp short loc_A5A8 +; --------------------------------------------------------------------------- + +loc_A5A6: ; CODE XREF: sub_A590+10j + mov al, 3 + +loc_A5A8: ; CODE XREF: sub_A590+14j + push ax + call sub_A51E + inc si + +loc_A5AD: ; CODE XREF: sub_A590+6j + cmp si, 15h + jl short loc_A598 + pop si + pop bp + retn 2 +sub_A590 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5B7 proc near ; CODE XREF: sub_AC06+8Dp + push bp + mov bp, sp + push si + push 7D00h + call sub_24CA + mov word_F82A, ax + xor si, si + jmp short loc_A5DF +; --------------------------------------------------------------------------- + +loc_A5CA: ; CODE XREF: sub_A5B7+2Cj + les bx, dword_F1EA + add bx, si + mov eax, es:[bx] + mov es, word_F82A + mov es:[si], eax + add si, 4 + +loc_A5DF: ; CODE XREF: sub_A5B7+11j + cmp si, 7D00h + jl short loc_A5CA + pop si + pop bp + retn +sub_A5B7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5E8 proc near ; CODE XREF: sub_AC06:loc_ADC1p + push bp + mov bp, sp + push word_F82A + call sub_25CE + pop bp + retn +sub_A5E8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5F6 proc near ; CODE XREF: sub_A899+3p sub_AB99+Bp + push bp + mov bp, sp + push si + push di + push ds + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ax, word_F82A + mov ds, ax + xor di, di + xor si, si + mov cx, 3E80h + rep movsw + pop ds + pop di + pop si + pop bp + retn +sub_A5F6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A614 proc near ; CODE XREF: sub_A6A3+E6p + +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_A67F +; --------------------------------------------------------------------------- + +loc_A628: ; CODE XREF: sub_A614+71j + mov ax, [bp+var_2] + shl ax, 8 + cwd + idiv [bp+arg_2] + add al, [bp+arg_0] + mov [bp+var_3], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push [bp+arg_4] + push [bp+arg_8] + call sub_C005 + add sp, 6 + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di], ax + mov al, [bp+var_3] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push [bp+arg_4] + push [bp+arg_6] + call sub_C005 + add sp, 6 + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di+2], ax + inc [bp+var_2] + +loc_A67F: ; CODE XREF: sub_A614+12j + mov ax, [bp+var_2] + cmp ax, [bp+arg_2] + jl short loc_A628 + 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_A614 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A6A3 proc near ; CODE XREF: sub_A899+11p + push bp + mov bp, sp + push si + cmp byte_DE82, 0 + jnz loc_A752 + xor si, si + jmp loc_A746 +; --------------------------------------------------------------------------- + +loc_A6B5: ; CODE XREF: sub_A6A3+A6j + call sub_1D12 + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1F98h], dx + call sub_1D12 + mov bx, 1900h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1F9Ah], dx + call sub_1D12 + and ax, 7 + mov dx, 4 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+1FD8h], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+1FD8h], 0 + jnz short loc_A70A + mov bx, si + shl bx, 2 + mov word ptr [bx+1FD8h], 1 + +loc_A70A: ; CODE XREF: sub_A6A3+5Aj + call sub_1D12 + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+1FDAh], ax + call sub_1D12 + mov [si+2018h], al + call sub_1D12 + and al, 7 + mov dl, 4 + sub dl, al + mov [si+2028h], dl + cmp byte ptr [si+2028h], 0 + jnz short loc_A745 + mov byte ptr [si+2028h], 4 + +loc_A745: ; CODE XREF: sub_A6A3+9Bj + inc si + +loc_A746: ; CODE XREF: sub_A6A3+Fj + cmp si, 10h + jl loc_A6B5 + mov byte_DE82, 1 + +loc_A752: ; CODE XREF: sub_A6A3+9j + xor si, si + jmp loc_A88F +; --------------------------------------------------------------------------- + +loc_A757: ; CODE XREF: sub_A6A3+1EFj + push 1F70h + mov bx, si + shl bx, 2 + push word ptr [bx+1F98h] + mov bx, si + shl bx, 2 + push word ptr [bx+1F9Ah] + 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+2018h] + push ax + call sub_A614 + mov bx, si + shl bx, 2 + mov ax, [bx+1FD8h] + mov bx, si + shl bx, 2 + add [bx+1F98h], ax + mov bx, si + shl bx, 2 + mov ax, [bx+1FDAh] + mov bx, si + shl bx, 2 + add [bx+1F9Ah], ax + mov al, [si+2028h] + add [si+2018h], al + mov bx, si + shl bx, 2 + cmp word ptr [bx+1F98h], 0 + jle short loc_A7D1 + mov bx, si + shl bx, 2 + cmp word ptr [bx+1F98h], 27Fh + jl short loc_A7E3 + +loc_A7D1: ; CODE XREF: sub_A6A3+11Fj + mov bx, si + shl bx, 2 + mov dx, 0FFFFh + mov ax, [bx+1FD8h] + imul dx + mov [bx+1FD8h], ax + +loc_A7E3: ; CODE XREF: sub_A6A3+12Cj + mov bx, si + shl bx, 2 + cmp word ptr [bx+1F9Ah], 1F40h + jl loc_A879 + call sub_1D12 + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+1F98h], dx + mov bx, si + shl bx, 2 + mov word ptr [bx+1F9Ah], 0F9C0h + call sub_1D12 + and ax, 0Fh + mov dx, 8 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+1FD8h], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+1FD8h], 0 + jnz short loc_A83E + mov bx, si + shl bx, 2 + mov word ptr [bx+1FD8h], 1 + +loc_A83E: ; CODE XREF: sub_A6A3+18Ej + call sub_1D12 + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+1FDAh], ax + call sub_1D12 + mov [si+2018h], al + call sub_1D12 + and al, 7 + mov dl, 4 + sub dl, al + mov [si+2028h], dl + cmp byte ptr [si+2028h], 0 + jnz short loc_A879 + mov byte ptr [si+2028h], 4 + +loc_A879: ; CODE XREF: sub_A6A3+14Bj + ; sub_A6A3+1CFj + push ds + push offset unk_F760 + mov ax, si + mov bx, 4 + cwd + idiv bx + add ax, 3 + push ax + call sub_C6A + inc si + +loc_A88F: ; CODE XREF: sub_A6A3+B1j + cmp si, 10h + jl loc_A757 + pop si + pop bp + retn +sub_A6A3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A899 proc near ; CODE XREF: sub_AC06+C8p + ; sub_AC06+188p ... + push bp + mov bp, sp + call sub_A5F6 + push large 0CE000Fh + call sub_EC6 + call sub_A6A3 + call sub_EF0 + mov dx, 0A4h ; '¤' + mov al, byte ptr word_F828+1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte ptr word_F828+1 + mov byte ptr word_F828+1, al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_CB86 + pop bp + retn +sub_A899 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A8CF proc near ; CODE XREF: sub_AC06+90p + +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_A8F7 +; --------------------------------------------------------------------------- + +loc_A8DC: ; CODE XREF: sub_A8CF+2Cj + push 3200h + call sub_24CA + mov bx, [bp+var_6] + shl bx, 2 + mov [bx+203Eh], ax + mov word ptr [bx+203Ch], 0 + inc [bp+var_6] + +loc_A8F7: ; CODE XREF: sub_A8CF+Bj + cmp [bp+var_6], 4 + jl short loc_A8DC + xor si, si + mov di, 40h ; '@' + jmp short loc_A97D +; --------------------------------------------------------------------------- + +loc_A904: ; CODE XREF: sub_A8CF+B1j + mov [bp+var_2], 130h + jmp short loc_A975 +; --------------------------------------------------------------------------- + +loc_A90B: ; CODE XREF: sub_A8CF+ABj + 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_F1EA + assume es:nothing + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F82C + mov es:[bx+si], eax + les bx, dword_F1EE + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F830 + mov es:[bx+si], eax + les bx, dword_F1F2 + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F834 + mov es:[bx+si], eax + les bx, dword_F1F6 + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F838 + mov es:[bx+si], eax + add si, 4 + add [bp+var_2], 20h ; ' ' + +loc_A975: ; CODE XREF: sub_A8CF+3Aj + cmp [bp+var_2], 270h + jl short loc_A90B + inc di + +loc_A97D: ; CODE XREF: sub_A8CF+33j + cmp di, 50h ; 'P' + jl short loc_A904 + mov di, 50h ; 'P' + jmp short loc_AA00 +; --------------------------------------------------------------------------- + +loc_A987: ; CODE XREF: sub_A8CF+135j + mov [bp+var_2], 130h + jmp short loc_A9F8 +; --------------------------------------------------------------------------- + +loc_A98E: ; CODE XREF: sub_A8CF+12Ej + 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_F1EA + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F82C + mov es:[bx+si], eax + les bx, dword_F1EE + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F830 + mov es:[bx+si], eax + les bx, dword_F1F2 + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F834 + mov es:[bx+si], eax + les bx, dword_F1F6 + add bx, [bp+var_4] + mov eax, es:[bx] + les bx, dword ptr unk_F838 + mov es:[bx+si], eax + add si, 4 + add [bp+var_2], 20h ; ' ' + +loc_A9F8: ; CODE XREF: sub_A8CF+BDj + cmp [bp+var_2], 270h + jl short loc_A98E + inc di + +loc_AA00: ; CODE XREF: sub_A8CF+B6j + cmp di, 180h + jl short loc_A987 + pop di + pop si + leave + retn +sub_A8CF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AA0A proc near ; CODE XREF: sub_AB99+8p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push ds + push offset aMusic_txt ; "MUSIC.TXT" + call sub_9A8 + mov ax, [bp+arg_0] + imul ax, 348h + cwde + push eax + push 0 + call sub_9E4 + push ds + push offset unk_F83C + push 348h + call sub_8F4 + call sub_888 + xor si, si + jmp short loc_AA49 +; --------------------------------------------------------------------------- + +loc_AA3E: ; CODE XREF: sub_AA0A+42j + mov bx, si + imul bx, 2Ah + mov byte ptr [bx+2074h], 0 + inc si + +loc_AA49: ; CODE XREF: sub_AA0A+32j + cmp si, 14h + jl short loc_AA3E + pop si + pop bp + retn 2 +sub_AA0A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AA53 proc near ; CODE XREF: sub_AC06+1BEp + push bp + mov bp, sp + push word_F82E + call sub_25CE + push word_F832 + call sub_25CE + push word_F836 + call sub_25CE + push word_F83A + call sub_25CE + pop bp + retn +sub_AA53 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AA7C proc near ; CODE XREF: sub_AB99+Ep + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + xor cx, cx + mov si, 40h ; '@' + jmp short loc_AB05 +; --------------------------------------------------------------------------- + +loc_AA89: ; CODE XREF: sub_AA7C+8Cj + mov di, 130h + jmp short loc_AAFE +; --------------------------------------------------------------------------- + +loc_AA8E: ; CODE XREF: sub_AA7C+86j + 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_F82C + add bx, cx + mov eax, es:[bx] + les bx, dword_F1EA + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F830 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1EE + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F834 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1F2 + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F838 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1F6 + add bx, [bp+var_2] + mov es:[bx], eax + add cx, 4 + add di, 20h ; ' ' + +loc_AAFE: ; CODE XREF: sub_AA7C+10j + cmp di, 270h + jl short loc_AA8E + inc si + +loc_AB05: ; CODE XREF: sub_AA7C+Bj + cmp si, 50h ; 'P' + jl loc_AA89 + mov si, 50h ; 'P' + jmp short loc_AB8D +; --------------------------------------------------------------------------- + +loc_AB11: ; CODE XREF: sub_AA7C+115j + mov di, 130h + jmp short loc_AB86 +; --------------------------------------------------------------------------- + +loc_AB16: ; CODE XREF: sub_AA7C+10Ej + 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_F82C + add bx, cx + mov eax, es:[bx] + les bx, dword_F1EA + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F830 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1EE + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F834 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1F2 + add bx, [bp+var_2] + mov es:[bx], eax + les bx, dword ptr unk_F838 + add bx, cx + mov eax, es:[bx] + les bx, dword_F1F6 + add bx, [bp+var_2] + mov es:[bx], eax + add cx, 4 + add di, 20h ; ' ' + +loc_AB86: ; CODE XREF: sub_AA7C+98j + cmp di, 270h + jl short loc_AB16 + inc si + +loc_AB8D: ; CODE XREF: sub_AA7C+93j + cmp si, 180h + jl loc_AB11 + pop di + pop si + leave + retn +sub_AA7C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AB99 proc near ; CODE XREF: sub_AC06+9Fp sub_AC06+AEp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + push [bp+arg_0] + call sub_AA0A + call sub_A5F6 + call sub_AA7C + push large 1300040h + push 1Fh + push ds + push offset unk_F83C + call sub_C6DB + mov di, 1 + jmp short loc_ABDC +; --------------------------------------------------------------------------- + +loc_ABC0: ; CODE XREF: sub_AB99+46j + push 130h + lea ax, [di+4] + shl ax, 4 + push ax + push 1Dh + push ds + mov ax, di + imul ax, 2Ah + add ax, 204Ch + push ax + call sub_C6DB + inc di + +loc_ABDC: ; CODE XREF: sub_AB99+25j + cmp di, 14h + jl short loc_ABC0 + xor si, si + jmp short loc_ABFA +; --------------------------------------------------------------------------- + +loc_ABE5: ; CODE XREF: sub_AB99+65j + les bx, dword_F1EA + add bx, si + mov eax, es:[bx] + mov es, word_F82A + mov es:[si], eax + add si, 4 + +loc_ABFA: ; CODE XREF: sub_AB99+4Aj + cmp si, 7D00h + jl short loc_ABE5 + pop di + pop si + pop bp + retn 2 +sub_AB99 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AC06 proc far ; CODE XREF: sub_A0E0+D6p + push bp + mov bp, sp + push si + xor si, si + jmp short loc_AC15 +; --------------------------------------------------------------------------- + +loc_AC0E: ; CODE XREF: sub_AC06+12j + push si + call sub_C69C + inc si + +loc_AC15: ; CODE XREF: sub_AC06+6j + cmp si, 20h ; ' ' + jl short loc_AC0E + call sub_269A + call sub_21F4 + mov byte ptr word_F828+1, 1 + mov word_DAC4, 0 + call far ptr loc_1AA4 + 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_114C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aOp3_pi ; "op3.pi" + call sub_C940 + push 0 + call sub_C356 + push large 0 + push 0 + call sub_C37B + push ds + push offset unk_F4B0 + push large [dword_F498] + call sub_12DC + mov al, byte_DE83 + mov byte ptr word_F828, al + push word_F828 + call sub_A590 + push 0 + call sub_1186 + 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_A5B7 + call sub_A8CF + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_DE83 + mov ah, 0 + push ax + call sub_AB99 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_DE83 + mov ah, 0 + push ax + call sub_AB99 + mov word_DAC4, 64h ; 'd' + call far ptr loc_1AA4 + +loc_ACC2: ; CODE XREF: sub_AC06+CBj + ; sub_AC06+1A0j + call sub_C986 + cmp word_F296, 0 + jz short loc_ACD3 + call sub_A899 + jmp short loc_ACC2 +; --------------------------------------------------------------------------- + +loc_ACD3: ; CODE XREF: sub_AC06+C6j + ; sub_AC06+1A7j + call sub_C986 + test byte ptr word_F296, 1 + jz short loc_AD0E + push word_F828 + push 3 + call sub_A51E + cmp byte ptr word_F828, 0 + jbe short loc_ACF5 + dec byte ptr word_F828 + jmp short loc_ACFA +; --------------------------------------------------------------------------- + +loc_ACF5: ; CODE XREF: sub_AC06+E7j + mov byte ptr word_F828, 14h + +loc_ACFA: ; CODE XREF: sub_AC06+EDj + cmp byte ptr word_F828, 13h + jnz short loc_AD05 + dec byte ptr word_F828 + +loc_AD05: ; CODE XREF: sub_AC06+F9j + push word_F828 + push 0Fh + call sub_A51E + +loc_AD0E: ; CODE XREF: sub_AC06+D7j + test byte ptr word_F296, 2 + jz short loc_AD44 + push word_F828 + push 3 + call sub_A51E + cmp byte ptr word_F828, 14h + jnb short loc_AD2B + inc byte ptr word_F828 + jmp short loc_AD30 +; --------------------------------------------------------------------------- + +loc_AD2B: ; CODE XREF: sub_AC06+11Dj + mov byte ptr word_F828, 0 + +loc_AD30: ; CODE XREF: sub_AC06+123j + cmp byte ptr word_F828, 13h + jnz short loc_AD3B + inc byte ptr word_F828 + +loc_AD3B: ; CODE XREF: sub_AC06+12Fj + push word_F828 + push 0Fh + call sub_A51E + +loc_AD44: ; CODE XREF: sub_AC06+10Dj + test byte ptr word_F296, 20h + jnz short loc_AD52 + test byte ptr word_F296+1, 20h + jz short loc_AD9A + +loc_AD52: ; CODE XREF: sub_AC06+143j + cmp byte ptr word_F828, 14h + jz short loc_ADB0 + push 100h + call sub_C403 + push 600h + mov al, byte ptr word_F828 + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+646h] + call sub_BF52 + add sp, 6 + push 0 + call sub_C403 + mov al, byte ptr word_F828 + mov byte_DE83, al + mov ah, 0 + push ax + call sub_AB99 + call sub_A899 + mov al, byte ptr word_F828 + mov ah, 0 + push ax + call sub_AB99 + +loc_AD9A: ; CODE XREF: sub_AC06+14Aj + test byte ptr word_F296+1, 10h + jnz short loc_ADB0 + cmp word_F296, 0 + jnz loc_ACC2 + call sub_A899 + jmp loc_ACD3 +; --------------------------------------------------------------------------- + +loc_ADB0: ; CODE XREF: sub_AC06+151j + ; sub_AC06+199j ... + call sub_C986 + cmp word_F296, 0 + jz short loc_ADC1 + call sub_A899 + jmp short loc_ADB0 +; --------------------------------------------------------------------------- + +loc_ADC1: ; CODE XREF: sub_AC06+1B4j + call sub_A5E8 + call sub_AA53 + 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_114C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + pop si + pop bp + retf +sub_AC06 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ADE2 proc near ; CODE XREF: _main+8Bp + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov [bp+var_2], 0 + mov [bp+var_3], 0 + push ds + push offset aOpwin_bft ; "opwin.bft" + call sub_27FE + push 100h + call sub_C403 + push 600h + push ds + push offset aOp_m ; "op.m" + call sub_BF52 + add sp, 6 + push 0 + push ds + push offset aTl01_pi ; "TL01.PI" + call sub_C940 + mov word_DAC4, 0 + call far ptr loc_1AA4 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push 0 + call sub_C37B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_C356 + push large 0 + push 0 + call sub_C37B + push 2 + call sub_734 + mov byte_E9D5, 0 + mov byte_E9D6, 0 + mov byte_E9D7, 0 + call far ptr loc_1AA4 + mov byte_E9C9, 0 + mov byte_E9CA, 0 + mov byte_E9CB, 0 + call far ptr loc_1AA4 + push ds + push offset unk_F4B0 + push large [dword_F498] + call sub_12DC + push 0 + push ds + push offset aTl02_pi ; "TL02.PI" + call sub_C940 + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov si, 0A0h ; ' ' + jmp short loc_AF02 +; --------------------------------------------------------------------------- + +loc_AEA0: ; CODE XREF: sub_ADE2+123j + push 1 + call sub_C19E + mov al, byte ptr [bp+var_2] + mov byte_E9D5, al + mov byte_E9D6, al + mov byte_E9D7, al + call far ptr loc_1AA4 + cmp [bp+var_2], 80h ; '€' + jg short loc_AECB + mov al, byte ptr [bp+var_2] + mov byte_E9C9, al + mov byte_E9CA, al + mov byte_E9CB, al + +loc_AECB: ; CODE XREF: sub_ADE2+DBj + call far ptr loc_1AA4 + cmp [bp+var_2], 64h ; 'd' + jg short loc_AEE1 + mov ax, [bp+var_2] + mov word_DAC4, ax + call far ptr loc_1AA4 + +loc_AEE1: ; CODE XREF: sub_ADE2+F2j + add [bp+var_2], 2 + mov dx, 0A4h ; '¤' + mov al, [bp+var_3] + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, [bp+var_3] + mov [bp+var_3], al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 4 + call sub_734 + sub si, 2 + +loc_AF02: ; CODE XREF: sub_ADE2+BCj + cmp si, 11h + jg short loc_AEA0 + jmp short loc_AF25 +; --------------------------------------------------------------------------- + +loc_AF09: ; CODE XREF: sub_ADE2+148j + mov al, byte ptr [bp+var_2] + mov byte_E9D5, al + mov byte_E9D6, al + mov byte_E9D7, al + call far ptr loc_1AA4 + add [bp+var_2], 2 + push 1 + call sub_C19E + +loc_AF25: ; CODE XREF: sub_ADE2+125j + cmp [bp+var_2], 0FFh + jl short loc_AF09 + mov word_E9D8, 0 + call sub_B3EF + +loc_AF35: ; CODE XREF: sub_ADE2+158j + cmp word_E9D8, 10h + jb short loc_AF35 + xor si, si + jmp short loc_AF65 +; --------------------------------------------------------------------------- + +loc_AF40: ; CODE XREF: sub_ADE2+186j + mov word_DAC4, 0C8h ; 'È' + call far ptr loc_1AA4 + push 1 + call sub_C19E + mov word_DAC4, 64h ; 'd' + call far ptr loc_1AA4 + push 1 + call sub_C19E + inc si + +loc_AF65: ; CODE XREF: sub_ADE2+15Cj + cmp si, 8 + jl short loc_AF40 + mov word_DAC4, 0C8h ; 'È' + call far ptr loc_1AA4 + push 0 + call sub_C403 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_C356 + push large 0 + push 0 + call sub_C37B + push 1 + call sub_C19E + mov word_DAC4, 64h ; 'd' + call far ptr loc_1AA4 + push 1 + call sub_C19E + xor si, si + jmp short loc_AFD9 +; --------------------------------------------------------------------------- + +loc_AFB4: ; CODE XREF: sub_ADE2+1FAj + mov word_DAC4, 0C8h ; 'È' + call far ptr loc_1AA4 + push 1 + call sub_C19E + mov word_DAC4, 64h ; 'd' + call far ptr loc_1AA4 + push 1 + call sub_C19E + inc si + +loc_AFD9: ; CODE XREF: sub_ADE2+1D0j + cmp si, 8 + jl short loc_AFB4 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push 0 + call sub_C37B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset unk_F4B0 + push large [dword_F498] + call sub_12DC + call sub_B38D + pop si + leave + retn +sub_ADE2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B008 proc near ; CODE XREF: sub_A0E0:loc_A19Ap + ; _main+A2p + push bp + mov bp, sp + push si + push ds + push offset aOpwin_bft ; "opwin.bft" + call sub_27FE + push 100h + call sub_C403 + push 600h + push ds + push offset aOp_m ; "op.m" + call sub_BF52 + add sp, 6 + mov word_DAC4, 0 + call far ptr loc_1AA4 + push 0 + push ds + push offset aTl02_pi ; "TL02.PI" + call sub_C940 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_B3EF + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push 0 + call sub_C37B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_C356 + push large 0 + push 0 + call sub_C37B + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset unk_F4B0 + push large [dword_F498] + call sub_12DC + call sub_B38D + push 0 + call sub_C403 + xor si, si + jmp short loc_B0A7 +; --------------------------------------------------------------------------- + +loc_B094: ; CODE XREF: sub_B008+A2j + mov word_DAC4, si + call far ptr loc_1AA4 + push 1 + call sub_C19E + add si, 4 + +loc_B0A7: ; CODE XREF: sub_B008+8Aj + cmp si, 64h ; 'd' + jle short loc_B094 + pop si + pop bp + retn +sub_B008 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B0AF proc near ; CODE XREF: sub_9BDF+19p sub_A203+10p + push bp + mov bp, sp + push si + mov si, 120h + jmp short loc_B0D2 +; --------------------------------------------------------------------------- + +loc_B0B8: ; CODE XREF: sub_B0AF+27j + push si + call sub_B10A + push si + push large 1000002h + call sub_28D8 + push 1 + call sub_C19E + add si, 8 + +loc_B0D2: ; CODE XREF: sub_B0AF+7j + cmp si, 188h + jl short loc_B0B8 + pop si + pop bp + retn +sub_B0AF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B0DB proc near ; CODE XREF: sub_A0E0+17p + push bp + mov bp, sp + push si + mov si, 180h + jmp short loc_B101 +; --------------------------------------------------------------------------- + +loc_B0E4: ; CODE XREF: sub_B0DB+2Aj + lea ax, [si+8] + push ax + call sub_B10A + push si + push large 1000002h + call sub_28D8 + push 1 + call sub_C19E + sub si, 8 + +loc_B101: ; CODE XREF: sub_B0DB+7j + cmp si, 118h + jge short loc_B0E4 + pop si + pop bp + retn +sub_B0DB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B10A proc near ; CODE XREF: sub_9E16+47p sub_B0AF+Ap ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + shr ax, 3 + mov di, 77B0h + add di, ax + mov ax, 0AD00h + mov es, ax + assume es:nothing + +loc_B11F: ; CODE XREF: sub_B10A+56j + mov al, 1 + out 0A6h, al ; Interrupt Controller #2, 8259A + mov dx, es:[di] + mov ax, 0B500h + mov es, ax + assume es:nothing + mov cx, es:[di] + mov ax, 0BD00h + mov es, ax + assume es:nothing + mov bx, es:[di] + mov ax, 0E500h + mov es, ax + assume es:nothing + mov si, es:[di] + xor al, al + out 0A6h, al ; Interrupt Controller #2, 8259A + mov es:[di], si + mov ax, 0BD00h + mov es, ax + assume es:nothing + mov es:[di], bx + mov ax, 0B500h + mov es, ax + assume es:nothing + mov es:[di], cx + mov ax, 0AD00h + mov es, ax + assume es:nothing + mov es:[di], dx + sub di, 50h ; 'P' + jnb short loc_B11F + pop di + pop si + pop bp + retn 2 +sub_B10A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B168 proc near ; CODE XREF: sub_B249+6Fp + +var_4 = word ptr -4 +var_1 = byte ptr -1 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov [bp+var_4], 0 + call sub_1D12 + mov byte_FC50, al + call sub_1D12 + mov byte_FC51, al + call sub_1D12 + mov byte_FBD7, al + mov si, 2396h + xor di, di + jmp short loc_B19B +; --------------------------------------------------------------------------- + +loc_B192: ; CODE XREF: sub_B168+37j + mov al, [si] + mov ah, 0 + add [bp+var_4], ax + inc di + inc si + +loc_B19B: ; CODE XREF: sub_B168+28j + cmp di, 0CCh ; 'Ì' + jl short loc_B192 + mov ax, [bp+var_4] + mov word_FB84, ax + mov si, 2460h + dec si + mov al, byte_FC51 + mov [bp+var_1], al + mov di, 0CBh ; 'Ë' + jmp short loc_B1D4 +; --------------------------------------------------------------------------- + +loc_B1B6: ; CODE XREF: sub_B168+6Ej + mov al, [si] + mov dl, byte_FC50 + add dl, [bp+var_1] + sub al, dl + mov [si], al + mov al, [si] + mov [bp+var_1], al + mov al, byte_FC51 + ror [bp+var_1], 3 + xor [bp+var_1], al + dec di + dec si + +loc_B1D4: ; CODE XREF: sub_B168+4Cj + or di, di + jge short loc_B1B6 + push ds + push word_E1F2 + call sub_7C8 + mov ax, [bp+arg_0] + imul ax, 0CEh + movzx eax, ax + push eax + push 0 + call sub_9E4 + push ds + push offset word_FB84 + push 0CEh ; 'Î' + call sub_A26 + call sub_888 + pop di + pop si + leave + retn 2 +sub_B168 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B20D proc near ; CODE XREF: sub_B249+72p sub_B2F2+51p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov si, 2394h + xor dx, dx + jmp short loc_B235 +; --------------------------------------------------------------------------- + +loc_B219: ; CODE XREF: sub_B20D+2Cj + mov al, [si+1] + mov [bp+var_1], al + mov al, byte_FC51 + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, byte_FC50 + add al, [bp+var_1] + add al, [si] + mov [si], al + inc dx + inc si + +loc_B235: ; CODE XREF: sub_B20D+Aj + cmp dx, 0CBh ; 'Ë' + jl short loc_B219 + mov al, byte_FC50 + add al, byte_FC51 + add al, [si] + mov [si], al + pop si + leave + retn +sub_B20D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B249 proc near ; CODE XREF: sub_B2F2:loc_B34Dp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 29h ; ')' + xor si, si + jmp short loc_B28A +; --------------------------------------------------------------------------- + +loc_B257: ; CODE XREF: sub_B249+44j + xor di, di + jmp short loc_B266 +; --------------------------------------------------------------------------- + +loc_B25B: ; CODE XREF: sub_B249+20j + mov bx, si + shl bx, 3 + mov byte ptr [bx+di+2396h], 2Ah ; '*' + inc di + +loc_B266: ; CODE XREF: sub_B249+10j + cmp di, 8 + jl short loc_B25B + xor di, di + jmp short loc_B27A +; --------------------------------------------------------------------------- + +loc_B26F: ; CODE XREF: sub_B249+34j + mov bx, si + imul bx, 0Ah + mov byte ptr [bx+di+23E8h], 20h ; ' ' + inc di + +loc_B27A: ; CODE XREF: sub_B249+24j + cmp di, 0Ah + jl short loc_B26F + mov byte ptr [si+244Ch], 0 + mov byte ptr [si+2456h], 21h ; '!' + inc si + +loc_B28A: ; CODE XREF: sub_B249+Cj + cmp si, 0Ah + jl short loc_B257 + mov byte_FBDC, 21h ; '!' + mov di, 1 + jmp short loc_B2A9 +; --------------------------------------------------------------------------- + +loc_B299: ; CODE XREF: sub_B249+63j + mov bx, di + imul bx, 0Ah + mov al, [bp+var_1] + mov [bx+23EBh], al + inc di + dec [bp+var_1] + +loc_B2A9: ; CODE XREF: sub_B249+4Ej + cmp di, 0Ah + jl short loc_B299 + mov byte_FBD6, 12h + xor si, si + jmp short loc_B2BF +; --------------------------------------------------------------------------- + +loc_B2B7: ; CODE XREF: sub_B249+79j + push si + call sub_B168 + call sub_B20D + inc si + +loc_B2BF: ; CODE XREF: sub_B249+6Cj + cmp si, 4 + jl short loc_B2B7 + pop di + pop si + leave + retn +sub_B249 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2C8 proc near ; CODE XREF: sub_B2F2+54p + push bp + mov bp, sp + push si + xor cx, cx + mov si, 2396h + xor dx, dx + jmp short loc_B2DD +; --------------------------------------------------------------------------- + +loc_B2D5: ; CODE XREF: sub_B2C8+19j + mov al, [si] + mov ah, 0 + add cx, ax + inc dx + inc si + +loc_B2DD: ; CODE XREF: sub_B2C8+Bj + cmp dx, 0CCh ; 'Ì' + jl short loc_B2D5 + cmp word_FB84, cx + jz short loc_B2ED + mov al, 1 + jmp short loc_B2EF +; --------------------------------------------------------------------------- + +loc_B2ED: ; CODE XREF: sub_B2C8+1Fj + mov al, 0 + +loc_B2EF: ; CODE XREF: sub_B2C8+23j + pop si + pop bp + retn +sub_B2C8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2F2 proc near ; CODE XREF: sub_B35D+Ep + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push ds + push word_E1F2 + call sub_8D8 + or ax, ax + jnz short loc_B314 + push ds + push word_E1F2 + call sub_898 + call sub_888 + jmp short loc_B34D +; --------------------------------------------------------------------------- + +loc_B314: ; CODE XREF: sub_B2F2+Fj + push ds + push word_E1F2 + call sub_9A8 + mov ax, [bp+arg_0] + imul ax, 0CEh + movzx eax, ax + push eax + push 0 + call sub_9E4 + push ds + push offset word_FB84 + push 0CEh ; 'Î' + call sub_8F4 + call sub_888 + call sub_B20D + call sub_B2C8 + or al, al + jz short loc_B357 + +loc_B34D: ; CODE XREF: sub_B2F2+20j + call sub_B249 + mov ax, 1 + pop bp + retn 2 +; --------------------------------------------------------------------------- + +loc_B357: ; CODE XREF: sub_B2F2+59j + xor ax, ax + pop bp + retn 2 +sub_B2F2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B35D proc near ; CODE XREF: sub_B424+AAp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov [bp+var_1], 7 + xor si, si + jmp short loc_B382 +; --------------------------------------------------------------------------- + +loc_B36A: ; CODE XREF: sub_B35D+28j + push si + call sub_B2F2 + or ax, ax + jz short loc_B376 + mov al, 7 + jmp short loc_B38A +; --------------------------------------------------------------------------- + +loc_B376: ; CODE XREF: sub_B35D+13j + cmp byte_FBD6, 63h ; 'c' + jnz short loc_B381 + mov [bp+var_1], 9 + +loc_B381: ; CODE XREF: sub_B35D+1Ej + inc si + +loc_B382: ; CODE XREF: sub_B35D+Bj + cmp si, 4 + jl short loc_B36A + mov al, [bp+var_1] + +loc_B38A: ; CODE XREF: sub_B35D+17j + pop si + leave + retn +sub_B35D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B38D proc near ; CODE XREF: _main+74p sub_ADE2+220p ... + push bp + mov bp, sp + push si + call sub_CB68 + xor si, si + jmp short loc_B3B0 +; --------------------------------------------------------------------------- + +loc_B39A: ; CODE XREF: sub_B38D+26j + lea ax, [si+2] + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 0 + call sub_C48A + inc si + +loc_B3B0: ; CODE XREF: sub_B38D+Bj + cmp si, 3 + jl short loc_B39A + push 0Dh + push ds + push offset aSlex_cd2 ; "slex.cd2" + call sub_C680 + pop si + pop bp + retn +sub_B38D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B3C3 proc near ; CODE XREF: sub_A0E0+C0p _main+7Ap ... + push bp + mov bp, sp + push 1 + push ds + push offset a99sl_cdg ; "99sl.cdg" + push 0 + call sub_C48A + push 0Bh + push ds + push offset aSlwin_cdg ; "slwin.cdg" + push 0 + call sub_C514 + push 0Ch + push ds + push offset aSlex_cdg ; "slex.cdg" + push 0 + call sub_C514 + pop bp + retn +sub_B3C3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B3EF proc near ; CODE XREF: _main+77p sub_ADE2+150p ... + push bp + mov bp, sp + push si + push 0 + push large [off_E1FE] + push 0 + call sub_C48A + mov si, 3 + jmp short loc_B41C +; --------------------------------------------------------------------------- + +loc_B406: ; CODE XREF: sub_B3EF+30j + lea ax, [si+2] + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 0 + call sub_C48A + inc si + +loc_B41C: ; CODE XREF: sub_B3EF+15j + cmp si, 6 + jl short loc_B406 + pop si + pop bp + retn +sub_B3EF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B424 proc near ; CODE XREF: sub_BA88+3p sub_BC1F+4p ... + push bp + mov bp, sp + push si + mov word_E9D8, 0 + push 100h + call sub_C403 + push 600h + push ds + push offset aSelect_m ; "select.m" + call sub_BF52 + add sp, 6 + push 0 + call sub_C403 + mov word_FC64, 0C8h ; 'È' + les bx, dword_FC54 + assume es:nothing + mov eax, es:[bx+10h] + mov dword_DB02, eax + call sub_21F4 + call sub_269A + push ds + push offset aChname_bft ; "chname.bft" + call sub_27FE + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov byte_FC5C, 0 + push ds + push offset aTlsl_rgb ; "TLSL.RGB" + call sub_1D3C + call far ptr loc_1AA4 + mov si, 6 + jmp short loc_B4BC +; --------------------------------------------------------------------------- + +loc_B4A6: ; CODE XREF: sub_B424+9Bj + lea ax, [si+2] + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 0 + call sub_C48A + inc si + +loc_B4BC: ; CODE XREF: sub_B424+80j + cmp si, 9 + jl short loc_B4A6 + +loc_B4C1: ; CODE XREF: sub_B424+A2j + cmp word_E9D8, 1Eh + jb short loc_B4C1 + mov word_FC66, 8 + call sub_B35D + mov byte_FC68, al + pop si + pop bp + retn +sub_B424 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4D7 proc near ; CODE XREF: sub_BA88+EBp + ; sub_BA88:loc_BC18p ... + push bp + mov bp, sp + push si + xor si, si + jmp short loc_B4E6 +; --------------------------------------------------------------------------- + +loc_B4DF: ; CODE XREF: sub_B4D7+12j + push si + call sub_C69C + inc si + +loc_B4E6: ; CODE XREF: sub_B4D7+6j + cmp si, 16h + jl short loc_B4DF + call sub_269A + pop si + pop bp + retn +sub_B4D7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B4F3 proc near ; CODE XREF: sub_BA88+81p sub_BC1F+4Dp + push bp + mov bp, sp + push large 200060h + cmp byte_FC5A, 0 + jnz short loc_B50C + mov al, byte_FC58 + cbw + add ax, 2 + jmp short loc_B50E +; --------------------------------------------------------------------------- + +loc_B50C: ; CODE XREF: sub_B4F3+Ej + xor ax, ax + +loc_B50E: ; CODE XREF: sub_B4F3+17j + push ax + call sub_C020 + push large 1A00060h + cmp byte_FC5B, 0 + jnz short loc_B52A + mov al, byte_FC59 + cbw + add ax, 2 + jmp short loc_B52D +; --------------------------------------------------------------------------- + +loc_B52A: ; CODE XREF: sub_B4F3+2Cj + mov ax, 1 + +loc_B52D: ; CODE XREF: sub_B4F3+35j + push ax + call sub_C0D4 + pop bp + retn +sub_B4F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B535 proc near ; CODE XREF: sub_BD9A+2Ap + push bp + mov bp, sp + push large 200060h + cmp byte_FC5A, 0 + jnz short loc_B54E + mov al, byte_FC58 + cbw + add ax, 2 + jmp short loc_B550 +; --------------------------------------------------------------------------- + +loc_B54E: ; CODE XREF: sub_B535+Ej + xor ax, ax + +loc_B550: ; CODE XREF: sub_B535+17j + push ax + call sub_C020 + push large 1A00060h + push 1 + call sub_C020 + pop bp + retn +sub_B535 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B565 proc near ; CODE XREF: sub_BA88+84p sub_BC1F+50p ... + +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + push large 200130h + push 0Bh + call far ptr loc_CAF6 + les bx, dword_FC54 + cmp byte ptr es:[bx+28h], 1 + jz short loc_B590 + push large 1A00130h + push 0Bh + call far ptr loc_CAF6 + +loc_B590: ; CODE XREF: sub_B565+1Cj + push large 0C0000Eh + call sub_EC6 + mov [bp+var_2], 0 + mov [bp+var_4], 13Bh + jmp short loc_B625 +; --------------------------------------------------------------------------- + +loc_B5A7: ; CODE XREF: sub_B565+C4j + mov di, 5 + mov si, 8Ch ; 'Œ' + jmp short loc_B5C7 +; --------------------------------------------------------------------------- + +loc_B5AF: ; CODE XREF: sub_B565+76j + push si + push [bp+var_4] + lea ax, [si+8] + push ax + mov ax, [bp+var_4] + add ax, 0Fh + push ax + call sub_B02 + dec di + sub si, 0Bh + +loc_B5C7: ; CODE XREF: sub_B565+48j + mov al, byte_FC58 + cbw + imul ax, 3 + add ax, [bp+var_2] + mov bx, ax + mov al, [bx+0A32h] + mov ah, 0 + cmp ax, di + jl short loc_B5AF + les bx, dword_FC54 + cmp byte ptr es:[bx+28h], 1 + jz short loc_B61E + mov di, 5 + mov si, 20Ch + jmp short loc_B608 +; --------------------------------------------------------------------------- + +loc_B5F0: ; CODE XREF: sub_B565+B7j + push si + push [bp+var_4] + lea ax, [si+8] + push ax + mov ax, [bp+var_4] + add ax, 0Fh + push ax + call sub_B02 + dec di + sub si, 0Bh + +loc_B608: ; CODE XREF: sub_B565+89j + mov al, byte_FC59 + cbw + imul ax, 3 + add ax, [bp+var_2] + mov bx, ax + mov al, [bx+0A32h] + mov ah, 0 + cmp ax, di + jl short loc_B5F0 + +loc_B61E: ; CODE XREF: sub_B565+81j + inc [bp+var_2] + add [bp+var_4], 10h + +loc_B625: ; CODE XREF: sub_B565+40j + cmp [bp+var_2], 3 + jl loc_B5A7 + call sub_EF0 + pop di + pop si + leave + retn +sub_B565 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B636 proc near ; CODE XREF: sub_BA88+87p sub_BC1F+53p ... + push bp + mov bp, sp + push si + push di + mov di, 88h ; 'ˆ' + xor si, si + jmp short loc_B663 +; --------------------------------------------------------------------------- + +loc_B642: ; CODE XREF: sub_B636+34j + push 100h + push di + mov ax, si + add ax, ax + push ax + call sub_28D8 + push 140h + push di + mov ax, si + add ax, ax + inc ax + push ax + call sub_28D8 + inc si + add di, 14h + +loc_B663: ; CODE XREF: sub_B636+Aj + mov al, byte_FC68 + mov ah, 0 + cmp ax, si + jg short loc_B642 + pop di + pop si + pop bp + retn +sub_B636 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B670 proc near ; CODE XREF: sub_BA88+8Ap sub_BC1F+56p ... + push bp + mov bp, sp + push large 0A00130h + push 0Ch + call far ptr loc_CAF6 + push large 0B0013Ch + mov al, byte_FC58 + cbw + add ax, 0Dh + push ax + call far ptr loc_CAF6 + les bx, dword_FC54 + cmp byte ptr es:[bx+28h], 1 + jz short loc_B6BE + push large 2200130h + push 0Ch + call far ptr loc_CAF6 + push large 230013Ch + mov al, byte_FC59 + cbw + add ax, 0Dh + push ax + call far ptr loc_CAF6 + +loc_B6BE: ; CODE XREF: sub_B670+2Cj + pop bp + retn +sub_B670 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B6C0 proc near ; CODE XREF: sub_B747+4Bp sub_B747+66p ... + +var_7 = byte ptr -7 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 +arg_6 = byte ptr 0Ah +arg_8 = byte ptr 0Ch + + enter 8, 0 + push si + mov si, [bp+arg_4] + mov [bp+var_6], 0 + jmp short loc_B73B +; --------------------------------------------------------------------------- + +loc_B6CF: ; CODE XREF: sub_B6C0+80j + mov al, byte ptr [bp+var_6] + add al, [bp+arg_8] + mov [bp+var_7], al + mov ah, 0 + imul [bp+arg_2] + mov bx, 100h + cwd + idiv bx + mov [bp+var_7], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+396h] + push si + push 140h + call sub_C005 + add sp, 6 + mov [bp+var_2], ax + mov al, byte ptr [bp+var_6] + add al, [bp+arg_6] + mov [bp+var_7], al + mov ah, 0 + imul [bp+arg_0] + mov bx, 100h + cwd + idiv bx + mov [bp+var_7], al + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+316h] + push si + push 0C8h ; 'È' + call sub_C005 + add sp, 6 + mov [bp+var_4], ax + push [bp+var_2] + push ax + call sub_E82 + inc [bp+var_6] + +loc_B73B: ; CODE XREF: sub_B6C0+Dj + cmp [bp+var_6], 100h + jb short loc_B6CF + pop si + leave + retn 0Ah +sub_B6C0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B747 proc near ; CODE XREF: sub_BA88:loc_BB06p + ; sub_BC1F:loc_BC69p ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 6, 0 + push si + push di + mov al, byte ptr word_FC52 + mov ah, 0 + mov si, ax + cmp si, 80h ; '€' + jl short loc_B761 + mov ax, 100h + sub ax, si + mov si, ax + +loc_B761: ; CODE XREF: sub_B747+11j + mov ax, si + add ax, si + add ax, 100h + mov [bp+var_4], ax + add si, 100h + mov ax, si + add ax, si + mov [bp+var_2], ax + push large 0C00006h + call sub_EC6 + push word_FC52 + mov al, byte ptr word_FC52 + add al, al + push ax + push 0DCh ; 'Ü' + push si + push [bp+var_2] + call sub_B6C0 + mov al, 0 + sub al, byte ptr word_FC52 + push ax + mov al, byte ptr word_FC52 + mov ah, 0 + cwd + sub ax, dx + sar ax, 1 + push ax + push 78h ; 'x' + push [bp+var_4] + push si + call sub_B6C0 + push large 0C00005h + call sub_EC6 + mov ax, word_FC66 + cwd + sub ax, dx + sar ax, 1 + mov di, ax + test byte ptr word_FC66, 1 + jz short loc_B7CD + inc di + +loc_B7CD: ; CODE XREF: sub_B747+83j + mov [bp+var_6], 1 + jmp short loc_B824 +; --------------------------------------------------------------------------- + +loc_B7D4: ; CODE XREF: sub_B747+E0j + mov al, byte ptr [bp+var_6] + add al, al + mov dl, byte ptr word_FC52 + sub dl, al + push dx + mov al, byte ptr word_FC52 + add al, al + mov dl, byte ptr [bp+var_6] + shl dl, 2 + sub al, dl + push ax + push 0DCh ; 'Ü' + push si + push [bp+var_2] + call sub_B6C0 + mov al, 0 + sub al, byte ptr word_FC52 + mov dl, byte ptr [bp+var_6] + add dl, dl + add al, dl + push ax + mov al, byte ptr word_FC52 + mov ah, 0 + mov dx, [bp+var_6] + add dx, dx + sub ax, dx + cwd + sub ax, dx + sar ax, 1 + push ax + push 78h ; 'x' + push [bp+var_4] + push si + call sub_B6C0 + inc [bp+var_6] + +loc_B824: ; CODE XREF: sub_B747+8Bj + cmp [bp+var_6], di + jle short loc_B7D4 + push large 0C00001h + call sub_EC6 + lea ax, [di+1] + mov [bp+var_6], ax + jmp short loc_B88C +; --------------------------------------------------------------------------- + +loc_B83C: ; CODE XREF: sub_B747+14Cj + mov al, byte ptr [bp+var_6] + add al, al + mov dl, byte ptr word_FC52 + sub dl, al + push dx + mov al, byte ptr word_FC52 + add al, al + mov dl, byte ptr [bp+var_6] + shl dl, 2 + sub al, dl + push ax + push 0DCh ; 'Ü' + push si + push [bp+var_2] + call sub_B6C0 + mov al, 0 + sub al, byte ptr word_FC52 + mov dl, byte ptr [bp+var_6] + add dl, dl + add al, dl + push ax + mov al, byte ptr word_FC52 + mov ah, 0 + mov dx, [bp+var_6] + add dx, dx + sub ax, dx + cwd + sub ax, dx + sar ax, 1 + push ax + push 78h ; 'x' + push [bp+var_4] + push si + call sub_B6C0 + inc [bp+var_6] + +loc_B88C: ; CODE XREF: sub_B747+F3j + mov ax, [bp+var_6] + cmp ax, word_FC66 + jle short loc_B83C + call sub_EF0 + mov al, byte ptr word_FC52 + add al, 2 + mov byte ptr word_FC52, al + pop di + pop si + leave + retn +sub_B747 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B8A6 proc near ; CODE XREF: sub_BA88+9Dp sub_BA88+B0p ... + +var_2 = word ptr -2 +arg_0 = byte ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+arg_2] + mov ax, si + shl ax, 4 + shl ax, 3 + add ax, 0F0h ; 'ð' + mov di, ax + mov al, [si+2468h] + cbw + imul ax, 14h + add ax, 80h ; '€' + mov [bp+var_2], ax + push di + push ax + push 10h + push ds + mov ax, si + imul ax, 3 + add ax, 0A4Dh + push ax + mov al, [bp+arg_0] + mov ah, 0 + push ax + call sub_1232 + push di + mov ax, [bp+var_2] + add ax, 10h + push ax + push 10h + push ds + mov ax, si + imul ax, 3 + add ax, 0A53h + push ax + mov al, [bp+arg_0] + mov ah, 0 + push ax + call sub_1232 + pop di + pop si + leave + retn 4 +sub_B8A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B908 proc near ; CODE XREF: sub_BA88+C2p sub_BA88+CBp ... + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov di, [bp+arg_2] + mov si, [bp+arg_0] + cmp byte ptr [si+246Ah], 0 + jnz loc_BA82 + cmp byte ptr [si+0A59h], 0 + jz short loc_B932 + or di, di + jnz loc_BA82 + mov byte ptr [si+0A59h], 0 + jmp loc_BA82 +; --------------------------------------------------------------------------- + +loc_B932: ; CODE XREF: sub_B908+1Aj + test di, 1 + jz short loc_B951 + dec byte ptr [si+2468h] + cmp byte ptr [si+2468h], 0 + jge short loc_B94C + mov al, byte_FC68 + dec al + mov [si+2468h], al + +loc_B94C: ; CODE XREF: sub_B908+39j + mov byte ptr [si+0A59h], 1 + +loc_B951: ; CODE XREF: sub_B908+2Ej + test di, 2 + jz short loc_B974 + inc byte ptr [si+2468h] + mov al, [si+2468h] + cbw + mov dl, byte_FC68 + mov dh, 0 + cmp ax, dx + jl short loc_B96F + mov byte ptr [si+2468h], 0 + +loc_B96F: ; CODE XREF: sub_B908+60j + mov byte ptr [si+0A59h], 1 + +loc_B974: ; CODE XREF: sub_B908+4Dj + test di, 20h + ; Hack + db 00fh + db 084h + db 07fh + db 000h + mov al, [si+2468h] + cbw + mov [bp+var_2], ax + les bx, dword_FC54 + add bx, si + mov al, byte ptr [bp+var_2] + add al, al + inc al + mov es:[bx+0Ch], al + push 1 + call sub_23E6 + mov bx, 1 + sub bx, si + cmp byte ptr [bx+246Ah], 0 + jz short loc_B9CC + les bx, dword_FC54 + mov al, es:[bx+0Ch] + cmp al, es:[bx+0Dh] + jnz short loc_B9CC + add bx, si + inc byte ptr es:[bx+0Ch] + push si + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 1 + jmp short loc_B9DA +; --------------------------------------------------------------------------- + +loc_B9CC: ; CODE XREF: sub_B908+9Ej sub_B908+ACj + push si + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 0 + +loc_B9DA: ; CODE XREF: sub_B908+C2j + call sub_C48A + mov bx, 1 + sub bx, si + cmp byte ptr [bx+246Ah], 0 + jz short loc_B9F1 + mov word_FC62, 0 + +loc_B9F1: ; CODE XREF: sub_B908+E1j + mov byte ptr [si+246Ah], 1 + mov byte ptr [si+0A59h], 1 + +loc_B9FB: ; CODE XREF: sub_B908+70j + test di, 10h + ; Hack + db 00fh + db 084h + db 07fh + db 000h + mov al, [si+2468h] + cbw + mov [bp+var_2], ax + les bx, dword_FC54 + add bx, si + mov al, byte ptr [bp+var_2] + add al, al + add al, 2 + mov es:[bx+0Ch], al + push 1 + call sub_23E6 + mov bx, 1 + sub bx, si + cmp byte ptr [bx+246Ah], 0 + jz short loc_BA53 + les bx, dword_FC54 + mov al, es:[bx+0Ch] + cmp al, es:[bx+0Dh] + jnz short loc_BA53 + add bx, si + dec byte ptr es:[bx+0Ch] + push si + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 0 + jmp short loc_BA61 +; --------------------------------------------------------------------------- + +loc_BA53: ; CODE XREF: sub_B908+125j + ; sub_B908+133j + push si + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+0A0Eh] + push 1 + +loc_BA61: ; CODE XREF: sub_B908+149j + call sub_C48A + mov bx, 1 + sub bx, si + cmp byte ptr [bx+246Ah], 0 + jz short loc_BA78 + mov word_FC62, 0 + +loc_BA78: ; CODE XREF: sub_B908+168j + mov byte ptr [si+246Ah], 1 + mov byte ptr [si+0A59h], 1 + +loc_BA82: ; CODE XREF: sub_B908+11j sub_B908+1Ej ... + pop di + pop si + leave + retn 4 +sub_B908 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA88 proc near ; CODE XREF: sub_9BDF+107p + push bp + mov bp, sp + call sub_B424 + call sub_21F4 + les bx, dword_FC54 + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov byte_FC58, al + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov byte_FC59, al + mov byte_FC5A, 0 + mov byte_FC5B, 0 + cmp byte ptr es:[bx+16h], 0 + jnz short loc_BAD4 + mov word ptr dword_FC5E+2, seg seg002 + mov word ptr dword_FC5E, 0AFAh + jmp short loc_BAF9 +; --------------------------------------------------------------------------- + +loc_BAD4: ; CODE XREF: sub_BA88+3Cj + les bx, dword_FC54 + cmp byte ptr es:[bx+16h], 1 + jnz short loc_BAED + mov word ptr dword_FC5E+2, seg seg002 + mov word ptr dword_FC5E, 0B04h + jmp short loc_BAF9 +; --------------------------------------------------------------------------- + +loc_BAED: ; CODE XREF: sub_BA88+55j + mov word ptr dword_FC5E+2, seg seg002 + mov word ptr dword_FC5E, 0B26h + +loc_BAF9: ; CODE XREF: sub_BA88+4Aj sub_BA88+63j + push 10h + call sub_C19E + mov word_FC62, 0 + +loc_BB06: ; CODE XREF: sub_BA88+18Dj + call sub_B747 + call sub_B4F3 + call sub_B565 + call sub_B636 + call sub_B670 + push 0 + cmp byte_FC5A, 0 + jz short loc_BB22 + mov al, 0Fh + jmp short loc_BB24 +; --------------------------------------------------------------------------- + +loc_BB22: ; CODE XREF: sub_BA88+94j + mov al, 8 + +loc_BB24: ; CODE XREF: sub_BA88+98j + push ax + call sub_B8A6 + push 1 + cmp byte_FC5B, 0 + jz short loc_BB35 + mov al, 0Fh + jmp short loc_BB37 +; --------------------------------------------------------------------------- + +loc_BB35: ; CODE XREF: sub_BA88+A7j + mov al, 0Ah + +loc_BB37: ; CODE XREF: sub_BA88+ABj + push ax + call sub_B8A6 + call sub_C1B4 + call dword_FC5E + push word_F292 + push 0 + call sub_B908 + push word_F294 + push 1 + call sub_B908 + test byte ptr word_F296+1, 10h + jz short loc_BB82 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_21F4 + call sub_B4D7 + push 100h + call sub_C403 + mov al, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_BB82: ; CODE XREF: sub_BA88+D3j + cmp byte_FC5A, 0 + jz short loc_BBB7 + cmp byte_FC5B, 0 + jz short loc_BBB7 + call sub_21F4 + cmp word_FC62, 10h + jb short loc_BBB0 + mov ax, word_FC62 + imul ax, 6 + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_DAC4, dx + call far ptr loc_1AA4 + +loc_BBB0: ; CODE XREF: sub_BA88+112j + cmp word_FC62, 20h ; ' ' + ja short loc_BC18 + +loc_BBB7: ; CODE XREF: sub_BA88+FFj + ; sub_BA88+106j ... + cmp word_E9D8, 3 + jb short loc_BBB7 + cmp word_E9D8, 4 + jbe short loc_BBD0 + cmp word_FC66, 1 + jle short loc_BBD0 + dec word_FC66 + +loc_BBD0: ; CODE XREF: sub_BA88+13Bj + ; sub_BA88+142j + mov word_E9D8, 0 + mov dx, 0A6h ; '¦' + mov al, byte_FC5C + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte_FC5C + mov byte_FC5C, al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_EC6 + push large 0 + push large 4F018Fh + call sub_BD2 + call sub_EF0 + inc word_FC62 + les bx, dword_FC54 + inc dword ptr es:[bx+10h] + jmp loc_BB06 +; --------------------------------------------------------------------------- + +loc_BC18: ; CODE XREF: sub_BA88+12Dj + call sub_B4D7 + mov al, 0 + pop bp + retn +sub_BA88 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC1F proc near ; CODE XREF: sub_9BDF:loc_9CEFp + push bp + mov bp, sp + push si + call sub_B424 + les bx, dword_FC54 + mov al, es:[bx+0Ch] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov byte_FC58, al + mov al, es:[bx+0Dh] + mov ah, 0 + dec ax + cwd + sub ax, dx + sar ax, 1 + mov byte_FC59, al + mov byte_FC5A, 0 + mov byte_FC5B, 0 + mov word ptr dword_FC5E+2, seg seg002 + mov word ptr dword_FC5E, 0AD6h + xor si, si + jmp loc_BD8B +; --------------------------------------------------------------------------- + +loc_BC63: ; CODE XREF: sub_BC1F+16Fj + mov word_FC62, 0 + +loc_BC69: ; CODE XREF: sub_BC1F+168j + call sub_B747 + call sub_B4F3 + call sub_B565 + call sub_B636 + call sub_B670 + call sub_C1B4 + call dword_FC5E + push 0 + cmp byte_FC5A, 0 + jz short loc_BC8E + mov al, 0Fh + jmp short loc_BC90 +; --------------------------------------------------------------------------- + +loc_BC8E: ; CODE XREF: sub_BC1F+69j + mov al, 8 + +loc_BC90: ; CODE XREF: sub_BC1F+6Dj + push ax + call sub_B8A6 + cmp byte_FC5A, 0 + jz short loc_BCAE + push 1 + cmp byte_FC5B, 0 + jz short loc_BCA8 + mov al, 0Fh + jmp short loc_BCAA +; --------------------------------------------------------------------------- + +loc_BCA8: ; CODE XREF: sub_BC1F+83j + mov al, 0Ah + +loc_BCAA: ; CODE XREF: sub_BC1F+87j + push ax + call sub_B8A6 + +loc_BCAE: ; CODE XREF: sub_BC1F+7Aj + push word_F296 + push si + call sub_B908 + test byte ptr word_F296+1, 10h + jz short loc_BCE3 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_21F4 + call sub_B4D7 + push 100h + call sub_C403 + mov al, 1 + jmp loc_BD97 +; --------------------------------------------------------------------------- + +loc_BCE3: ; CODE XREF: sub_BC1F+9Cj + or si, si + jnz short loc_BCF7 + cmp byte_FC5A, 0 + jz short loc_BCF7 + cmp word_FC62, 0Ch + ja loc_BD8A + +loc_BCF7: ; CODE XREF: sub_BC1F+C6j sub_BC1F+CDj + or si, si + jz short loc_BD29 + cmp byte_FC5B, 0 + jz short loc_BD29 + call sub_21F4 + cmp word_FC62, 10h + jb short loc_BD22 + mov ax, word_FC62 + imul ax, 6 + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_DAC4, dx + call far ptr loc_1AA4 + +loc_BD22: ; CODE XREF: sub_BC1F+EDj + cmp word_FC62, 20h ; ' ' + ja short loc_BD8A + +loc_BD29: ; CODE XREF: sub_BC1F+DAj sub_BC1F+E1j ... + cmp word_E9D8, 3 + jb short loc_BD29 + cmp word_E9D8, 4 + jbe short loc_BD42 + cmp word_FC66, 1 + jle short loc_BD42 + dec word_FC66 + +loc_BD42: ; CODE XREF: sub_BC1F+116j + ; sub_BC1F+11Dj + mov word_E9D8, 0 + mov dx, 0A6h ; '¦' + mov al, byte_FC5C + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte_FC5C + mov byte_FC5C, al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_EC6 + push large 0 + push large 4F018Fh + call sub_BD2 + call sub_EF0 + inc word_FC62 + les bx, dword_FC54 + inc dword ptr es:[bx+10h] + jmp loc_BC69 +; --------------------------------------------------------------------------- + +loc_BD8A: ; CODE XREF: sub_BC1F+D4j + ; sub_BC1F+108j + inc si + +loc_BD8B: ; CODE XREF: sub_BC1F+41j + cmp si, 2 + jl loc_BC63 + call sub_B4D7 + mov al, 0 + +loc_BD97: ; CODE XREF: sub_BC1F+C1j + pop si + pop bp + retn +sub_BC1F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BD9A proc near ; CODE XREF: sub_9A17+36p + push bp + mov bp, sp + call sub_B424 + mov byte_FC58, 0 + mov byte_FC5A, 0 + mov byte_FC5B, 1 + mov word ptr dword_FC5E+2, seg seg002 + mov word ptr dword_FC5E, 0AD6h + mov word_FC62, 0 + +loc_BDC1: ; CODE XREF: sub_BD9A+113j + call sub_B747 + call sub_B535 + call sub_B565 + call sub_B636 + call sub_B670 + push 0 + cmp byte_FC5A, 0 + jz short loc_BDDD + mov al, 0Fh + jmp short loc_BDDF +; --------------------------------------------------------------------------- + +loc_BDDD: ; CODE XREF: sub_BD9A+3Dj + mov al, 8 + +loc_BDDF: ; CODE XREF: sub_BD9A+41j + push ax + call sub_B8A6 + call sub_C1B4 + call dword_FC5E + push word_F296 + push 0 + call sub_B908 + test byte ptr word_F296+1, 10h + jz short loc_BE21 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_21F4 + call sub_B4D7 + push 100h + call sub_C403 + mov al, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_BE21: ; CODE XREF: sub_BD9A+60j + cmp byte_FC5A, 0 + jz short loc_BE4F + call sub_21F4 + cmp word_FC62, 10h + jb short loc_BE48 + mov ax, word_FC62 + imul ax, 6 + mov dx, 0C8h ; 'È' + sub dx, ax + mov word_DAC4, dx + call far ptr loc_1AA4 + +loc_BE48: ; CODE XREF: sub_BD9A+98j + cmp word_FC62, 20h ; ' ' + ja short loc_BEB0 + +loc_BE4F: ; CODE XREF: sub_BD9A+8Cj sub_BD9A+BAj + cmp word_E9D8, 3 + jb short loc_BE4F + cmp word_E9D8, 4 + jbe short loc_BE68 + cmp word_FC66, 1 + jle short loc_BE68 + dec word_FC66 + +loc_BE68: ; CODE XREF: sub_BD9A+C1j sub_BD9A+C8j + mov word_E9D8, 0 + mov dx, 0A6h ; '¦' + mov al, byte_FC5C + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte_FC5C + mov byte_FC5C, al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00000h + call sub_EC6 + push large 0 + push large 4F018Fh + call sub_BD2 + call sub_EF0 + inc word_FC62 + les bx, dword_FC54 + inc dword ptr es:[bx+10h] + jmp loc_BDC1 +; --------------------------------------------------------------------------- + +loc_BEB0: ; CODE XREF: sub_BD9A+B3j + call sub_B4D7 + mov al, 0 + pop bp + retn +sub_BD9A endp + +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_BEB8 proc far ; CODE XREF: _main+FBP + push bp + mov bp, sp + nop + push cs + call near ptr sub_BFC2 + call sub_1A2E + call sub_2238 + call sub_222C + pop bp + retf +sub_BEB8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BED1 proc far ; CODE XREF: sub_C421+16p + push bp + mov bp, sp + mov dword_F1EA, 0A8000000h + mov dword_F1EE, 0B0000000h + mov dword_F1F2, 0B8000000h + mov dword_F1F6, 0E0000000h + pop bp + retf +sub_BED1 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_BEFA proc far ; CODE XREF: sub_9908+38P sub_A203+CAP ... + mov ah, 9 + int 60h + xor bx, bx + cmp al, 0FFh + jz short loc_BF0C + inc bx + mov byte_F1FA, 1 + jmp short loc_BF10 +; --------------------------------------------------------------------------- + +loc_BF0C: ; CODE XREF: sub_BEFA+8j + mov bl, byte_F1FB + +loc_BF10: ; CODE XREF: sub_BEFA+10j + mov byte_DDCC, bl + mov ax, bx + retf +sub_BEFA endp + +; --------------------------------------------------------------------------- + nop + mov byte_F1FC, 60h ; '`' + mov byte_F1FB, 0 + mov byte_F1FA, 0 + mov byte_F1FD, 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_BF4E + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_BF4E + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_BF4E + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_BF4E: ; CODE XREF: seg002:008Aj seg002:0091j ... + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF52 proc far ; CODE XREF: sub_AC06+16DP + ; sub_ADE2+26P ... + +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_BF5C: ; CODE XREF: sub_BF52+17j + les bx, [bp+arg_0] + add bx, si + mov al, es:[bx] + mov [si+1A0Eh], al + inc si + loop loc_BF5C + mov ax, [bp+arg_4] + cmp ax, 600h + jnz short loc_BF93 + cmp byte_F1FB, 0 + jz short loc_BF93 + xor bx, bx + +loc_BF7C: ; CODE XREF: sub_BF52+30j + inc bx + cmp byte ptr [bx+1A0Eh], 0 + jnz short loc_BF7C + mov byte ptr [bx+1A0Eh], 6Dh ; 'm' + mov byte ptr [bx+1A0Fh], 64h ; 'd' + mov byte ptr [bx+1A10h], 0 + +loc_BF93: ; CODE XREF: sub_BF52+1Fj sub_BF52+26j + mov dx, 1A0Eh + 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_BFB0 + cmp byte_F1FB, 0 + jz short loc_BFB0 + int 61h ; reserved for user interrupt + jmp short loc_BFB2 +; --------------------------------------------------------------------------- + +loc_BFB0: ; CODE XREF: sub_BF52+51j sub_BF52+58j + int 60h + +loc_BFB2: ; CODE XREF: sub_BF52+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_BF52 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFC2 proc far ; CODE XREF: sub_9A17+169P + ; sub_9BDF+150P ... + push bp + mov bp, sp + call sub_2C1C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + 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_2378 + call sub_2676 + call sub_21F4 + call sub_1A1C + call sub_708 + pop bp + retf +sub_BFC2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C005 proc far ; CODE XREF: sub_A614+34P sub_A614+57P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + movsx eax, [bp+arg_2] + movsx edx, [bp+arg_4] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_0] + pop bp + retf +sub_C005 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C020 proc far ; CODE XREF: sub_B4F3+1CP sub_B535+1CP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + push large 0C00000h + call sub_EC6 + mov si, [bp+arg_0] + shl si, 4 + add si, 1AA8h + mov ax, [si+0Eh] + mov word ptr cs:loc_C097+1, ax + mov ax, [bp+arg_4] + sar ax, 3 + add ax, [si+6] + mov di, ax + mov word ptr cs:loc_C090+1, ax + mov ax, [si+8] + mov word ptr cs:loc_C082+1, ax + mov word ptr cs:loc_C09C+1, ax + shl ax, 2 + add ax, 50h ; 'P' + mov word ptr cs:loc_C07E+1, ax + jmp short $+2 + mov ax, [bp+arg_2] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + push ds + mov ax, [si+0Ch] + mov ds, ax + xor si, si + +loc_C07E: ; DATA XREF: sub_C020+41w + mov dx, 1234h + cld + +loc_C082: ; CODE XREF: sub_C020+6Aj + ; DATA XREF: sub_C020+33w + mov cx, 1234h + rep movsd + sub di, dx + jns short loc_C082 + xor al, al + out 7Ch, al + +loc_C090: ; DATA XREF: sub_C020+2Cw + mov bx, 1234h + mov di, bx + xor si, si + +loc_C097: ; DATA XREF: sub_C020+1Dw + mov ax, 1234h + mov ds, ax + assume ds:nothing + +loc_C09C: ; CODE XREF: sub_C020+90j sub_C020+9Ej ... + mov cx, 1234h + +loc_C09F: ; CODE XREF: sub_C020+8Cj + mov eax, [si] + or es:[di], eax + add si, 4 + add di, 4 + loop loc_C09F + sub di, dx + jns short loc_C09C + mov di, bx + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_C09C + cmp ax, 0C800h + jnb short loc_C0CC + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_C09C +; --------------------------------------------------------------------------- + +loc_C0CC: ; CODE XREF: sub_C020+A3j + pop ds + assume ds:dseg + pop di + pop si + pop bp + retf 6 +sub_C020 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C0D4 proc far ; CODE XREF: sub_B4F3+3BP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + push large 0C00000h + call sub_EC6 + mov si, [bp+arg_0] + shl si, 4 + add si, 1AA8h + mov ax, [bp+arg_4] + sar ax, 3 + add ax, [si+6] + mov bx, [si+8] + shl bx, 2 + add ax, bx + dec ax + mov di, ax + mov word ptr cs:loc_C154+1, ax + mov word ptr cs:loc_C17C+1, ax + mov word ptr cs:loc_C13E+1, bx + mov word ptr cs:loc_C16A+1, bx + mov ax, 50h ; 'P' + sub ax, bx + mov word ptr cs:loc_C13A+1, ax + mov word ptr cs:loc_C166+1, ax + jmp short $+2 + mov ax, [bp+arg_2] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + assume es:nothing + mov bx, 1E70h + mov fs, word ptr [si+0Ch] + xor si, si + +loc_C13A: ; DATA XREF: sub_C0D4+45w + mov dx, 1234h + nop + +loc_C13E: ; CODE XREF: sub_C0D4+7Aj + ; DATA XREF: sub_C0D4+36w + mov cx, 1234h + +loc_C141: ; CODE XREF: sub_C0D4+76j + mov al, fs:[si] + xlat + mov es:[di], al + inc si + dec di + loop loc_C141 + sub di, dx + jns short loc_C13E + xor al, al + out 7Ch, al + +loc_C154: ; DATA XREF: sub_C0D4+2Ew + mov di, 1234h + mov si, [bp+arg_0] + shl si, 4 + add si, 1AA8h + mov fs, word ptr [si+0Eh] + xor si, si + +loc_C166: ; DATA XREF: sub_C0D4+49w + mov dx, 1234h + nop + +loc_C16A: ; CODE XREF: sub_C0D4+A6j sub_C0D4+B5j ... + mov cx, 4D2h + +loc_C16D: ; CODE XREF: sub_C0D4+A2j + mov al, fs:[si] + xlat + or es:[di], al + inc si + dec di + loop loc_C16D + sub di, dx + jns short loc_C16A + +loc_C17C: ; DATA XREF: sub_C0D4+32w + mov di, 1234h + mov ax, es + add ax, 800h + mov es, ax + assume es:nothing + cmp ax, 0C000h + jb short loc_C16A + cmp ax, 0C800h + jnb short loc_C197 + add ax, 2000h + mov es, ax + assume es:nothing + jmp short loc_C16A +; --------------------------------------------------------------------------- + +loc_C197: ; CODE XREF: sub_C0D4+BAj + pop di + pop si + pop bp + retf 6 +sub_C0D4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C19E proc far ; CODE XREF: sub_9BDF+A5P sub_9E16+28P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_E9D8, 0 + +loc_C1A7: ; CODE XREF: sub_C19E+Fj + mov ax, word_E9D8 + cmp ax, [bp+arg_0] + jb short loc_C1A7 + pop bp + retf 2 +sub_C19E endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_C1B4 proc far ; CODE XREF: sub_BA88+B3P sub_BC1F+59P ... + xor ax, ax + mov word_F292, ax + mov word_F294, ax + mov word_F296, ax + mov word_E9A4, ax + jmp short $+2 + mov bl, 2 + xor ax, ax + mov es, ax + assume es:seg000 + +loc_C1CA: ; CODE XREF: sub_C1B4+19Dj + mov ah, byte ptr es:loc_52F+2 + test ah, 4 + jz short loc_C1D9 + or word_F296, 1 + +loc_C1D9: ; CODE XREF: sub_C1B4+1Ej + test ah, 20h + jz short loc_C1E3 + or word_F296, 2 + +loc_C1E3: ; CODE XREF: sub_C1B4+28j + test ah, 8 + jz short loc_C1F2 + or word_F294, 20h + or word_F296, 4 + +loc_C1F2: ; CODE XREF: sub_C1B4+32j + test ah, 10h + jz short loc_C201 + or word_F294, 10h + or word_F296, 8 + +loc_C201: ; CODE XREF: sub_C1B4+41j + mov ah, byte ptr es:locret_533 + test ah, 1 + jz short loc_C215 + or word_F294, 8 + or word_F296, 8 + +loc_C215: ; CODE XREF: sub_C1B4+55j + test ah, 4 + jz short loc_C226 + or word_F294, 200h + or word_F296, 200h + +loc_C226: ; CODE XREF: sub_C1B4+64j + test ah, 8 + jz short loc_C235 + or word_F294, 2 + or word_F296, 2 + +loc_C235: ; CODE XREF: sub_C1B4+75j + test ah, 10h + jz short loc_C246 + or word_F294, 800h + or word_F296, 800h + +loc_C246: ; CODE XREF: sub_C1B4+84j + mov ah, byte ptr es:loc_532 + test ah, 40h + jz short loc_C25A + or word_F294, 4 + or word_F296, 4 + +loc_C25A: ; CODE XREF: sub_C1B4+9Aj + test ah, 4 + jz short loc_C26B + or word_F294, 100h + or word_F296, 100h + +loc_C26B: ; CODE XREF: sub_C1B4+A9j + test ah, 8 + jz short loc_C27A + or word_F294, 1 + or word_F296, 1 + +loc_C27A: ; CODE XREF: sub_C1B4+BAj + test ah, 10h + jz short loc_C28B + or word_F294, 400h + or word_F296, 400h + +loc_C28B: ; CODE XREF: sub_C1B4+C9j + mov ah, byte ptr es:loc_52F + test ah, 2 + jz short loc_C29F + or word_F292, 20h + or word_F296, 20h + +loc_C29F: ; CODE XREF: sub_C1B4+DFj + test ah, 4 + jz short loc_C2AE + or word_F292, 10h + or word_F296, 10h + +loc_C2AE: ; CODE XREF: sub_C1B4+EEj + test ah, 10h + jz short loc_C2B9 + or word_F292, 200h + +loc_C2B9: ; CODE XREF: sub_C1B4+FDj + test ah, 20h + jz short loc_C2C3 + or word_F292, 2 + +loc_C2C3: ; CODE XREF: sub_C1B4+108j + test ah, 40h + jz short loc_C2CE + or word_F292, 800h + +loc_C2CE: ; CODE XREF: sub_C1B4+112j + mov ah, byte ptr es:loc_52E + test ah, 1 + jz short loc_C2DD + or word_F292, 4 + +loc_C2DD: ; CODE XREF: sub_C1B4+122j + test ah, 4 + jz short loc_C2E7 + or word_F292, 8 + +loc_C2E7: ; CODE XREF: sub_C1B4+12Cj + mov ah, byte ptr es:locret_52A+2 + test ah, 8 + jz short loc_C2F7 + or word_F292, 100h + +loc_C2F7: ; CODE XREF: sub_C1B4+13Bj + test ah, 10h + jz short loc_C301 + or word_F292, 1 + +loc_C301: ; CODE XREF: sub_C1B4+146j + test ah, 20h + jz short loc_C30C + or word_F292, 400h + +loc_C30C: ; CODE XREF: sub_C1B4+150j + test ah, 1 + jz short loc_C317 + or word_F296, 4000h + +loc_C317: ; CODE XREF: sub_C1B4+15Bj + mov ah, byte ptr es:locret_52A + test ah, 1 + jz short loc_C327 + or word_F296, 1000h + +loc_C327: ; CODE XREF: sub_C1B4+16Bj + mov ah, byte ptr es:loc_52D + test ah, 10h + jz short loc_C337 + or word_F296, 2000h + +loc_C337: ; CODE XREF: sub_C1B4+17Bj + mov ah, byte ptr es:loc_52F+1 + test ah, 10h + jz short loc_C346 + or word_F296, 20h + +loc_C346: ; CODE XREF: sub_C1B4+18Bj + dec bl + jz short locret_C354 + mov cx, 400h + +loc_C34D: ; CODE XREF: sub_C1B4+19Bj + out 5Fh, al + loop loc_C34D + jmp loc_C1CA +; --------------------------------------------------------------------------- + +locret_C354: ; CODE XREF: sub_C1B4+194j + retf +sub_C1B4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C356 proc far ; CODE XREF: sub_AC06+50P sub_ADE2+5CP ... + +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, 1CD8h + push ax ; src + push ds + push offset unk_E9A8 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1AA4 + pop bp + retf 2 +sub_C356 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C37B proc far ; CODE XREF: sub_AC06+5AP sub_ADE2+4FP ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 6, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + mov bx, di + shl bx, 2 + mov ax, [bx+1CAAh] + mov dx, [bx+1CA8h] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_C3EF +; --------------------------------------------------------------------------- + +loc_C3A1: ; CODE XREF: sub_C37B+80j + push [bp+arg_4] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+1CD4h] + call sub_1922 + inc si + cmp si, 190h + jl short loc_C3C2 + sub si, 190h + +loc_C3C2: ; CODE XREF: sub_C37B+41j + mov bx, di + imul bx, 48h + mov ax, [bx+1CD4h] + 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_C3EF: ; CODE XREF: sub_C37B+24j + mov bx, di + imul bx, 48h + mov ax, [bx+1CD6h] + cmp ax, [bp+var_6] + ja short loc_C3A1 + pop di + pop si + leave + retf 6 +sub_C37B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C403 proc far ; CODE XREF: sub_9A17+164P + ; sub_9BDF+14BP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_DDCC, 0 + jz short loc_C41D + mov ax, [bp+arg_0] + cmp byte_F1FB, 1 + jz short loc_C41B + int 60h + jmp short loc_C41D +; --------------------------------------------------------------------------- + +loc_C41B: ; CODE XREF: sub_C403+12j + int 61h ; reserved for user interrupt + +loc_C41D: ; CODE XREF: sub_C403+8j sub_C403+16j + pop bp + retf 2 +sub_C403 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C421 proc far ; CODE XREF: _main+3FP + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push 55F0h + call sub_245A + or ax, ax + jz short loc_C435 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_C435: ; CODE XREF: sub_C421+Dj + nop + push cs + call near ptr sub_BED1 + call sub_19F6 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_114C + 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_22CA + call sub_1A22 + call sub_2232 + call sub_2226 + call sub_708 + call sub_2DB8 + push large [bp+arg_0] + call sub_2B60 + xor ax, ax + pop bp + retf +sub_C421 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C48A proc far ; CODE XREF: sub_B38D+1DP sub_B3C3+BP ... + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 4, 0 + push si + push di + mov di, [bp+arg_6] + push di + nop + push cs + call near ptr sub_C69C + mov ax, di + shl ax, 4 + add ax, 1AA8h + mov si, ax + push large [bp+arg_2] + call sub_9A8 + push ds + push si + push 10h + call sub_8F4 + mov ax, [si] + imul ax, 5 + movzx eax, ax + mov [bp+var_4], eax + movsx eax, [bp+arg_0] + imul eax, [bp+var_4] + push eax + push 1 + call sub_9E4 + push word ptr [si] + call sub_24CA + mov [si+0Ch], ax + push word ptr [si+0Ch] + push 0 + push word ptr [si] + call sub_8F4 + mov ax, [si] + shl ax, 2 + push ax + call sub_24CA + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8F4 + call sub_888 + pop di + pop si + leave + retf 8 +sub_C48A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C514 proc far ; CODE XREF: sub_B3C3+18P sub_B3C3+25P + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + enter 4, 0 + push si + push di + mov di, [bp+arg_6] + push di + nop + push cs + call near ptr sub_C69C + mov ax, di + shl ax, 4 + add ax, 1AA8h + mov si, ax + push large [bp+arg_2] + call sub_9A8 + push ds + push si + push 10h + call sub_8F4 + mov ax, [si] + imul ax, 5 + movzx eax, ax + mov [bp+var_4], eax + movsx eax, [bp+arg_0] + imul eax, [bp+var_4] + push eax + push 1 + call sub_9E4 + movzx eax, word ptr [si] + push eax + push 1 + call sub_9E4 + mov word ptr [si+0Ch], 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_24CA + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8F4 + call sub_888 + pop di + pop si + leave + retf 8 +sub_C514 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C59A proc far ; CODE XREF: sub_C680+10p + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + push di + push large [bp+arg_0] + call sub_9A8 + push [bp+arg_4] + nop + push cs + call near ptr sub_C69C + mov ax, [bp+arg_4] + shl ax, 4 + add ax, 1AA8h + mov si, ax + push ds + push ax + push 10h + call sub_8F4 + mov di, si + mov [bp+var_2], 1 + jmp short loc_C5DD +; --------------------------------------------------------------------------- + +loc_C5CE: ; CODE XREF: sub_C59A+4Bj + mov ax, [bp+arg_4] + add ax, [bp+var_2] + push ax + nop + push cs + call near ptr sub_C69C + inc [bp+var_2] + +loc_C5DD: ; CODE XREF: sub_C59A+32j + mov al, [di+0Ah] + mov ah, 0 + cmp ax, [bp+var_2] + jg short loc_C5CE + mov [bp+var_2], 0 + jmp short loc_C669 +; --------------------------------------------------------------------------- + +loc_C5EE: ; CODE XREF: sub_C59A+D7j + mov ax, [di] + mov [si], ax + mov ax, [di+2] + mov [si+2], ax + mov ax, [di+4] + mov [si+4], ax + mov ax, [di+6] + mov [si+6], ax + mov ax, [di+8] + mov [si+8], ax + mov al, [di+0Ah] + mov [si+0Ah], al + mov byte ptr [si+0Bh], 0 + cmp byte_DDE0, 0 + jnz short loc_C633 + push word ptr [si] + call sub_24CA + mov [si+0Ch], ax + push word ptr [si+0Ch] + push 0 + push word ptr [si] + call sub_8F4 + jmp short loc_C645 +; --------------------------------------------------------------------------- + +loc_C633: ; CODE XREF: sub_C59A+7Fj + mov word ptr [si+0Ch], 0 + movzx eax, word ptr [si] + push eax + push 1 + call sub_9E4 + +loc_C645: ; CODE XREF: sub_C59A+97j + mov ax, [si] + shl ax, 2 + push ax + call sub_24CA + mov [si+0Eh], ax + push word ptr [si+0Eh] + push 0 + mov ax, [si] + shl ax, 2 + push ax + call sub_8F4 + inc [bp+var_2] + add si, 10h + +loc_C669: ; CODE XREF: sub_C59A+52j + mov al, [di+0Ah] + mov ah, 0 + cmp ax, [bp+var_2] + jg loc_C5EE + call sub_888 + pop di + pop si + leave + retf 6 +sub_C59A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C680 proc far ; CODE XREF: sub_B38D+2EP + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + mov byte_DDE0, 1 + push [bp+arg_4] + push large [bp+arg_0] + push cs + call near ptr sub_C59A + mov byte_DDE0, 0 + pop bp + retf 6 +sub_C680 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C69C proc far ; CODE XREF: sub_AC06+9P sub_B4D7+9P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + shl ax, 4 + add ax, 1AA8h + mov di, ax + xor si, si + jmp short loc_C6D0 +; --------------------------------------------------------------------------- + +loc_C6B0: ; CODE XREF: sub_C69C+37j + mov bx, si + add bx, bx + cmp word ptr [bx+di+0Ch], 0 + jz short loc_C6CF + mov bx, si + add bx, bx + push word ptr [bx+di+0Ch] + call sub_25CE + mov bx, si + add bx, bx + mov word ptr [bx+di+0Ch], 0 + +loc_C6CF: ; CODE XREF: sub_C69C+1Cj + inc si + +loc_C6D0: ; CODE XREF: sub_C69C+12j + cmp si, 2 + jl short loc_C6B0 + pop di + pop si + pop bp + retf 2 +sub_C69C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C6DB proc far ; CODE XREF: sub_A51E+37P sub_A51E+69P ... + +var_32 = byte ptr -32h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + + enter 32h, 0 + push si + push di + mov di, [bp+arg_8] + mov ax, [bp+arg_4] + sar ax, 4 + and ax, 3 + mov [bp+var_E], ax + mov ax, [bp+arg_4] + sar ax, 6 + and ax, 7 + mov [bp+var_10], ax + push 0C0h ; 'À' + mov ax, [bp+arg_4] + and ax, 0Fh + push ax + call sub_EC6 + mov dx, 68h ; 'h' + mov al, 0Bh + out dx, al + jmp loc_C924 +; --------------------------------------------------------------------------- + +loc_C714: ; CODE XREF: sub_C6DB+250j + mov ax, [bp+arg_6] + imul ax, 50h + push ax + mov ax, di + mov bx, 8 + cwd + idiv bx + pop dx + add dx, ax + mov word ptr [bp+var_8+2], 0A800h + mov word ptr [bp+var_8], dx + mov ax, di + cwd + idiv bx + mov [bp+var_C], dx + les bx, [bp+arg_0] + assume es:nothing + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+103Dh], 4 + jz short loc_C769 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + cbw + shl ax, 8 + mov dl, es:[bx+1] + mov dh, 0 + add ax, dx + push ax + call sub_9561 + pop cx + mov [bp+var_2], ax + add word ptr [bp+arg_0], 2 + jmp short loc_C7AF +; --------------------------------------------------------------------------- + +loc_C769: ; CODE XREF: sub_C6DB+6Aj + les bx, [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + mov bx, ax + test byte ptr [bx+103Dh], 3 + jz short loc_C787 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + add ax, 2980h + jmp short loc_C7A2 +; --------------------------------------------------------------------------- + +loc_C787: ; CODE XREF: sub_C6DB+9Dj + les bx, [bp+arg_0] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+0D51h], 5Eh + jz short loc_C7A7 + mov bx, word ptr [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + add ax, 2900h + +loc_C7A2: ; CODE XREF: sub_C6DB+AAj + mov [bp+var_2], ax + jmp short loc_C7AC +; --------------------------------------------------------------------------- + +loc_C7A7: ; CODE XREF: sub_C6DB+BAj + mov [bp+var_2], 2B21h + +loc_C7AC: ; CODE XREF: sub_C6DB+CAj + inc word ptr [bp+arg_0] + +loc_C7AF: ; CODE XREF: sub_C6DB+8Cj + mov al, byte ptr [bp+var_2] + and al, 0FFh + mov dx, 0A1h ; '¡' + out dx, al ; Interrupt Controller #2, 8259A + mov ax, [bp+var_2] + shr ax, 8 + sub al, 20h ; ' ' + mov dx, 0A3h ; '£' + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+var_2], 2921h + jb short loc_C810 + cmp [bp+var_2], 2B7Eh + ja short loc_C810 + cmp di, 278h + jg loc_C92F + mov [bp+var_12], 0 + jmp short loc_C803 +; --------------------------------------------------------------------------- + +loc_C7E1: ; CODE XREF: sub_C6DB+12Cj + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + inc [bp+var_12] + +loc_C803: ; CODE XREF: sub_C6DB+104j + cmp [bp+var_12], 10h + jl short loc_C7E1 + mov [bp+var_A], 0 + jmp short loc_C866 +; --------------------------------------------------------------------------- + +loc_C810: ; CODE XREF: sub_C6DB+EEj sub_C6DB+F5j + cmp di, 270h + jg loc_C92F + mov [bp+var_12], 0 + jmp short loc_C85B +; --------------------------------------------------------------------------- + +loc_C81F: ; CODE XREF: sub_C6DB+184j + mov al, byte ptr [bp+var_12] + or al, 20h + mov dx, 0A5h ; '¥' + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + shl ax, 8 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + mov ss:[bx], ax + mov dx, 0A5h ; '¥' + mov al, byte ptr [bp+var_12] + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A9h ; '©' + in al, dx ; Interrupt Controller #2, 8259A + mov ah, 0 + mov bx, [bp+var_12] + add bx, bx + lea dx, [bp+var_32] + add bx, dx + add ss:[bx], ax + inc [bp+var_12] + +loc_C85B: ; CODE XREF: sub_C6DB+142j + cmp [bp+var_12], 10h + jl short loc_C81F + mov [bp+var_A], 1 + +loc_C866: ; CODE XREF: sub_C6DB+133j + mov [bp+var_12], 0 + jmp loc_C90B +; --------------------------------------------------------------------------- + +loc_C86E: ; CODE XREF: sub_C6DB+234j + mov bx, [bp+var_12] + add bx, bx + lea ax, [bp+var_32] + add bx, ax + mov ax, ss:[bx] + mov [bp+var_4], ax + mov ax, [bp+var_E] + cmp ax, 1 + jz short loc_C892 + cmp ax, 2 + jz short loc_C8A8 + cmp ax, 3 + jz short loc_C89E + jmp short loc_C8BE +; --------------------------------------------------------------------------- + +loc_C892: ; CODE XREF: sub_C6DB+1A9j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + jmp short loc_C8BE +; --------------------------------------------------------------------------- + +loc_C89E: ; CODE XREF: sub_C6DB+1B3j + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + +loc_C8A8: ; CODE XREF: sub_C6DB+1AEj + mov si, [bp+var_4] + mov ax, si + add ax, ax + or [bp+var_4], ax + xor si, [bp+var_4] + mov ax, si + add ax, ax + not ax + and [bp+var_4], ax + +loc_C8BE: ; CODE XREF: sub_C6DB+1B5j + ; sub_C6DB+1C1j + cmp [bp+var_C], 0 + jz short loc_C8F1 + 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_C904 +; --------------------------------------------------------------------------- + +loc_C8F1: ; CODE XREF: sub_C6DB+1E7j + mov ax, [bp+var_4] + shr ax, 8 + les bx, [bp+var_8] + mov es:[bx], al + mov al, byte ptr [bp+var_4] + mov es:[bx+1], al + +loc_C904: ; CODE XREF: sub_C6DB+214j + add word ptr [bp+var_8], 50h ; 'P' + inc [bp+var_12] + +loc_C90B: ; CODE XREF: sub_C6DB+190j + cmp [bp+var_12], 10h + jl loc_C86E + cmp [bp+var_A], 0 + jz short loc_C91C + add di, 8 + +loc_C91C: ; CODE XREF: sub_C6DB+23Cj + mov ax, [bp+var_10] + add ax, 8 + add di, ax + +loc_C924: ; CODE XREF: sub_C6DB+36j + les bx, [bp+arg_0] + cmp byte ptr es:[bx], 0 + jnz loc_C714 + +loc_C92F: ; CODE XREF: sub_C6DB+FBj + ; sub_C6DB+139j + mov dx, 68h ; 'h' + mov al, 0Ah + out dx, al + call sub_EF0 + pop di + pop si + leave + retf 0Ah +sub_C6DB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C940 proc far ; CODE XREF: sub_AC06+49P sub_ADE2+34P ... + +var_2 = word ptr -2 +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + enter 2, 0 + push si + mov si, [bp+arg_4] + mov ax, si + imul ax, 48h + add ax, 1CC0h + push ds + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+1CA8h] + call sub_12DC + push large [bp+arg_0] + mov ax, si + imul ax, 48h + add ax, 1CC0h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 1CA8h + push ds + push ax + call sub_1334 + mov [bp+var_2], ax + pop si + leave + retf 6 +sub_C940 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C986 proc far ; CODE XREF: sub_9BDF:loc_9C1BP + ; sub_9E16:loc_9E24P ... + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + cmp word_DABC, 0 + jz short loc_C9A1 + call sub_2DF4 + mov ax, word_E9A4 + or word_F296, ax + +loc_C9A1: ; CODE XREF: sub_C986+Dj + mov ax, word_F292 + or word_F296, ax + pop bp + retf +sub_C986 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + cmp word_DABC, 0 + jz short loc_C9D4 + call sub_2DF4 + mov ax, word_E9A4 + mov word_F292, ax + mov ax, word_F296 + mov word_F294, ax + +loc_C9D4: ; CODE XREF: seg002:0B11j + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + cmp word_DABC, 0 + jz short loc_C9F6 + call sub_2DF4 + mov ax, word_E9A4 + mov word_F294, ax + mov ax, word_F296 + mov word_F292, ax + +loc_C9F6: ; CODE XREF: seg002:0B33j + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + mov ax, word_F296 + or word_F292, ax + cmp word_DABC, 0 + jz short loc_CA1A + call sub_2DF4 + mov ax, word_E9A4 + or word_F292, ax + +loc_CA1A: ; CODE XREF: seg002:0B5Cj + mov word_F294, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + mov ax, word_F296 + or ax, word_F292 + mov word_F294, ax + cmp word_DABC, 0 + jz short loc_CA47 + call sub_2DF4 + mov ax, word_E9A4 + or word_F294, ax + +loc_CA47: ; CODE XREF: seg002:0B89j + mov word_F292, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + test byte ptr word_F296+1, 10h + jnz short loc_CA65 + test byte ptr word_F296+1, 20h + jz short loc_CA6B + +loc_CA65: ; CODE XREF: seg002:0BACj + mov word_F296, 1000h + +loc_CA6B: ; CODE XREF: seg002:0BB3j + mov word_F292, 0 + mov word_F294, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + nop + push cs + call near ptr sub_C1B4 + cmp word_DABC, 0 + jz short loc_CA94 + call sub_2DF4 + mov ax, word_E9A4 + or word_F296, ax + +loc_CA94: ; CODE XREF: seg002:0BD6j + mov ax, word_F292 + or word_F296, ax + mov word_F292, 0 + mov word_F294, 0 + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov si, [bp+6] + xor di, di + +loc_CAB3: ; CODE XREF: seg002:0C15j + push cs + call near ptr sub_C986 + cmp word_F296, 0 + jz short loc_CAC7 + push 1 + nop + push cs + call near ptr sub_C19E + jmp short loc_CAB3 +; --------------------------------------------------------------------------- + +loc_CAC7: ; CODE XREF: seg002:0C0Cj + or si, si + jnz short loc_CAEB + mov si, 270Fh + jmp short loc_CAEB +; --------------------------------------------------------------------------- + +loc_CAD0: ; CODE XREF: seg002:0C3Dj + push cs + call near ptr sub_C986 + cmp word_F296, 0 + jnz short loc_CAEF + inc di + push 1 + nop + push cs + call near ptr sub_C19E + cmp si, 270Fh + jnz short loc_CAEB + xor di, di + +loc_CAEB: ; CODE XREF: seg002:0C19j seg002:0C1Ej ... + cmp di, si + jl short loc_CAD0 + +loc_CAEF: ; CODE XREF: seg002:0C29j + pop di + pop si + pop bp + retf 2 +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + +loc_CAF6: ; CODE XREF: sub_B565+EP sub_B565+26P ... + push bp + mov bp, sp + push si + push di + mov si, [bp+6] + shl si, 4 + add si, 1AA8h + mov ax, [bp+0Ah] + sar ax, 3 + add ax, [si+6] + mov di, ax + mov ax, [si+8] + mov cs:word_CB3D, ax + jmp short $+2 + shl ax, 2 + add ax, 50h ; 'P' + mov dx, ax + mov ax, [bp+8] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + push ds + mov ax, [si+0Eh] + mov ds, ax + xor si, si + mov bx, di + cld + nop +; --------------------------------------------------------------------------- + db 0B9h +word_CB3D dw 1234h ; DATA XREF: seg002:0C63w + db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch + db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh + db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh + db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h + +; =============== S U B R O U T I N E ======================================= + + +sub_CB68 proc far ; CODE XREF: sub_B38D+4P + push di + xor ax, ax + mov di, 1E70h + xor dl, dl + jmp short loc_CB7D +; --------------------------------------------------------------------------- + +loc_CB72: ; CODE XREF: sub_CB68+1Aj + xor dl, dl + mov cx, 8 + +loc_CB77: ; CODE XREF: sub_CB68+13j + rol al, 1 + rcr dl, 1 + loop loc_CB77 + +loc_CB7D: ; CODE XREF: sub_CB68+8j + mov [di], dl + inc di + inc al + jnz short loc_CB72 + pop di + retf +sub_CB68 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB86 proc far ; CODE XREF: sub_A899+2FP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_E9D8, 0 + +loc_CB8F: ; CODE XREF: sub_CB86+Fj + mov ax, word_E9D8 + cmp ax, [bp+arg_0] + jb short loc_CB8F + pop bp + retf 2 +sub_CB86 endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 0Bh + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 0 + +; =============== 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, 91C1h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_CBCB + 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_CBE5 + +loc_CBCB: ; 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_CBE5: ; 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_CC0B db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:91B9o + db 0Dh dup(0), 2, 0, 2, 0, 0C7h, 91h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0BDh, 0 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0), 4, 0, 3, 0, 26h, 0, 2 dup(0FFh) + db 3, 0, 2Ch, 0, 30h, 0Dh dup(0), 1, 0, 1, 0, 0CEh, 58h + 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, 9233h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_CCB4 + 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_CD28 + +loc_CCB4: ; 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_CD18 + 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_CCEA + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_CCEC +; --------------------------------------------------------------------------- + +loc_CCEA: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_CCEC: ; 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_CD18: ; 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_CD28: ; CODE XREF: string::string(char *)+2Dj + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_22] + call ___ExitExceptBlocks + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +@string@$bctr$qnxc endp + +; --------------------------------------------------------------------------- + db 4, 0, 90h, 20h, 0Ah, 0, 9Dh, 2 + dw seg seg003 +aTstringref db 'TStringRef *',0 +byte_CD65 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:921Do + db 0Dh dup(0), 2, 0, 2, 0, 49h, 92h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_CDF5 + db 2 dup(0), 3, 0Dh dup(0) +byte_CDB3 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9219o + db 0Dh dup(0), 2, 0, 2, 0, 96h, 92h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 65h, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_CDF5 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:020Fo + db 0Dh dup(0), 1, 0, 1, 0, 0CEh, 58h + 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, 0B4h, 6 + dw seg seg003 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0E3h, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh) + db 1, 0, 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h + db 72h, 65h, 6Eh, 63h, 65h, 0Ah dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string___string(void (*driver)(void), char) +@string@$bdtr$qv proc far ; CODE XREF: string::contains(char *)+45P + ; xmsg::~xmsg(void)+3FP ... + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 92ECh + 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_CF19 + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_CF06 + 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_D244 + add sp, 6 + +loc_CF06: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_CF19 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_CF19: ; 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, 9320h + 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_CF54 + mov ax, 1 + jmp short loc_CF56 +; --------------------------------------------------------------------------- + +loc_CF54: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_CF56: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_CFD7 + 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, 9412h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 0FE0h + 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, 0C06h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_CFD7: ; 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, 9364h + 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_D012 + mov ax, 1 + jmp short loc_D014 +; --------------------------------------------------------------------------- + +loc_D012: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_D014: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_D095 + 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, 9412h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 0FFEh + 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, 0C06h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_D095: ; 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, 93A8h + 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_D0CD + mov ax, 1 + jmp short loc_D0CF +; --------------------------------------------------------------------------- + +loc_D0CD: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_D0CF: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_D150 + 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, 9412h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 101Ch + 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, 0C06h + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_D150: ; 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_D182 + 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_D182 + jmp loc_D228 +; --------------------------------------------------------------------------- + +loc_D182: ; 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_D3DC + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_3F6A + 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_D1DC + push ds + mov ax, 0D36h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D1DC: ; 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_D228: ; 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_D244(void (*driver)(void), char) +sub_D244 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, 93C2h + 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_D296 + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3E37 + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_D296 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_D296: ; CODE XREF: sub_D244+2Bj sub_D244+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_D244 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, 93D4h + 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_D3DC + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_E7CE + jbe short loc_D304 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_40D1 + 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_D304: ; CODE XREF: seg003:074Bj + 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, 93DEh + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_D3DC + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_E7CE + jbe short loc_D36C + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_40D1 + 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_D36C: ; CODE XREF: seg003:07B3j + 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_D37A proc far ; CODE XREF: seg003:08CBp + +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, 93F0h + 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_40D1 + 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_D3CE + push ds + mov ax, 0D36h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D3CE: ; CODE XREF: sub_D37A+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_D37A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_D3DC proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg003:0736p ... + +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, 93FAh + call ___InitExceptBlocks + mov ax, word_E7CA + mov [bp+var_20], ax + mov cx, word_E7CC + 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_D3DC 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, 940Ch + 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_D3DC + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_D463 + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_D37A + add sp, 6 + jmp short loc_D4D2 +; --------------------------------------------------------------------------- + +loc_D463: ; CODE XREF: seg003:08C1j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_E7CE + jbe short loc_D4D2 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_D4D2 + mov ax, [bp-26h] + inc ax + push ax + call sub_3F6A + 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_D4A4 + push ds + mov ax, 0D36h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_D4A4: ; CODE XREF: seg003:0906j + cmp word ptr [bp+0Ah], 0 + jz short loc_D4C6 + 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_D4C6: ; CODE XREF: seg003:0918j + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_D4E3 +; --------------------------------------------------------------------------- + +loc_D4D2: ; CODE XREF: seg003:08D1j seg003:08E1j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_D4E3: ; CODE XREF: seg003:0940j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_D500 + cmp ax, [bp-22h] + jnz short loc_D500 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_D532 + +loc_D500: ; CODE XREF: seg003:0961j seg003:0966j + 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_D532: ; CODE XREF: seg003:096Ej + cmp word ptr [bp+12h], 0 + jz short loc_D576 + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_D55D + 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_D576 +; --------------------------------------------------------------------------- + +loc_D55D: ; CODE XREF: seg003:09AEj + 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_D576: ; CODE XREF: seg003:09A6j seg003:09CBj + 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_D5A8 + cmp ax, [bp-22h] + jz short loc_D5CB + +loc_D5A8: ; CODE XREF: seg003:0A11j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_3E37 + 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_D5CB: ; CODE XREF: seg003:0A16j + 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_E7C4 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7C4, 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_E7C6 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7C6, 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_E7C8 + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7C8, 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_E7CA + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7CA, 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_E7CC + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7CC, ax + cmp word_E7CC, 0 + jnz short loc_D66E + mov word_E7CC, 1 + +loc_D66E: ; CODE XREF: seg003:0AD6j + 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_E7CE + mov [bp-2], ax + mov ax, [bp+6] + mov word_E7CE, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_D694 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:93E8o seg000:9404o + db 0Dh dup(0), 2, 0, 2, 0, 47h, 94h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_D724 + dw 0 + db 3, 0Dh dup(0), 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0 + db 2Eh, 0, 3Ah, 0Dh dup(0), 2, 0, 2, 0, 2 dup(94h) + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 94h, 0Bh + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_D724 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0B3Eo seg003:0C40o + db 0Dh dup(0), 1, 0, 1, 0, 0CEh, 58h + 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, 11h, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_D796 db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:93CCo + db 0Dh dup(0), 2, 0, 2, 0, 0E1h, 94h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0 + dd byte_D724 + db 2 dup(0), 3, 19h dup(0) +seg003 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_D7F0 dw 0 ; DATA XREF: sub_48A+7r sub_3D66+20r ... +word_D7F2 dw 0 ; DATA XREF: sub_48A+1Dw sub_48A+32w ... +word_D7F4 dw 554Eh ; DATA XREF: sub_48A+20w sub_3DD7+Cr ... +word_D7F6 dw 4C4Ch ; DATA XREF: sub_48A+Br sub_3DD7+2r ... +off_D7F8 dw offset sub_4320 ; DATA XREF: sub_48A+26r sub_3D03+24r ... + dw offset sub_4548 +off_D7FC dw offset sub_4B43 ; DATA XREF: sub_601E+77r sub_601E+A1r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aBorlandCCopyri db 'Borland C++ - Copyright 1993 Borland Intl.',0 +aDivideError db 'Divide error',0Dh,0Ah,0 +dword_D84A dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_D84E dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_D852 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_D856 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_D85E dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:91B0w +word_D862 dw 0 ; DATA XREF: start+127r seg000:91AAw +word_D864 dw 0 ; DATA XREF: start+46w +word_D866 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_D868 dw 0 ; DATA XREF: start+55w seg000:9165r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_D86C dw 0 ; DATA XREF: start+16w start+C7r ... +word_D86E dw 0 ; DATA XREF: __IOERROR:loc_3522w + ; seg000:446Aw ... + db 0FFh + db 0FFh + db 10h + db 25h ; % +word_D874 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_D876 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_D878 dw 0 ; DATA XREF: sub_4152+6Ew __sbrk+12r ... +word_D87A dw 0 ; DATA XREF: start+8Bw sub_4152+6Aw ... +word_D87C dw 0 ; DATA XREF: sub_4152+7Ew __brk+1Cr ... +word_D87E dw 0 ; DATA XREF: start+21w start+F5w ... +byte_D880 db 0 ; DATA XREF: sub_9908+3Dw sub_9908+52w ... +unk_D881 db 0 ; DATA XREF: sub_99C3+Ao + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 0 + db 0 + db 2 + db 0 + db 3 + db 5 + db 4 + db 6 +aIiklmnop db 'ˆ‰Š‹ŒŽ',0 ; DATA XREF: sub_9B9D+16o +aIiklccss db 'ˆ‰Š‹–—˜™',0 ; DATA XREF: sub_9B9D+27o +aTufxmnop db '’“”•ŒŽ',0 ; DATA XREF: sub_9B9D+33o + db 3 + db 1 + db 5 + db 0Dh + db 7 + db 0Bh + db 9 + db 5 + db 58h ; X + db 2 + db 0 + db 0 + db 0E8h ; è + db 3 + db 0 + db 0 + db 80h ; € + db 0Ch + db 0 + db 0 + db 0F4h ; ô + db 1 + db 0 + db 0 +unk_D8CC db 30h ; 0 ; DATA XREF: sub_9EDD+16o + db 31h ; 1 + db 32h ; 2 + db 0 +a345678 db '345678',0 ; DATA XREF: sub_9EDD+27o +aAbcdefg db 'ABCDEFG',0 ; DATA XREF: sub_9EDD+38o +aVgdej db '‚ƒ„…†',0 ; DATA XREF: sub_9EDD+49o +a?@ db '=>?@',0 ; DATA XREF: sub_9EDD+5Ao +aHij db 'HIJ',0 ; DATA XREF: sub_9EDD+6Bo + ; sub_9F57+132o +aNop db 'nop',0 ; DATA XREF: sub_9F57+16o +aKlmn db 'KLMN',0 ; DATA XREF: sub_9F57+8Bo +a_A db '\]^_`a',0 ; DATA XREF: sub_9F57+DFo + db 'ÏÏÏÏ',0 +aQrs db 'qrs',0 ; DATA XREF: sub_9F57+52o +aTuvw db 'tuvw',0 ; DATA XREF: sub_9F57+5Fo +aXyz db 'xyz',0 ; DATA XREF: sub_9F57+6Co +asc_D910 db '{|}~',0 ; DATA XREF: sub_9F57+79o +aZ db 'ÏÏZ[ÏÏÏ',0 ; DATA XREF: sub_9F57+B6o +aOpqr db 'ÏOPQRÏÏ',0 ; DATA XREF: sub_9F57+C2o +aStuvwxy db 'STUVWXY',0 ; DATA XREF: sub_9F57+CEo +aBcde db 'bcde',0 +aBcdf db 'bcdf',0 +aBcdg db 'bcdg',0 +aHilmhi db 'hilmhi',0 ; DATA XREF: sub_9F57+109o +aJklmhi db 'jklmhi',0 ; DATA XREF: sub_9F57+115o +aHilmjk db 'hilmjk',0 ; DATA XREF: sub_9F57+121o +byte_D951 db 0 ; DATA XREF: sub_A0A1+3r sub_A0A1+11w ... +byte_D952 db 0 ; DATA XREF: sub_A0E0+F6w + ; sub_A0E0+102w ... +byte_D953 db 1 ; DATA XREF: sub_A0E0+10r + ; sub_A0E0:loc_A0FAw ... +byte_D954 db 0 ; DATA XREF: sub_A0E0+4r sub_A0E0+49w ... +byte_D955 db 0 ; DATA XREF: sub_A203+4r sub_A203+3Dw ... +aYume_cfg db 'YUME.CFG',0 ; DATA XREF: sub_9908+5o sub_9980+5o ... +; char path[] +path db 'mainl',0 ; DATA XREF: sub_9A17+172o + ; sub_9A17+176o ... +asc_D965 db ' ',0 ; DATA XREF: sub_9F57+26o +aVfvcvbgngngbgn db '‚f‚c‚bƒNƒƒbƒN‚ª‚T‚l‚g‚š‚É‚È‚Á‚Ä‚¢‚Ü‚·B',0Ah,0 ; DATA XREF: _main+1Ao +aUmx db '“Œ•û–²Žž‹ó‚Í‚QD‚T‚l‚g‚š‚Å‚È‚¢‚Ƴí‚ɃQ[ƒ€‚ªƒvƒŒƒCo—ˆ‚Ü‚¹‚ñ',0Ah,0 + ; DATA XREF: _main+23o +aViosrfvVVkvqbd db 0Ah ; DATA XREF: _main+2Co + db '‚¨Žè”‚Å‚·‚ª‚QD‚T‚l‚g‚š‚ÉØ‚è‘Ö‚¦‚ÄA‚à‚¤ˆê“xŽÀs‚µ‚Ä‚ËB',0Ah,0 +aCOul db '–²Žž‹ó1.dat',0 ; DATA XREF: _main+3Co +aGbgvgkxsslvVBb db 0Ah ; DATA XREF: _main+4Co + db 'ƒƒ‚ƒŠ•s‘«‚Å‚·Bƒƒ‚ƒŠ‹ó‚«‚ð‘‚₵‚Ä‚©‚çŽÀs‚µ‚Ä‚­‚è‚á‚ê',0Ah,0 +aMikoft_bft db 'MIKOFT.bft',0 ; DATA XREF: _main+57o + db 0 +aBfnt db 'BFNT' + db 1Ah + db 0 +word_DA6E dw 0 ; DATA XREF: sub_B02:loc_B17r + ; sub_C6A+7Br ... +word_DA70 dw 27Fh ; DATA XREF: sub_B02+19r sub_10FE+36w ... +word_DA72 dw 27Fh ; DATA XREF: sub_C6A+75r sub_E82+12r ... +word_DA74 dw 0 ; DATA XREF: sub_B02:loc_B40r + ; sub_BD2+3r ... +word_DA76 dw 18Fh ; DATA XREF: sub_B02+42r sub_BD2+1Fr ... +word_DA78 dw 18Fh ; DATA XREF: sub_C6A+84r sub_C6A+93r ... +word_DA7A dw 0A800h ; DATA XREF: sub_B02+66r sub_BD2+19r ... +word_DA7C dw 7CB0h ; DATA XREF: sub_10FE+46w + ; seg000:loc_2E20r + 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_DAA0 dw 0 ; DATA XREF: sub_8F4+5r sub_8F4+26r ... +word_DAA2 dw 0FFFFh ; DATA XREF: sub_7C8+6r sub_7C8+1Fw ... +byte_DAA4 db 0 ; DATA XREF: sub_AE2+4r + db 0 +word_DAA6 dw 0 ; DATA XREF: sub_EF6+2r sub_EF6+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_DAB0 dw 0A800h ; DATA XREF: sub_10FE+9w sub_114C+18r ... +word_DAB2 dw 3E80h ; DATA XREF: sub_10FE+Fw sub_114C+14r ... +word_DAB4 dw 190h ; DATA XREF: sub_10FE+3Cw + db 50h ; P + db 0 +word_DAB8 dw 0 ; DATA XREF: sub_10FE+2Dw _main+12r + db 55h ; U + db 0 +word_DABC dw 0 ; DATA XREF: sub_2DB8:loc_2DDDw + ; sub_2DF4+5r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_DAC4 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 +word_DAD8 dw 0FFFFh ; DATA XREF: seg000:0277r + 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_DAF6 dw 0 ; DATA XREF: seg000:1ACFr +word_DAF8 dw 0 ; DATA XREF: sub_2A8A+36w sub_2AC6+46w ... + dw 0 +word_DAFC dw 200h ; DATA XREF: sub_574+9r sub_574+2Fr +word_DAFE dw 0 ; DATA XREF: sub_574:loc_5B0w + ; sub_574+48w ... + db 0 + db 0 +dword_DB02 dd 1 ; DATA XREF: sub_1D12+Cr sub_1D12+15r ... + dw 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_DD88 dw 0A000h ; DATA XREF: sub_FCC+13r sub_2254+13r + db 50h ; P + db 0 +word_DD8C dw 1 ; DATA XREF: sub_11DC+2Er +unk_DD8E db 0 ; DATA XREF: sub_233E+26r + db 0 +word_DD90 dw 0 ; DATA XREF: sub_233E+18r +word_DD92 dw 0 ; DATA XREF: sub_22CA+Ew sub_22CA+16w ... +byte_DD94 db 0 ; DATA XREF: sub_22CA+24r sub_22CA+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_DD9E dw 0 ; DATA XREF: sub_2194r sub_247C+6w ... +word_DDA0 dw 0 ; DATA XREF: sub_245A+15w sub_247C+1Bw ... +word_DDA2 dw 0 ; DATA XREF: sub_574+3w sub_1334+DFw ... +word_DDA4 dw 100h ; DATA XREF: sub_24A2+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_DDAB db 0 ; DATA XREF: sub_27FE+24r + ; sub_27FE:loc_2844r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_DDB2 dw 0 ; DATA XREF: sub_27FE+6Er +word_DDB4 dw 0 ; DATA XREF: sub_27FE+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_DDC2 dw 0 ; DATA XREF: sub_27FE+32r + db 0 + db 0 +word_DDC6 dw 0 ; DATA XREF: sub_269Ar sub_269A+7r ... +word_DDC8 dw 0 ; DATA XREF: sub_269A:loc_26B7r + ; sub_26DE+5r ... +word_DDCA dw 0 ; DATA XREF: sub_269A+24r sub_269A+2Br +byte_DDCC db 0 ; DATA XREF: sub_9908+42r sub_9908+5Fw ... + db 0 +aPal98Grb db 'pal98 grb',0 + dw 0FFFFh +a_exe db '.exe',0 + db 0 +byte_DDE0 db 0 ; DATA XREF: sub_C59A+7Ar sub_C680+3w ... + db 0 + dd aNo_1B@cVOul ; "NO.1 @–²‚ÍŽž‹ó‚ð‰z‚¦‚Ä " + dd aNo_2B@B@Select ; "NO.2 @ @ Selection " + dd aNo_3Umx ; "NO.3 “Œ•û—d—ö’k " + dd aNo_4Reincarnat ; "NO.4 Reincarnation " + dd aNo_5Dim_Dream ; "NO.5 Dim. Dream " + dd aNo_6TabulaRasa ; "NO.6 Tabula rasa@`‹ó”’­— " + dd aNo_7B@Maniacal ; "NO.7 @ Maniacal Princess " + dd aNo_8CPOBLostDr ; "NO.8 –²ÁŽ¸ `Lost Dream " + dd aNo_9CMCvlyBDre ; "NO.9 –²Œ¶—V‹Y `Dream War " + dd aNo_10Cvc@mirab ; "NO.10 –‚–@ŒˆíI`Fight it out!" + dd aNo_11B@SailorO ; "NO.11 @ Sailor of Time " + dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! " + dd aNo_13F ; "NO.13 ”ñ“ˆê–‚–@¢ŠE˜_ " + dd aNo_14B@cvc@pri ; "NO.14 @–‚–@àˆ¤ " + dd aNo_15B@lviuvC ; "NO.15 @‹v‰“‚Ì–² " + dd aNo_16Umx ; "NO.16 “Œ•û‚Ì‚¢‹ó " + dd aNo_17IiiuvCumo ; "NO.17 ‰i‰“‚Ì–žŒŽ " + dd aNo_18MapleDrea ; "NO.18 Maple Dream... " + dd aNo_19CRlvLxu ; "NO.19 —ìl‚Ì‹x“ú " + dd aB@b@ ; " @@ " + dd aB@b@vpvxvivf ; " @@‚p‚•‚‰‚” " + dd aOp_m_0 ; "op.m" + dd aSelect_m_0 ; "select.m" + dd a00mm_m ; "00mm.m" + dd a01mm_m ; "01mm.m" + dd a02mm_m ; "02mm.m" + dd a03mm_m ; "03mm.m" + dd a04mm_m ; "04mm.m" + dd a05mm_m ; "05mm.m" + dd a06mm_m ; "06mm.m" + dd aDec_m ; "dec.m" + dd a07mm_m ; "07mm.m" + dd a08mm_m ; "08mm.m" + dd aDemo1_m ; "demo1.m" + dd aDemo2_m ; "demo2.m" + dd aDemo3_m ; "demo3.m" + dd aDemo4_m ; "demo4.m" + dd aDemo5_m ; "demo5.m" + dd aEd_m ; "ed.m" + dd aScore_m ; "score.m" +byte_DE82 db 0 ; DATA XREF: sub_A6A3+4r sub_A6A3+AAw +byte_DE83 db 0 ; DATA XREF: sub_AC06+6Dr sub_AC06+99r ... +aNo_1B@cVOul db 'NO.1 @–²‚ÍŽž‹ó‚ð‰z‚¦‚Ä ',0 ; DATA XREF: dseg:05F2o +aNo_2B@B@Select db 'NO.2 @ @ Selection ',0 ; DATA XREF: dseg:05F6o +aNo_3Umx db 'NO.3 “Œ•û—d—ö’k ',0 ; DATA XREF: dseg:05FAo +aNo_4Reincarnat db 'NO.4 Reincarnation ',0 ; DATA XREF: dseg:05FEo +aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0 ; DATA XREF: dseg:0602o +aNo_6TabulaRasa db 'NO.6 Tabula rasa@`‹ó”’­— ',0 ; DATA XREF: dseg:0606o +aNo_7B@Maniacal db 'NO.7 @ Maniacal Princess ',0 ; DATA XREF: dseg:060Ao +aNo_8CPOBLostDr db 'NO.8 –²ÁŽ¸ `Lost Dream ',0 ; DATA XREF: dseg:060Eo +aNo_9CMCvlyBDre db 'NO.9 –²Œ¶—V‹Y `Dream War ',0 ; DATA XREF: dseg:0612o +aNo_10Cvc@mirab db 'NO.10 –‚–@ŒˆíI`Fight it out!',0 ; DATA XREF: dseg:0616o +aNo_11B@SailorO db 'NO.11 @ Sailor of Time ',0 ; DATA XREF: dseg:061Ao +aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0 ; DATA XREF: dseg:061Eo +aNo_13F db 'NO.13 ”ñ“ˆê–‚–@¢ŠE˜_ ',0 ; DATA XREF: dseg:0622o +aNo_14B@cvc@pri db 'NO.14 @–‚–@àˆ¤ ',0 ; DATA XREF: dseg:0626o +aNo_15B@lviuvC db 'NO.15 @‹v‰“‚Ì–² ',0 ; DATA XREF: dseg:062Ao +aNo_16Umx db 'NO.16 “Œ•û‚Ì‚¢‹ó ',0 ; DATA XREF: dseg:062Eo +aNo_17IiiuvCumo db 'NO.17 ‰i‰“‚Ì–žŒŽ ',0 ; DATA XREF: dseg:0632o +aNo_18MapleDrea db 'NO.18 Maple Dream... ',0 ; DATA XREF: dseg:0636o +aNo_19CRlvLxu db 'NO.19 —ìl‚Ì‹x“ú ',0 ; DATA XREF: dseg:063Ao +aB@b@ db ' @@ ',0 ; DATA XREF: dseg:063Eo +aB@b@vpvxvivf db ' @@‚p‚•‚‰‚” ',0 ; DATA XREF: dseg:0642o +aOp_m_0 db 'op.m',0 ; DATA XREF: dseg:0646o +aSelect_m_0 db 'select.m',0 ; DATA XREF: dseg:064Ao +a00mm_m db '00mm.m',0 ; DATA XREF: dseg:064Eo +a01mm_m db '01mm.m',0 ; DATA XREF: dseg:0652o +a02mm_m db '02mm.m',0 ; DATA XREF: dseg:0656o +a03mm_m db '03mm.m',0 ; DATA XREF: dseg:065Ao +a04mm_m db '04mm.m',0 ; DATA XREF: dseg:065Eo +a05mm_m db '05mm.m',0 ; DATA XREF: dseg:0662o +a06mm_m db '06mm.m',0 ; DATA XREF: dseg:0666o +aDec_m db 'dec.m',0 ; DATA XREF: dseg:066Ao +a07mm_m db '07mm.m',0 ; DATA XREF: dseg:066Eo +a08mm_m db '08mm.m',0 ; DATA XREF: dseg:0672o +aDemo1_m db 'demo1.m',0 ; DATA XREF: dseg:0676o +aDemo2_m db 'demo2.m',0 ; DATA XREF: dseg:067Ao +aDemo3_m db 'demo3.m',0 ; DATA XREF: dseg:067Eo +aDemo4_m db 'demo4.m',0 ; DATA XREF: dseg:0682o +aDemo5_m db 'demo5.m',0 ; DATA XREF: dseg:0686o +aEd_m db 'ed.m',0 ; DATA XREF: dseg:068Ao +aScore_m db 'score.m',0 ; DATA XREF: dseg:068Eo +aMusic_txt db 'MUSIC.TXT',0 ; DATA XREF: sub_AA0A+5o +aOp3_pi db 'op3.pi',0 ; DATA XREF: sub_AC06+46o +aOpwin_bft db 'opwin.bft',0 ; DATA XREF: sub_ADE2+Fo sub_B008+5o +aOp_m db 'op.m',0 ; DATA XREF: sub_ADE2+23o sub_B008+19o +aTl01_pi db 'TL01.PI',0 ; DATA XREF: sub_ADE2+31o +aTl02_pi db 'TL02.PI',0 ; DATA XREF: sub_ADE2+ABo sub_B008+32o + db 0 +word_E1F2 dw 0A04h ; DATA XREF: sub_B168+71r sub_B2F2+4r ... +aYume_nem db 'YUME.NEM',0 + db 0 +off_E1FE dd a00sl_cd2 ; DATA XREF: sub_B3EF+6r + ; "00SL.CD2" + dd a02sl_cd2 ; "02SL.CD2" + dd a04sl_cd2 ; "04SL.CD2" + dd a06sl_cd2 ; "06SL.CD2" + dd a08sl_cd2 ; "08SL.CD2" + dd a10sl_cd2 ; "10SL.CD2" + dd a12sl_cd2 ; "12SL.CD2" + dd a14sl_cd2 ; "14SL.CD2" + dd a16sl_cd2 ; "16SL.CD2" + db 3 + db 1 + db 5 + db 4 + db 4 + db 2 + db 3 + db 4 + db 3 + db 2 + db 3 + db 1 + db 4 + db 1 + db 4 + db 2 + db 2 + db 5 + db 4 + db 5 + db 1 + db 5 + db 2 + db 4 + db 5 + db 5 + db 3 + db 12h + db 13h + db 0 + db 16h + db 17h + db 0 + db 14h + db 15h + db 0 + db 18h + db 19h + db 0 + db 0 + db 0 +a00sl_cd2 db '00SL.CD2',0 ; DATA XREF: dseg:off_E1FEo +a02sl_cd2 db '02SL.CD2',0 ; DATA XREF: dseg:0A12o +a04sl_cd2 db '04SL.CD2',0 ; DATA XREF: dseg:0A16o +a06sl_cd2 db '06SL.CD2',0 ; DATA XREF: dseg:0A1Ao +a08sl_cd2 db '08SL.CD2',0 ; DATA XREF: dseg:0A1Eo +a10sl_cd2 db '10SL.CD2',0 ; DATA XREF: dseg:0A22o +a12sl_cd2 db '12SL.CD2',0 ; DATA XREF: dseg:0A26o +a14sl_cd2 db '14SL.CD2',0 ; DATA XREF: dseg:0A2Ao +a16sl_cd2 db '16SL.CD2',0 ; DATA XREF: dseg:0A2Eo +aSlex_cd2 db 'slex.cd2',0 ; DATA XREF: sub_B38D+2Bo +a99sl_cdg db '99sl.cdg',0 ; DATA XREF: sub_B3C3+6o +aSlwin_cdg db 'slwin.cdg',0 ; DATA XREF: sub_B3C3+13o +aSlex_cdg db 'slex.cdg',0 ; DATA XREF: sub_B3C3+20o +aSelect_m db 'select.m',0 ; DATA XREF: sub_B424+16o +aChname_bft db 'chname.bft',0 ; DATA XREF: sub_B424+46o +aTlsl_rgb db 'TLSL.RGB',0 ; DATA XREF: sub_B424+70o +aAS_ db 'AÁá',0 +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_E302 dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_30C1r ... +off_E304 dd sub_32D4 ; DATA XREF: sub_32D9+29r _setvbuf+C0w ... +off_E308 dd sub_32D4 ; DATA XREF: sub_32D9+43r +off_E30C dd sub_32D4 ; DATA XREF: sub_32D9+47r + db 0 + db 0 +word_E312 dw 209h ; DATA XREF: seg000:38EDw seg000:38F7r +byte_E314 db 0 ; DATA XREF: seg000:38DEr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 20h + db 0Bh + db 0 + db 0 +word_E326 dw 20Ah ; DATA XREF: seg000:3926w seg000:3930r +byte_E328 db 1 ; DATA XREF: seg000:3917r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 34h ; 4 + db 0Bh + db 0 + db 0 + db 2 + db 2 +byte_E33C 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 48h ; H + db 0Bh + 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 5Ch ; \ + db 0Bh + 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 70h ; p + db 0Bh + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_E4A0 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_E4CA dw 0 ; DATA XREF: __IOERROR:loc_3505w + ; __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 +unk_E526 db 0 ; DATA XREF: seg000:36D4o + db 0 + db 0 + db 0 +word_E52A dw 0 ; DATA XREF: seg000:35DCr +word_E52C dw 35A1h ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_E52E dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_E53E 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_E654 dw 0 ; DATA XREF: __ExceptInit+28w +word_E656 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_E76A dw 0 ; DATA XREF: seg000:3CACw seg000:3CBFw ... +word_E76C dw 0 ; DATA XREF: sub_4152+22r sub_4152+61w +byte_E76E db 0 ; DATA XREF: seg000:44A7r seg000:44BFw +byte_E76F db 0 ; DATA XREF: seg000:4442r seg000:4455w +word_E770 dw 0 ; DATA XREF: seg000:43AFr seg000:43E5w +word_E772 dw 0 ; DATA XREF: seg000:43ABr + ; seg000:loc_43DFw + dw 0 + dw 0 +word_E778 dw 0 ; DATA XREF: seg000:42C9r seg000:42FFw ... +word_E77A dw 0 ; DATA XREF: seg000:42C5r + ; seg000:loc_42F9w ... + db 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_E794 dd 0 ; DATA XREF: seg000:4623w sub_4637+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_E7A8 dw 0 ; DATA XREF: _setvbuf:loc_5108r + ; _setvbuf+4Bw +word_E7AA dw 0 ; DATA XREF: _setvbuf:loc_50F2r + ; _setvbuf+35w +word_E7AC dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_E7C0 dd 0 ; DATA XREF: _getenv+21r seg000:9172w ... +word_E7C4 dw 1 ; DATA XREF: seg003:0A51r seg003:0A5Aw +word_E7C6 dw 0 ; DATA XREF: seg003:0A6Er seg003:0A77w +word_E7C8 dw 1 ; DATA XREF: seg003:0A8Br seg003:0A94w +word_E7CA dw 3Fh ; DATA XREF: sub_D3DC+13r seg003:0AA8r ... +word_E7CC dw 40h ; DATA XREF: sub_D3DC+19r seg003:0AC5r ... +word_E7CE dw 3Fh ; DATA XREF: seg003:0747r seg003:07AFr ... +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 +byte_E82A db 0 ; DATA XREF: sub_952E+2r sub_952E+9w ... +byte_E82B db 0 ; DATA XREF: sub_952E+Er + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 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 ; DATA XREF: sub_96AE+14Bo + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 0AFh ; ¯ + db 38h ; 8 + db 0 + db 0 + db 0 + db 10h + db 9Bh ; › + db 3Ch ; < + db 0 + db 0 + db 0 + db 0Fh + db 0EEh ; î + db 45h ; E + db 0 + db 0 + db 0 + db 10h + db 5Ch ; \ + db 91h ; ‘ + db 0 + db 0 + db 1 + db 20h + dd loc_374F +byte_E97A db ? ; DATA XREF: sub_A0E0+1Fw sub_A0E0+4Ew ... +byte_E97B db ? ; DATA XREF: sub_A203+13w sub_A203+42w ... +byte_E97C db ? ; DATA XREF: sub_A0E0+E5w + ; sub_A203+1EAw ... + db ? +word_E97E dw ? ; DATA XREF: sub_A0A1+Ar sub_A0A1+37r ... +word_E980 dw ? ; DATA XREF: seg000:2E58r +word_E982 dw ? ; DATA XREF: seg000:2E35r + db ? ; + db ? ; +word_E986 dw ? ; DATA XREF: seg000:2E27r +word_E988 dw ? ; DATA XREF: seg000:2E5Cr +word_E98A dw ? ; DATA XREF: seg000:2E3Cr + db ? ; + db ? ; +word_E98E dw ? ; DATA XREF: seg000:2E2Er + db ? ; + db ? ; + db ? ; + db ? ; +dword_E994 dd ? ; DATA XREF: sub_81C+17r sub_8F4+2Er ... +word_E998 dw ? ; DATA XREF: sub_7C8+32w sub_7C8+46w ... +word_E99A dw ? ; DATA XREF: sub_7C8+35w sub_7C8+49w ... +word_E99C dw ? ; DATA XREF: sub_7C8+29w sub_81C+9r ... +word_E99E dw ? ; DATA XREF: sub_7C8+26w sub_81C+Cr ... +word_E9A0 dw ? ; DATA XREF: sub_7C8+2Cw sub_898+2Dw ... +word_E9A2 dw ? ; DATA XREF: sub_7C8+2Fw + ; sub_81C:loc_84Dw ... +word_E9A4 dw ? ; DATA XREF: sub_2DF4:loc_2E0Dw + ; sub_C1B4+Bw ... + db ? + db ? ; +unk_E9A8 db ? ; ; DATA XREF: sub_C356+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 ? ; +byte_E9C9 db ? ; DATA XREF: sub_ADE2+86w sub_ADE2+E0w +byte_E9CA db ? ; DATA XREF: sub_ADE2+8Bw sub_ADE2+E3w +byte_E9CB db ? ; DATA XREF: sub_ADE2+90w sub_ADE2+E6w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_E9D5 db ? ; DATA XREF: sub_ADE2+72w sub_ADE2+C8w ... +byte_E9D6 db ? ; DATA XREF: sub_ADE2+77w sub_ADE2+CBw ... +byte_E9D7 db ? ; DATA XREF: sub_ADE2+7Cw sub_ADE2+CEw ... +word_E9D8 dw ? ; DATA XREF: sub_22CA+1Ew sub_233E+10w ... +word_E9DA dw ? ; DATA XREF: sub_22CA+21w sub_233E+14w +word_E9DC dw ? ; DATA XREF: sub_22CA+37w sub_2378+2Br +word_E9DE dw ? ; DATA XREF: sub_22CA+3Aw sub_2378+27r +word_E9E0 dw ? ; DATA XREF: sub_233E+Aw +word_E9E2 dw ? ; DATA XREF: sub_247C+Fw sub_24DE+18r ... +word_E9E4 dw ? ; DATA XREF: sub_2194+20r sub_247C+12w ... +word_E9E6 dw ? ; DATA XREF: sub_247C+15w sub_24DE+24r ... +word_E9E8 dw ? ; DATA XREF: sub_217E+7w sub_2194+19r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F1EA dd ? ; DATA XREF: sub_A5B7:loc_A5CAr + ; sub_A8CF+53r ... +dword_F1EE dd ? ; DATA XREF: sub_A8CF+66r sub_A8CF+E9r ... +dword_F1F2 dd ? ; DATA XREF: sub_A8CF+79r sub_A8CF+FCr ... +dword_F1F6 dd ? ; DATA XREF: sub_A8CF+8Cr + ; sub_A8CF+10Fr ... +byte_F1FA db ? ; DATA XREF: sub_BEFA+Bw seg002:0072w +byte_F1FB db ? ; DATA XREF: sub_BEFA:loc_BF0Cr + ; seg002:006Dw ... +byte_F1FC db ? ; DATA XREF: seg002:0068w +byte_F1FD db ? ; DATA XREF: seg002:0077w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F20C db ? ; ; DATA XREF: seg000:2CCBo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F28C dw ? ; DATA XREF: sub_2B60+7Bw sub_2C1C+21r ... +word_F28E dw ? ; DATA XREF: sub_2B60+81w seg000:2C84r ... +word_F290 dw ? ; DATA XREF: sub_2B60+47w sub_2B60+58r ... +word_F292 dw ? ; DATA XREF: sub_BA88+BCr sub_C1B4+2w ... +word_F294 dw ? ; DATA XREF: sub_BA88+C5r sub_C1B4+5w ... +word_F296 dw ? ; DATA XREF: sub_9BDF+45r + ; sub_9BDF:loc_9C4Ar ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_F498 dd ? ; DATA XREF: sub_AC06+63r sub_ADE2+9Er ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_F4B0 db ? ; ; DATA XREF: sub_AC06+60o sub_ADE2+9Bo ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F760 db ? ; ; DATA XREF: sub_A6A3+1D7o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_F828 dw ? ; DATA XREF: sub_AC06+70w sub_AC06+73r ... +word_F82A dw ? ; DATA XREF: sub_A5B7+Cw sub_A5B7+1Dr ... +unk_F82C db ? ; ; DATA XREF: sub_A8CF+5Er sub_A8CF+E1r ... + db ? ; +word_F82E dw ? ; DATA XREF: sub_AA53+3r +unk_F830 db ? ; ; DATA XREF: sub_A8CF+71r sub_A8CF+F4r ... + db ? ; +word_F832 dw ? ; DATA XREF: sub_AA53+Cr +unk_F834 db ? ; ; DATA XREF: sub_A8CF+84r + ; sub_A8CF+107r ... + db ? ; +word_F836 dw ? ; DATA XREF: sub_AA53+15r +unk_F838 db ? ; ; DATA XREF: sub_A8CF+97r + ; sub_A8CF+11Ar ... + db ? ; +word_F83A dw ? ; DATA XREF: sub_AA53+1Er +unk_F83C db ? ; ; DATA XREF: sub_AA0A+20o sub_AB99+1Ao + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_FB84 dw ? ; DATA XREF: sub_B168+3Cw sub_B168+8Fo ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_FBD6 db ? ; DATA XREF: sub_B249+65w + ; sub_B35D:loc_B376r +byte_FBD7 db ? ; DATA XREF: sub_B168+20w + db ? ; + db ? ; + db ? ; + db ? ; +byte_FBDC db ? ; DATA XREF: sub_B249+46w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_FC50 db ? ; DATA XREF: sub_B168+10w sub_B168+50r ... +byte_FC51 db ? ; DATA XREF: sub_B168+18w sub_B168+43r ... +word_FC52 dw ? ; DATA XREF: sub_B747+6r sub_B747+3Ar ... +dword_FC54 dd ? ; DATA XREF: sub_9908+27w sub_9908+2Dr ... +byte_FC58 db ? ; DATA XREF: sub_B4F3+10r sub_B535+10r ... +byte_FC59 db ? ; DATA XREF: sub_B4F3+2Er + ; sub_B565:loc_B608r ... +byte_FC5A db ? ; DATA XREF: sub_B4F3+9r sub_B535+9r ... +byte_FC5B db ? ; DATA XREF: sub_B4F3+27r sub_BA88+32w ... +byte_FC5C db ? ; DATA XREF: sub_B424+6Aw + ; sub_BA88+151r ... + db ? +dword_FC5E dd ? ; DATA XREF: sub_BA88+44w sub_BA88+5Dw ... +word_FC62 dw ? ; DATA XREF: sub_B908+E3w + ; sub_B908+16Aw ... +word_FC64 dw ? ; DATA XREF: sub_B424+28w +word_FC66 dw ? ; DATA XREF: sub_B424+A4w sub_B747+74r ... +byte_FC68 db ? ; DATA XREF: sub_B424+ADw + ; sub_B636:loc_B663r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_FCEA dw ? ; DATA XREF: seg000:444Fw +word_FCEC dw ? ; DATA XREF: seg000:4449w + db ? ; + db ? ; + db ? ; + db ? ; +word_FCF2 dw ? ; DATA XREF: seg000:43EFr seg000:44BCw ... +word_FCF4 dw ? ; DATA XREF: seg000:43EBr seg000:44B8w ... +dword_FCF6 dd ? ; DATA XREF: sub_7595+ACw sub_7595+C2r ... +dword_FCFA dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dw ? +dseg ends + +; =========================================================================== + +; Segment type: Uninitialized +seg005 segment byte stack 'STACK' use16 + assume cs:seg005 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 80h dup(?) +seg005 ends + + + end start