From bf430e42311f6a0ecc44f1d714c8bcb625d77c85 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Sun, 29 Jun 2014 16:51:19 +0200 Subject: [PATCH] th04/op: Initial state --- th04_op.asm | 45808 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45808 insertions(+) create mode 100644 th04_op.asm diff --git a/th04_op.asm b/th04_op.asm new file mode 100644 index 00000000..03151013 --- /dev/null +++ b/th04_op.asm @@ -0,0 +1,45808 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 492DA6ACEE8714C252630BCE0D3C12FD + +; File Name : th04/OP.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-133E0h Loaded length: 11A40h +; 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_F3BC, ax + mov segx, es + mov word_F3B6, bx + mov word_F3CE, bp + call sub_178 + mov ax, word_F3B6 + 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_F3B4, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_F3B8, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_10A6A + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_10A6A, 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_3EC8 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_F3C6, bx + mov word_F3CA, 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_10A6A, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 1A64h + mov cx, 401Ch + sub cx, di + cld + rep stosb + cmp word_109CC, 14h + jbe short loc_110 + cmp byte ptr word_F3BC, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_F3BC+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_109CC + 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_F3CE, 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_3EC8 +; --------------------------------------------------------------------------- + +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, 1A40h + mov di, 1A5Eh + call sub_1E8 + push word_F3B2 + push envp ; envp + push word_F3AE + push argv ; argv + push argc ; argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_415D+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 1A5Eh + mov di, 1A64h + 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_415D+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_415D+50p + +arg_2 = byte ptr 4 + + mov bp, sp + mov ah, 4Ch ; 'L' + mov al, [bp+arg_2] + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) +__terminate endp ; AL = exit code + +; --------------------------------------------------------------------------- + mov dx, 4Bh ; 'K' + push ds + push dx + nop + push cs + call near ptr ___ErrorMessage + pop dx + pop ds + mov ax, 3 + push ax + nop + push cs + call near ptr __exit + +; =============== S U B R O U T I N E ======================================= + + +sub_178 proc near ; CODE XREF: start+25p + push ds + mov ax, 3500h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + +loc_17E: ; DATA XREF: sub_DC16+12r + mov word ptr dword_F39A, bx + +loc_182: ; DATA XREF: sub_DC44+4r + mov word ptr dword_F39A+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_F39E, bx + mov word ptr dword_F39E+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_F3A2, bx + mov word ptr dword_F3A2+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_F3A6, bx + mov word ptr dword_F3A6+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_415D+2Fp + push ds + mov ax, 2500h + lds dx, dword_F39A + 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_F39E + 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_F3A2 + 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_F3A6 + 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 + +loc_1F3: ; DATA XREF: sub_1316-71r sub_1316-6Er + cmp byte ptr es:[bx], 0FFh + jz short loc_207 + mov cl, es:[bx+1] + xor ch, ch + cmp cx, ax + jnb short loc_207 + mov ax, cx + mov dx, bx + +loc_207: ; CODE XREF: sub_1E8+Fj sub_1E8+19j + add bx, 6 + jmp short loc_1EF +; --------------------------------------------------------------------------- + +loc_20C: ; CODE XREF: sub_1E8+9j + cmp dx, di + jz short locret_22B + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_224 + call dword ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +loc_224: ; CODE XREF: sub_1E8+33j + call word ptr es:[bx+2] + pop es + jmp short sub_1E8 +; --------------------------------------------------------------------------- + +locret_22B: ; CODE XREF: sub_1E8+26j + retn +sub_1E8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22C proc near ; CODE XREF: start+153p sub_22C+37j ... + mov ah, 0 + mov dx, di + mov bx, si + +loc_232: ; CODE XREF: sub_22C+1Fj + cmp bx, di + jz short loc_24D + cmp byte ptr es:[bx], 0FFh + jz short loc_248 + cmp es:[bx+1], ah + jb short loc_248 + mov ah, es:[bx+1] + mov dx, bx + +loc_248: ; CODE XREF: sub_22C+Ej sub_22C+14j + add bx, 6 + jmp short loc_232 +; --------------------------------------------------------------------------- + +loc_24D: ; CODE XREF: sub_22C+8j + cmp dx, di + jz short locret_26C + mov bx, dx + cmp byte ptr es:[bx], 0 + mov byte ptr es:[bx], 0FFh + push es + jz short loc_265 + call dword ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +loc_265: ; CODE XREF: sub_22C+30j + call word ptr es:[bx+2] + pop es + jmp short sub_22C +; --------------------------------------------------------------------------- + +locret_26C: ; CODE XREF: sub_22C+23j + retn +sub_22C endp + +; --------------------------------------------------------------------------- +DGROUP@ dw 0 ; DATA XREF: start+3w start+B0r ... +__MMODEL dw 0c004h + db 0 +; --------------------------------------------------------------------------- + +loc_272: + push ds + mov ds, word ptr cs:035fh + push cs + call near ptr sub_2478 + 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_2A86+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_248E + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_248E + 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, 0F2h, 25h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 0EDh, 20h, 0Eh, 0E8h, 0E9h, 20h + db 8Bh, 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h + db 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 0D3h, 20h + db 0Eh, 0E8h, 0CFh, 20h, 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_1372+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_1372+31p sub_2A86+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, 508h + mov di, dx + mov cx, 5 + repe cmpsb + pop di + pop si + +loc_400: ; DATA XREF: sub_1316-1BFr + jnz short loc_409 + mov ax, 0 + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_409: ; CODE XREF: sub_3D6:loc_400j + 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_2A86+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_248E + 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_1316:loc_1163r + ; sub_15C2+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_2478 + +loc_46C: ; CODE XREF: sub_412+13j sub_412+1Aj + pop si + pop bp + retf 6 +sub_412 endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +word_472 dw 0 ; DATA XREF: seg000:04A9r +word_474 dw 0 ; DATA XREF: seg000:04A4r seg000:04CAw +; --------------------------------------------------------------------------- + +loc_476: ; CODE XREF: sub_3772+40p sub_37B6+25p + cmp bx, 2 + jnb short locret_4BC + shl bx, 1 + mov [bx+502h], ax + mov ax, word_F842 + or ax, word_F844 + add ax, 0FFFFh + sbb ax, ax + cmp ax, word_F840 + jz short locret_4BC + +loc_493: ; DATA XREF: sub_E3E8+Aw + mov word_F840, ax + ja short loc_4BE + cli + mov al, 0Bh + out 70h, al ; CMOS Memory: + ; used by real-time clock + mov al, byte_F847 + out 71h, al ; CMOS Memory: + ; used by real-time clock + push 70h ; 'p' + push cs:word_474 + push cs:word_472 + nop + push cs + call near ptr sub_818 + in al, 0A1h ; Interrupt Controller #2, 8259A + or al, byte_F846 + out 0A1h, al ; Interrupt Controller #2, 8259A + sti + +locret_4BC: ; CODE XREF: seg000:0479j seg000:0491j + retn +; --------------------------------------------------------------------------- + nop + +loc_4BE: ; CODE XREF: seg000:0496j + cli + push 70h ; 'p' + push cs + push offset byte_51A + nop + push cs + call near ptr sub_818 + mov cs:word_474, dx +; --------------------------------------------------------------------------- + db 2Eh +byte_4D0 db 0A3h ; DATA XREF: sub_1316-16Er + db 72h, 4, 0B4h, 0Ah, 0BBh, 4, 0F0h, 0E8h, 2Ch, 0, 0B0h + db 0Bh, 0E6h, 70h, 0E4h, 71h, 0A2h, 7, 5, 0Ch, 40h, 8Ah + db 0E0h, 0B0h, 0Bh, 0E6h, 70h, 8Ah, 0C4h, 0E6h, 71h, 0E4h + db 0A1h, 8Ah, 0E0h, 24h, 0FEh, 0E6h, 0A1h, 32h, 0C4h, 0A2h + db 6, 5, 0FBh, 0FAh, 0B0h +byte_500 db 0Ch ; DATA XREF: sub_1D5E+4w sub_1D6A+4w +byte_501 db 0E6h ; DATA XREF: sub_1316-1C8r sub_34B0+Cr ... + db 70h, 0E4h, 71h, 0FBh, 0C3h, 8Ah, 0C4h, 0E6h, 70h, 0E4h + db 71h, 22h, 0C7h, 0Ah, 0C3h, 86h, 0E0h, 0E6h, 70h, 86h + db 0E0h, 0E6h, 71h, 0C3h +byte_51A db 50h, 1Eh, 0B8h ; DATA XREF: seg000:04C2o + dw seg dseg + db 8Eh, 0D8h, 0FCh, 68h, 3Ch, 5, 83h, 3Eh, 2, 5, 0 +byte_52A db 74h ; DATA XREF: sub_E1E4:loc_E29Cr + db 4 +byte_52C db 0FFh ; DATA XREF: sub_E1E4:loc_E28Cr +byte_52D db 36h ; DATA XREF: sub_E1E4:loc_E2ACr + db 2 +byte_52F db 5 ; DATA XREF: sub_E1E4:loc_E273r +byte_530 db 83h ; DATA XREF: sub_E1E4:loc_E2BCr +byte_531 db 3Eh ; DATA XREF: sub_E1E4+4r +byte_532 db 4 ; DATA XREF: sub_E1E4:loc_E244r +byte_533 db 5 ; DATA XREF: sub_E1E4:loc_E215r + db 0, 74h, 4, 0FFh, 36h, 4, 5, 0C3h, 80h, 3Eh, 6, 5, 0 + db 1Fh, 75h, 6, 58h, 2Eh, 0FFh, 2Eh, 72h, 4, 0B0h, 20h + db 0E6h +byte_54D db 0A0h ; DATA XREF: sub_14E4+1Fr +; --------------------------------------------------------------------------- + out 20h, al ; Interrupt controller, 8259A. + mov al, 0Ch + out 70h, al ; CMOS Memory: + ; used by real-time clock + in al, 71h ; CMOS Memory + mov al, 0Ch + out 70h, al ; CMOS Memory: + ; used by real-time clock + in al, 71h ; CMOS Memory + pop ax + iret + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_55E proc far ; CODE XREF: sub_1EEA+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + mov bx, es:0 + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + push es + push cs + call near ptr sub_2856 + pop bp + retf 2 +sub_55E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_576 proc far ; CODE XREF: sub_5F2+29p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_F340 + mov cx, word_F346 + 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_5A6 + or ax, ax + jz short loc_5A6 + dec ax + mov word_F342, ax + mov word_F344, 1 + mov al, byte ptr off_F348 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_5A6: ; CODE XREF: sub_576+16j sub_576+1Aj + xor ax, ax + mov word_F342, ax + dec ax + pop ds + pop bp + retf 2 +sub_576 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5B2 proc far ; CODE XREF: sub_2A86+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_5EA + mov ah, 3Fh ; '?' + mov bx, [bp+arg_4] + mov cx, 30h ; '0' + mov dx, 1A96h + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_5EA + mov bx, dx + mov cx, 1004h + +loc_5D4: ; CODE XREF: sub_5B2+31j + mov dl, [bx] + mov ax, [bx+1] + mov [bx], ax + mov [bx+2], dl + add bx, 3 + dec ch + jnz short loc_5D4 + mov ax, 0 + jmp short loc_5EE +; --------------------------------------------------------------------------- + +loc_5EA: ; CODE XREF: sub_5B2+Cj sub_5B2+1Bj + stc + mov ax, 0FFF3h + +loc_5EE: ; CODE XREF: sub_5B2+36j + pop bp + retf 6 +sub_5B2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5F2 proc far ; CODE XREF: seg000:070Cp sub_1F62+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_619 + dec word ptr es:2 + mov bx, es:4 + inc word ptr es:4 + mov al, es:[bx+8] + xor ah, ah + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_619: ; CODE XREF: sub_5F2+Cj + push es + push cs + call near ptr sub_576 + pop bp + retf 2 +sub_5F2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_622 proc far ; CODE XREF: sub_B9CE+50P sub_CA94+4BP ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_F8C6, 0 + nop + push cs + call near ptr sub_2648 + +loc_635: ; CODE XREF: sub_622+31j + nop + push cs + call loc_1DE0 + mov di, si + cmp di, 0 + jle short loc_649 + +loc_641: ; CODE XREF: sub_622+25j + nop + push cs + call near ptr sub_2648 + dec di + jnz short loc_641 + +loc_649: ; CODE XREF: sub_622+1Dj + add word_F8C6, 6 + cmp word_F8C6, 64h ; 'd' + jl short loc_635 + mov word_F8C6, 64h ; 'd' + nop + push cs + call loc_1DE0 + pop di + pop si + retf 2 +sub_622 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_666 proc far ; CODE XREF: sub_A9C9+A7P sub_B9CE+6BP ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_F8C6, 64h ; 'd' + nop + push cs + call near ptr sub_2648 + +loc_679: ; CODE XREF: sub_666+2Cj + nop + push cs + call loc_1DE0 + mov di, si + cmp di, 0 + jle short loc_68D + +loc_685: ; CODE XREF: sub_666+25j + nop + push cs + call near ptr sub_2648 + dec di + jnz short loc_685 + +loc_68D: ; CODE XREF: sub_666+1Dj + sub word_F8C6, 6 + jg short loc_679 + mov word_F8C6, 0 + nop + push cs + call loc_1DE0 + pop di + pop si + retf 2 +sub_666 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov word_FBA4, 6 + mov ax, word_F8FE + add ax, 9 + push ax + push cs + call near ptr sub_2752 + jb short loc_6E0 + mov es, ax + push word ptr [bp+8] + push word ptr [bp+6] + push cs + call near ptr sub_BB4 + jb short loc_6E7 + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_F8FE + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_6E0: ; CODE XREF: seg000:06B8j + mov byte_F900, 3 + jmp short loc_6F1 +; --------------------------------------------------------------------------- + +loc_6E7: ; CODE XREF: seg000:06C6j + push es + push cs + call near ptr sub_2856 + mov byte_F900, 1 + +loc_6F1: ; CODE XREF: seg000:06E5j + xor ax, ax + pop bp + retf 4 +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ah] + mov si, [bp+8] + cmp si, 0 + jle short loc_71D + +loc_708: ; CODE XREF: seg000:071Bj + push word ptr [bp+6] + push cs + call near ptr sub_5F2 + inc ah + +loc_711: ; DATA XREF: sub_15C2:loc_1607r + ; seg000:250Er ... + jz short loc_71D + mov es, word ptr [bp+0Ch] + mov es:[di], al + inc di + dec si + jnz short loc_708 + +loc_71D: ; CODE XREF: seg000:0706j + ; seg000:loc_711j + 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_750 + cmp dx, ax + ja short loc_750 + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_750: ; CODE XREF: seg000:073Aj seg000:073Ej + 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_76A proc far ; CODE XREF: seg000:2016p + +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_78A + sub dx, bx + sbb cx, 0 + +loc_78A: ; CODE XREF: sub_76A+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_76A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_79A proc far ; CODE XREF: sub_89A+1Ap sub_96A+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_79A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_7B2 proc far ; CODE XREF: sub_1D58+2p + mov ax, 0C00h + int 21h ; DOS - CLEAR KEYBOARD BUFFER + ; AL must be 01h, 06h, 07h, 08h, or 0Ah. + retf +sub_7B2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_7B8 proc far ; CODE XREF: _main+2AP + mov bx, sp + mov cx, si + push ds + lds si, ss:[bx+4] + lodsb + or al, al + jz short loc_7DB + mov ah, 2 + +loc_7C8: ; CODE XREF: sub_7B8+21j + cmp al, 0Ah + jnz short loc_7D2 + mov dl, 0Dh + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + mov al, 0Ah + +loc_7D2: ; CODE XREF: sub_7B8+12j + mov dl, al + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + lodsb + or al, al + jnz short loc_7C8 + +loc_7DB: ; CODE XREF: sub_7B8+Cj + pop ds + mov si, cx + retf 4 +sub_7B8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7E2 proc far ; CODE XREF: sub_3632+51p + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push ds + mov bx, [bp+arg_6] + lds dx, [bp+arg_2] + mov cx, [bp+arg_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 + pop ds + jnb short loc_7F8 + neg ax + +loc_7F8: ; CODE XREF: sub_7E2+12j + pop bp + retf 8 +sub_7E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7FC proc far ; CODE XREF: sub_3632+2Fp sub_3632+3Dp + +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 bx, [bp+arg_6] + mov dx, [bp+arg_2] + mov cx, [bp+arg_4] + mov al, [bp+arg_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 + jnb short loc_814 + neg ax + cwd + +loc_814: ; CODE XREF: sub_7FC+13j + pop bp + retf 8 +sub_7FC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_818 proc far ; CODE XREF: seg000:04B0p seg000:04C7p ... + +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_818 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_838 proc far ; CODE XREF: sub_86E+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_838 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_84E proc far ; CODE XREF: sub_86E+27p sub_E378+65P + 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_84E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_86E proc far ; CODE XREF: sub_E0AC+3CP sub_E0F4+59P + push cs + call near ptr sub_838 + mov dx, 4A0h + mov ax, 0FFF0h + out dx, ax + mov dx, 4A2h + mov ax, 0FFh + out dx, ax + mov dx, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + xor ax, ax + out dx, ax + mov dx, 4AEh + mov ax, 0Fh + out dx, ax + push cs + call near ptr sub_84E + retf +sub_86E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_89A proc far ; CODE XREF: sub_A7F0+8P sub_A873+19P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_F882 + cmp bx, 0FFFFh + jnz short loc_8EA + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_79A + or ax, dx + mov word_F882, ax + mov cx, ax + xor ax, ax + mov word_10DCC, ax + mov word_10DCA, ax + mov word_10DCE, ax + mov word_10DD0, ax + mov word_10DC6, ax + mov word_10DC8, ax + inc dx + jz short loc_8EA + 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_10DC6, ax + mov word_10DC8, dx + mov ax, 1 + +loc_8EA: ; CODE XREF: sub_89A+Dj sub_89A+39j + pop bp + retf 4 +sub_89A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_8EE proc far ; CODE XREF: sub_95A+1p sub_AB6+1p + mov bx, word_F882 + cmp bx, 0FFFFh + jz short locret_958 + mov ax, word_10DCA + cmp word_10DCC, ax + jnb short loc_92C + push ds + mov cx, word_10DCA + lds dx, dword_10DC2 + 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_91F + add word_10DC6, ax + adc word_10DC8, 0 + cmp word_10DCA, ax + jz short loc_925 + +loc_91F: ; CODE XREF: sub_8EE+20j + mov word_10DD0, 1 + +loc_925: ; CODE XREF: sub_8EE+2Fj + mov word_10DCA, 0 + retf +; --------------------------------------------------------------------------- + +loc_92C: ; CODE XREF: sub_8EE+10j + cmp word_10DCC, 0 + jz short locret_958 + mov dx, ax + mov cx, 0 + add dx, word_10DC6 + mov word_10DCC, cx + mov word_10DCA, cx + adc cx, word_10DC8 + mov ax, 4200h + mov bx, word_F882 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_10DC6, ax + mov word_10DC8, dx + +locret_958: ; CODE XREF: sub_8EE+7j sub_8EE+43j + retf +sub_8EE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_95A proc far ; CODE XREF: sub_2FE2+53p sub_A74C+19P ... + push cs + call near ptr sub_8EE + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_F882, 0FFFFh + retf +sub_95A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_96A proc far ; CODE XREF: sub_C68C+7DP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_F882 + cmp bx, 0FFFFh + jnz short loc_9A6 + mov cx, 20h ; ' ' + mov ah, 3Ch ; '<' + push ax + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_79A + or ax, dx + mov word_F882, ax + xor ax, ax + mov word_10DCC, ax + mov word_10DCA, ax + mov word_10DCE, ax + mov word_10DD0, ax + mov word_10DC6, ax + mov word_10DC8, ax + mov ax, dx + inc ax + +loc_9A6: ; CODE XREF: sub_96A+Dj + pop bp + retf 4 +sub_96A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_9AA proc far ; CODE XREF: sub_C733+7P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_BB4 + jb short loc_9C0 + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_9C0: ; CODE XREF: sub_9AA+Fj + sbb ax, ax + inc ax + retf 4 +sub_9AA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9C6 proc far ; CODE XREF: sub_2FE2+2Cp sub_2FE2+4Fp ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_F880, 0 + jz short loc_A4A + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_9D8: ; CODE XREF: sub_9C6+7Fj + mov ax, word_10DCC + cmp word_10DCA, ax + jb short loc_A0E + add word_10DC6, ax + adc word_10DC8, 0 + push bx + push ds + mov cx, word_F880 + mov bx, word_F882 + lds dx, dword_10DC2 + 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_10DCC, ax + jz short loc_A69 + mov word_10DCA, 0 + +loc_A0E: ; CODE XREF: sub_9C6+19j + mov si, word_10DCC + sub si, word_10DCA + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_A3F + or si, si + jz short loc_A3F + push si + push ds + mov cx, si + mov ax, word_10DCA + lds si, dword_10DC2 + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_A3F: ; CODE XREF: sub_9C6+5Cj sub_9C6+60j + add word_10DCA, si + sub bx, si + jnz short loc_9D8 + jmp short loc_A6F +; --------------------------------------------------------------------------- + nop + +loc_A4A: ; CODE XREF: sub_9C6+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_F882 + 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_10DC6, ax + adc word_10DC8, 0 + mov bx, cx + sub bx, ax + jz short loc_A6F + +loc_A69: ; CODE XREF: sub_9C6+40j + mov word_10DCE, 1 + +loc_A6F: ; CODE XREF: sub_9C6+81j sub_9C6+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_9C6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A7A proc far ; CODE XREF: sub_2FE2+1Bp sub_A74C+8P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_F882 + cmp bx, 0FFFFh + jnz short loc_AB1 + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_BB4 + sbb bx, bx + or ax, bx + mov word_F882, ax + xor ax, ax + mov word_10DCC, ax + mov word_10DC6, ax + mov word_10DC8, ax + mov word_10DCA, ax + mov word_10DCE, ax + mov word_10DD0, ax + lea ax, [bx+1] + +loc_AB1: ; CODE XREF: sub_A7A+Cj + pop bp + retf 4 +sub_A7A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_AB6 proc far ; CODE XREF: sub_A7F0+12P sub_A7F0+56P ... + push cs + call near ptr sub_8EE + cmp bx, 0FFFFh + jz short locret_AE7 + 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_10DCE, 0 + mov word_10DC6, ax + mov word_10DC8, dx + +locret_AE7: ; CODE XREF: sub_AB6+7j + retf 6 +sub_AB6 endp + +; --------------------------------------------------------------------------- + mov ax, word_10DCA + xor dx, dx + add ax, word_10DC6 + adc dx, word_10DC8 + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AF8 proc far ; CODE XREF: sub_A7F0+4CP sub_A7F0+77P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_F880, 0 + jz short loc_B6E + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_B0A: ; CODE XREF: sub_AF8+6Ej + mov cx, word_F880 + sub cx, word_10DCA + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_10DC2 + add di, word_10DCA + sub bx, cx + add word_10DCA, 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_B64 + push ds + push bx + mov cx, word_F880 + mov bx, word_F882 + lds dx, dword_10DC2 + 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_B80 + cmp word_F880, ax + jnz short loc_B80 + mov word_10DCA, 0 + add word_10DC6, ax + adc word_10DC8, 0 + +loc_B64: ; CODE XREF: sub_AF8+3Fj + or bx, bx + jnz short loc_B0A + mov ax, 1 + jmp short loc_B96 +; --------------------------------------------------------------------------- + nop + +loc_B6E: ; CODE XREF: sub_AF8+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_F882 + 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_B88 + +loc_B80: ; CODE XREF: sub_AF8+55j sub_AF8+5Bj + mov word_10DD0, 1 + xor ax, ax + +loc_B88: ; CODE XREF: sub_AF8+86j + add word_10DC6, ax + adc word_10DC8, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_B96: ; CODE XREF: sub_AF8+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_AF8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B9E proc far ; CODE XREF: sub_2A86+68p sub_2A86+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_BB0 + mov ax, 0FFF3h + +locret_BB0: ; CODE XREF: sub_B9E+Dj + retf 2 +sub_B9E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_BB4 proc far ; CODE XREF: seg000:06C3p sub_9AA+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_F884 + 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_BC8 + retf 4 +; --------------------------------------------------------------------------- + +loc_BC8: ; CODE XREF: sub_BB4+Fj + mov ax, 0FFFEh + retf 4 +sub_BB4 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_BD4 + +loc_BCE: ; CODE XREF: sub_BD4+1Fj sub_BD4+35j ... + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_BD4 + +; =============== S U B R O U T I N E ======================================= + + +sub_BD4 proc far ; CODE XREF: sub_FF0-9p sub_FF0+61p + +; FUNCTION CHUNK AT 0BCE 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_BE9 + xchg bx, si + +loc_BE9: ; CODE XREF: sub_BD4+11j + mov bp, word_F84E + mov dx, word_F850 + sub si, bp + jl short loc_BCE + 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_BCE + add bx, bp + cmp ax, di + jle short loc_C12 + xchg ax, di + +loc_C12: ; CODE XREF: sub_BD4+3Bj + mov dx, word_F854 + mov bp, word_F856 + sub di, dx + js short loc_BCE + 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_BCE + mov dx, ax + shl ax, 2 + add ax, dx + add ax, word_F85A + 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+51Eh] + not dx + mov bx, si + and bx, 0Fh + shl bx, 1 + mov bx, [bx+520h] + sar si, 4 + js short loc_C90 + lea bp, [si+2Ah] + shl bp, 1 + +loc_C78: ; CODE XREF: sub_BD4+B3j + mov ax, dx + stosw + mov ax, 0FFFFh + mov cx, si + rep stosw + mov ax, bx + stosw + sub di, bp + jnb short loc_C78 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_C90: ; CODE XREF: sub_BD4+9Dj + mov bp, 52h ; 'R' + mov ax, dx + and ax, bx + nop + +loc_C98: ; CODE XREF: sub_BD4+C7j + stosw + sub di, bp + jnb short loc_C98 + pop di + pop si + pop bp + retf 8 +sub_BD4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_CA4 proc far ; CODE XREF: sub_CCD2+2BP sub_D3A2+45P ... + push di + mov di, sp + mov ax, word_F854 + mov cx, ax + mov bx, ss:[di+0Ah] + sub bx, ax + jg short loc_CB6 + xor bx, bx + +loc_CB6: ; CODE XREF: sub_CA4+Ej + mov ax, bx + shl ax, 2 + add ax, bx + add ax, word_F85A + mov es, ax + mov ax, word_F856 + mov dx, ss:[di+6] + sub dx, cx + cmp dx, ax + jl short loc_CD2 + mov dx, ax + +loc_CD2: ; CODE XREF: sub_CA4+2Aj + sub dx, bx + jl short loc_D08 + mov ax, ss:[di+0Ch] + mov bx, ss:[di+8] + sub bx, ax + jl short loc_D08 + 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_D1A + shr bx, 1 + jb short loc_D0C + nop + +loc_D00: ; CODE XREF: sub_CA4+62j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_D00 + +loc_D08: ; CODE XREF: sub_CA4+30j sub_CA4+3Cj + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_D0C: ; CODE XREF: sub_CA4+59j sub_CA4+6Fj + mov cx, bx + rep stosw + stosb + sub di, dx + jnb short loc_D0C + pop di + retf 8 +; --------------------------------------------------------------------------- + nop + +loc_D1A: ; CODE XREF: sub_CA4+55j + shr bx, 1 + jb short loc_D2E + dec bx + nop + +loc_D20: ; CODE XREF: sub_CA4+84j + mov cx, bx + stosb + rep stosw + stosb + sub di, dx + jnb short loc_D20 + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_D2E: ; CODE XREF: sub_CA4+78j sub_CA4+91j + mov cx, bx + stosb + rep stosw + sub di, dx + jnb short loc_D2E + pop di + retf 8 +sub_CA4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D3C proc far ; CODE XREF: sub_FF0+80p sub_FF0+96p ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov dx, [bp+arg_0] + sub dx, word_F854 + cmp dx, word_F856 + ja short loc_DBC + mov cx, [bp+arg_4] + mov bx, [bp+arg_2] + mov bp, dx + shl bp, 2 + add bp, dx + shl bp, 4 + mov ax, word_F84E + sub cx, ax + sub bx, ax + test cx, bx + js short loc_DBC + cmp cx, bx + jg short loc_D6E + xchg cx, bx + +loc_D6E: ; CODE XREF: sub_D3C+2Ej + cmp bx, 8000h + sbb dx, dx + and bx, dx + mov di, word_F850 + sub cx, di + sbb dx, dx + and cx, dx + add cx, di + sub cx, bx + jl short loc_DBC + mov es, word_F85A + add bx, ax + mov di, bx + shr di, 4 + shl di, 1 + add di, bp + and bx, 0Fh + add cx, bx + sub cx, 10h + shl bx, 1 + mov ax, [bx+51Eh] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_DB7 + stosw + mov ax, 0FFFFh + rep stosw + +loc_DB7: ; CODE XREF: sub_D3C+73j + and ax, [bx+520h] + stosw + +loc_DBC: ; CODE XREF: sub_D3C+Fj sub_D3C+2Aj ... + pop di + pop bp + retf 6 +sub_D3C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC2 proc far ; CODE XREF: sub_C04E+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_DF3: ; CODE XREF: sub_DC2+73j + mov dx, es:[bx+si+2] + cmp dx, [bp+var_4] + jge short loc_E08 + mov [bp+var_8], bx + mov [bp+var_A], bx + mov [bp+var_4], dx + jmp short loc_E1A +; --------------------------------------------------------------------------- + nop + +loc_E08: ; CODE XREF: sub_DC2+38j + cmp [bp+var_4], dx + jnz short loc_E12 + mov [bp+var_A], bx + jmp short loc_E1A +; --------------------------------------------------------------------------- + +loc_E12: ; CODE XREF: sub_DC2+49j + cmp [bp+var_C], dx + jge short loc_E1A + mov [bp+var_C], dx + +loc_E1A: ; CODE XREF: sub_DC2+43j sub_DC2+4Ej ... + mov dx, es:[bx+si] + cmp ax, dx + jl short loc_E2C + mov ax, dx + jmp short loc_E32 +; --------------------------------------------------------------------------- + nop + +loc_E26: ; CODE XREF: sub_DC2+79j sub_DC2+7Fj ... + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + +loc_E2C: ; CODE XREF: sub_DC2+5Dj + cmp di, dx + jge short loc_E32 + mov di, dx + +loc_E32: ; CODE XREF: sub_DC2+61j sub_DC2+6Cj + add bx, 4 + loop loc_DF3 + cmp word_F852, ax + jl short loc_E26 + cmp word_F84E, di + jg short loc_E26 + mov ax, [bp+var_4] + cmp word_F858, ax + jl short loc_E26 + mov dx, [bp+var_C] + cmp word_F854, dx + jg short loc_E26 + mov ax, word_F858 + cmp ax, dx + jge short loc_E5E + mov dx, ax + +loc_E5E: ; CODE XREF: sub_DC2+98j + mov [bp+var_C], dx + mov ax, [bp+arg_0] + cmp [bp+var_8], 0 + jnz short loc_E77 + cmp [bp+var_A], ax + jnz short loc_E77 + mov [bp+var_8], ax + mov [bp+var_A], 0 + +loc_E77: ; CODE XREF: sub_DC2+A6j sub_DC2+ABj + mov bx, [bp+var_8] + mov dx, [bp+arg_0] + mov ax, word_F854 + +loc_E80: ; CODE XREF: sub_DC2+CBj + mov cx, bx + sub bx, 4 + jns short loc_E89 + mov bx, dx + +loc_E89: ; CODE XREF: sub_DC2+C3j + cmp es:[bx+si+2], ax + jl short loc_E80 + 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_F854 + jge short loc_EC7 + mov ax, dx + sub ax, [bp+var_6] + push ax + mov ax, di + sub ax, es:[bx+si] + mov cx, word_F854 + sub cx, dx + imul cx + pop cx + idiv cx + add di, ax + mov dx, word_F854 + +loc_EC7: ; CODE XREF: sub_DC2+E7j + mov [bp+var_4], dx + xchg di, dx + mov ax, es:[bx+si] + mov cx, [bp+var_6] + sub cx, di + mov bx, 1A6Eh + call sub_1D76 + mov bx, [bp+var_A] + mov cx, [bp+arg_0] + mov ax, word_F854 + +loc_EE3: ; CODE XREF: sub_DC2+130j + mov di, bx + add bx, 4 + cmp bx, cx + jle short loc_EEE + xor bx, bx + +loc_EEE: ; CODE XREF: sub_DC2+128j + cmp es:[bx+si+2], ax + jl short loc_EE3 + 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_F23 + mov ax, word_F854 + 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_F23: ; CODE XREF: sub_DC2+14Bj + mov dx, di + mov ax, bx + mov cx, [bp+var_2] + sub cx, [bp+var_4] + mov bx, 1A76h + call sub_1D76 + mov si, [bp+var_4] + +loc_F36: ; CODE XREF: sub_DC2+1CEj + mov di, [bp+var_6] + cmp di, [bp+var_2] + jle short loc_F41 + mov di, [bp+var_2] + +loc_F41: ; CODE XREF: sub_DC2+17Aj + cmp [bp+var_C], di + jle short loc_FBA + push di + lea dx, [di-1] + sub dx, si + sub si, word_F854 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov es, word_F85A + call loc_3264 + pop si + les di, [bp+arg_2] + cmp si, [bp+var_6] + jnz short loc_F8D + mov bx, [bp+var_8] + mov dx, es:[bx+di] + sub bx, 4 + jns short loc_F78 + mov bx, [bp+arg_0] + +loc_F78: ; CODE XREF: sub_DC2+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, 1A6Eh + call sub_1D76 + +loc_F8D: ; CODE XREF: sub_DC2+1A6j + cmp [bp+var_2], si + jnz short loc_F36 + mov bx, [bp+var_A] + mov dx, es:[bx+di] + add bx, 4 + cmp bx, [bp+arg_0] + jle short loc_FA2 + xor bx, bx + +loc_FA2: ; CODE XREF: sub_DC2+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, 1A76h + push 0F36h + jmp sub_1D76 +; --------------------------------------------------------------------------- + +loc_FBA: ; CODE XREF: sub_DC2+182j + mov es, word_F85A + mov dx, [bp+var_C] + sub dx, si + sub si, word_F854 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + call loc_3264 + pop si + pop di + leave + retf 6 +sub_DC2 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_FF0 + +loc_FDA: ; CODE XREF: sub_FF0+41j + push word ptr [bp+0eh] + push word ptr [bp+0ch] + push word ptr [bp+0ah] + push word ptr [bp+08h] + push cs + call near ptr sub_BD4 + pop di + pop si + leave + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_FF0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_FF0 proc far ; CODE XREF: sub_D338+3CP sub_D338+59P ... + +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + +; FUNCTION CHUNK AT 0FDA SIZE 00000016 BYTES + + enter 2, 0 + push si + push di + mov ax, [bp+arg_0] + mov bx, [bp+arg_8] + mov si, [bp+arg_4] + cmp bx, si + jle short loc_100B + xchg bx, si + mov [bp+arg_8], bx + mov [bp+arg_4], si + +loc_100B: ; CODE XREF: sub_FF0+11j + sub si, bx + shr si, 1 + sub ax, si + sbb dx, dx + and ax, dx + add ax, si + mov cx, [bp+arg_6] + mov di, [bp+arg_2] + cmp cx, di + jle short loc_1023 + xchg cx, di + +loc_1023: ; CODE XREF: sub_FF0+2Fj + mov bx, di + sub di, cx + shr di, 1 + sub ax, di + sbb dx, dx + and ax, dx + add ax, di + jz short loc_FDA + mov [bp+var_2], ax + add cx, ax + sub bx, ax + mov [bp+arg_6], cx + mov [bp+arg_2], bx + mov si, ax + inc cx + dec bx + cmp bx, cx + jl short loc_1054 + push [bp+arg_8] + push cx + push [bp+arg_4] + push bx + push cs + call near ptr sub_BD4 + +loc_1054: ; CODE XREF: sub_FF0+56j + add [bp+arg_8], si + sub [bp+arg_4], si + mov di, 0 + +loc_105D: ; CODE XREF: sub_FF0+DAj + mov ax, [bp+arg_8] + sub ax, si + push ax + mov ax, [bp+arg_4] + add ax, si + push ax + mov ax, [bp+arg_6] + sub ax, di + push ax + push cs + call near ptr sub_D3C + mov ax, [bp+arg_8] + sub ax, si + push ax + mov ax, [bp+arg_4] + add ax, si + push ax + mov ax, [bp+arg_2] + add ax, di + push ax + push cs + call near ptr sub_D3C + mov ax, di + stc + rcl ax, 1 + sub [bp+var_2], ax + jns short loc_10C7 + mov ax, [bp+arg_8] + sub ax, di + push ax + mov ax, [bp+arg_4] + add ax, di + push ax + mov ax, [bp+arg_6] + sub ax, si + push ax + push cs + call near ptr sub_D3C + mov ax, [bp+arg_8] + sub ax, di + push ax + mov ax, [bp+arg_4] + add ax, di + push ax + mov ax, [bp+arg_2] + add ax, si + push ax + push cs + call near ptr sub_D3C + dec si + mov ax, si + shl ax, 1 + add [bp+var_2], ax + +loc_10C7: ; CODE XREF: sub_FF0+A1j + inc di + cmp si, di + jnb short loc_105D + pop di + pop si + leave + retf 0Ah +sub_FF0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_10D2 proc far ; CODE XREF: sub_AAB5+28P sub_AAB5+6AP ... + 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_10D2 endp + +; --------------------------------------------------------------------------- + nop + xor al, al + out 7Ch, al + retf +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_1316 + +loc_1102: ; CODE XREF: sub_1316+11j + push cs + call near ptr sub_1308 + jnz short loc_110D + mov ax, 40h ; '@' + jmp short loc_1179 +; --------------------------------------------------------------------------- + +loc_110D: ; CODE XREF: sub_1316-210j + xor al, al + mov dx, 0FFF7h + mov es, dx + assume es:nothing + mov dx, 1827h + cmp dx, es:0 + jnz short loc_1122 + or al, 2Ah + jmp short loc_1163 +; --------------------------------------------------------------------------- + +loc_1122: ; CODE XREF: sub_1316-1FAj + mov dx, 0FD80h + mov es, dx + assume es:nothing + mov dx, 2A27h + cmp dx, es:2 + jnz short loc_114A + mov ah, es:4 + mov bx, 546h + or al, 22h + +loc_113B: ; CODE XREF: sub_1316-1D2j + mov dl, [bx] + or dl, dl + jz short loc_1163 + inc bx + cmp ah, dl + jnz short loc_113B + or al, 21h + jmp short loc_1163 +; --------------------------------------------------------------------------- + +loc_114A: ; CODE XREF: sub_1316-1E7j + xor bx, bx + mov es, bx + assume es:seg000 + or al, es:byte_501 + and al, 8 + or al, 20h + mov dh, byte ptr es:loc_400 + and dh, 80h + rol dh, 1 + or al, dh + +loc_1163: ; CODE XREF: sub_1316-1F6j + ; sub_1316-1D7j ... + mov dh, byte ptr es:loc_45B+1 + and dh, 40h + ror dh, 1 + ror dh, 1 + ror dh, 1 + ror dh, 1 + or al, dh + xor ah, ah + xor al, 1 + +loc_1179: ; CODE XREF: sub_1316-20Bj + mov word_F8C4, ax + jmp loc_12D6 +; END OF FUNCTION CHUNK FOR sub_1316 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_1316 + +loc_1180: ; CODE XREF: sub_1316:loc_132Aj + push cs + call near ptr sub_1308 + jnz short loc_118C + mov ax, 80h ; '€' + jmp loc_12B5 +; --------------------------------------------------------------------------- + +loc_118C: ; CODE XREF: sub_1316-192j + xor bx, bx + mov ax, 4F01h + int 2Fh + or bx, bx + jz short loc_11BD + push ds + mov ax, 0F000h + mov ds, ax + assume ds:nothing + mov al, ds:0E010h + cmp al, 54h ; 'T' + jnz short loc_11B7 + xor ax, ax + mov ds, ax + assume ds:seg000 + mov al, byte_4D0 + not al + and al, 1 + or al, 16h + xor ah, ah + pop ds + assume ds:dseg + jmp loc_12B5 +; --------------------------------------------------------------------------- + +loc_11B7: ; CODE XREF: sub_1316-174j + pop ds + +loc_11B8: ; CODE XREF: sub_1316-136j + mov bx, 1Ah + jmp short loc_1208 +; --------------------------------------------------------------------------- + +loc_11BD: ; CODE XREF: sub_1316-181j + xor bx, bx + mov ax, 5001h + int 10h ; - VIDEO - SCROLOCK.COM - INSTALLATION CHECK + ; Return: BX = 1954h if installed + ; AL = 00 if inactive, nonzero if active + or bl, bl + jz short loc_11D8 + mov ax, 14h + cmp bx, 51h ; 'Q' + jnz short loc_11D3 + jmp loc_12B5 +; --------------------------------------------------------------------------- + +loc_11D3: ; CODE XREF: sub_1316-148j + or ax, bx + jmp loc_12B5 +; --------------------------------------------------------------------------- + +loc_11D8: ; CODE XREF: sub_1316-150j + mov ax, 3000h + int 21h ; DOS - GET DOS VERSION + ; Return: AL = major version number (00h for DOS 1.x) + cmp bh, 0FFh + jz short loc_11B8 + and bh, 0FEh + cmp bh, 0EEh ; 'î' + jnz short loc_11EE + mov dl, 18h + jmp short loc_1208 +; --------------------------------------------------------------------------- + +loc_11EE: ; CODE XREF: sub_1316-12Ej + mov ax, 4900h + pushf + int 15h + sbb ax, ax + popf + test ax, ax + jz short loc_11FE + jmp loc_12A0 +; --------------------------------------------------------------------------- + +loc_11FE: ; CODE XREF: sub_1316-11Dj + or bl, bl + jz short loc_1205 + jmp loc_12A0 +; --------------------------------------------------------------------------- + +loc_1205: ; CODE XREF: sub_1316-116j + mov bx, 12h + +loc_1208: ; CODE XREF: sub_1316-15Bj + ; sub_1316-12Aj + push ds + push si + xor ax, ax + mov ds, ax + assume ds:seg000 + mov ax, 6300h + int 21h ; DOS - 3.2+ only - GET DOUBLE BYTE CHARACTER SET LEAD TABLE + mov ax, [si] + not ax + and ax, 1 + or bx, ax + pop si + pop ds + assume ds:dseg + pushf + push bx + mov ax, 5010h + int 15h + cmp ah, 86h ; '†' + jnz short loc_122E + xor ax, ax + jmp short loc_1235 +; --------------------------------------------------------------------------- + +loc_122E: ; CODE XREF: sub_1316-EEj + mov ax, es:[bx+2] + and ax, 1 + +loc_1235: ; CODE XREF: sub_1316-EAj + pop bx + popf + jb short loc_1263 + ror al, 1 + ror al, 1 + or ax, bx + test ax, 40h + jz short loc_1263 + mov bx, ax + mov dx, 550h + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + jnb short loc_1257 + xor bx, 40h + mov ax, bx + jmp short loc_12B5 +; --------------------------------------------------------------------------- + +loc_1257: ; CODE XREF: sub_1316-C8j + push bx + mov bx, ax + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop bx + mov ax, bx + jmp short loc_12B5 +; --------------------------------------------------------------------------- + +loc_1263: ; CODE XREF: sub_1316-DFj sub_1316-D4j + push bx + mov dx, 559h + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + jb short loc_129B + push ax + mov dx, 562h + mov cx, 4 + mov bx, ax + mov ax, 4402h + int 21h ; DOS - 2+ - IOCTL - READ CHARACTER DEVICE CONTROL STRING + ; BX = device handle, CX = number of bytes to read DS:DX -> buffer + pop ax + pushf + mov bx, ax + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + popf + jb short loc_129B + mov ax, 50F1h + call dword_F8A2 + or ah, ah + jnz short loc_129B + pop bx + or bx, 200h + mov ax, bx + jmp short loc_12B5 +; --------------------------------------------------------------------------- + +loc_129B: ; CODE XREF: sub_1316-AAj sub_1316-91j ... + pop bx + mov ax, bx + jmp short loc_12B5 +; --------------------------------------------------------------------------- + +loc_12A0: ; CODE XREF: sub_1316-11Bj + ; sub_1316-114j + push ds + xor ax, ax + mov ds, ax + assume ds:seg000 + mov ax, word ptr loc_1F3+1 + or ax, word ptr loc_1F3+3 + pop ds + assume ds:dseg + mov ax, 10h + jnz short loc_12B5 + mov ax, 11h + +loc_12B5: ; CODE XREF: sub_1316-18Dj + ; sub_1316-162j ... + mov dx, ax + mov ax, 1A00h + xor bx, bx + xor cx, cx + int 2Fh ; - Multiplex - DOS 4+ ANSI.SYS internal - INSTALLATION CHECK + ; Return: AL = FFh if installed + mov ah, al + cmp ax, 0FFFFh + jnz short loc_12CC + and ax, 110h + or dx, ax + +loc_12CC: ; CODE XREF: sub_1316-51j + mov word_F8C4, dx + mov ax, dx + ; Hack + db 0e9h + db 001h + db 000h +; END OF FUNCTION CHUNK FOR sub_1316 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_1316 + +loc_12D6: ; CODE XREF: sub_1316-19Aj + ; sub_1316-44j + mov ax, 3306h + int 21h ; DOS - 5+ Get TRUE Version Number (BL major, BH minor, DL revision, DH flags) + cmp al, 0FFh + jz short loc_12F4 + cmp bx, 3205h + jz short loc_12FD + cmp bl, 0Ah + jz short loc_12FD + cmp bl, 14h + jz short loc_12FD + cmp bl, 1Eh + jz short loc_12FD + +loc_12F4: ; CODE XREF: sub_1316-39j + mov ax, 1600h + int 2Fh ; - Multiplex - MS WINDOWS - ENHANCED WINDOWS INSTALLATION CHECK + ; Return: AL = anything else + ; AL = Windows major version number >= 3 + ; AH = Windows minor version number + and al, 7Fh + jz short loc_1303 + +loc_12FD: ; CODE XREF: sub_1316-33j sub_1316-2Ej ... + or word_F8C4, 8000h + +loc_1303: ; CODE XREF: sub_1316-1Bj + mov ax, word_F8C4 + retf +; END OF FUNCTION CHUNK FOR sub_1316 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1308 proc far ; CODE XREF: sub_1316-213p + ; sub_1316-195p ... + mov ax, 0FFFFh + mov es, ax + assume es:nothing + mov ax, 0FC00h + sub ax, es:3 + retf +sub_1308 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1316 proc far ; CODE XREF: sub_3B6E+Ap + +; FUNCTION CHUNK AT 1102 SIZE 0000007D BYTES +; FUNCTION CHUNK AT 1180 SIZE 00000155 BYTES +; FUNCTION CHUNK AT 12D6 SIZE 00000031 BYTES + + push cs + call near ptr sub_1308 + jz short loc_132D + mov ah, 0Fh + int 10h ; - VIDEO - GET CURRENT VIDEO MODE + ; Return: AH = number of columns on screen + ; AL = current video mode + ; BH = current active display page + cmp ah, 0Fh + jnz short loc_132A + nop + nop + jmp loc_1102 +; --------------------------------------------------------------------------- + +loc_132A: ; CODE XREF: sub_1316+Dj + jmp loc_1180 +; --------------------------------------------------------------------------- + +loc_132D: ; CODE XREF: sub_1316+4j + mov ax, 40h ; '@' + retf +sub_1316 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1332 proc far ; CODE XREF: _main:loc_B3ABP + xor ax, ax + cmp word_F8A6, ax + jnz short locret_1355 + mov ax, 200h + push ax + nop + push cs + call near ptr sub_2766 + or ax, ax + jz short locret_1355 + mov word_F8A6, ax + push ax + xor ax, ax + push ax + push cs + call near ptr sub_1450 + mov ax, 1 + +locret_1355: ; CODE XREF: sub_1332+6j sub_1332+13j + retf +sub_1332 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1356 proc far ; CODE XREF: sub_A8F1+3CP sub_A96C+36P ... + mov ax, word_F8A6 + test ax, ax + jz short locret_1371 + push ax + push ax + xor ax, ax + mov word_F8A6, ax + push ax + push cs + call near ptr sub_14BE + nop + push cs + call near ptr sub_2856 + mov ax, 1 + +locret_1371: ; CODE XREF: sub_1356+5j + retf +sub_1356 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1372 proc far ; CODE XREF: _main+3DP + +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_BB4 + mov bp, ax + mov ax, 0 + jb short loc_13FF + mov ax, 2000h + push ax + nop + push cs + call near ptr sub_248E + mov si, ax + mov ax, 0 + jb short loc_13F7 + mov ax, sp + push bp + push ss + push ax + nop + push cs + call near ptr sub_3D6 + jb short loc_13ED + mov di, sp + push ss + pop es + assume es:nothing + cmp byte ptr es:[di+5], 0 + jnz short loc_13ED + add di, 8 + push si + mov si, 568h + mov cx, 4 + repe cmpsw + pop si + jnz short loc_13ED + 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_13ED + push si + xor ax, ax + push ax + push cs + call near ptr sub_14BE + mov ax, 1 + jmp short loc_13EF +; --------------------------------------------------------------------------- + +loc_13ED: ; CODE XREF: sub_1372+34j sub_1372+3Fj ... + xor ax, ax + +loc_13EF: ; CODE XREF: sub_1372+79j + push ax + push si + nop + push cs + call near ptr sub_2478 + pop ax + +loc_13F7: ; CODE XREF: sub_1372+28j + push ax + mov bx, bp + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + pop ax + +loc_13FF: ; CODE XREF: sub_1372+18j + add sp, 20h + pop di + pop si + pop bp + retf 4 +sub_1372 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1408 proc near ; CODE XREF: seg000:1444p sub_1450+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_1414: ; CODE XREF: sub_1408+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_1414 + retn +sub_1408 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_1408 + mov al, 0Ah + out 68h, al + pop di + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1450 proc far ; CODE XREF: sub_1332+1Dp + push di + mov di, sp + les di, ss:[di+6] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_145E: ; CODE XREF: sub_1450+1Aj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1408 + inc dl + jnz short loc_145E + mov al, 0Ah + out 68h, al + pop di + retf 4 +sub_1450 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1474 proc near ; CODE XREF: seg000:14B1p sub_14BE+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_1480: ; CODE XREF: sub_1474+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_1480 + retn +sub_1474 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_1474 + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_14BE proc far ; CODE XREF: sub_1356+10p sub_1372+73p + push ds + push si + mov si, sp + lds si, ss:[si+8] + mov al, 0Bh + out 68h, al + mov dx, 0 + +loc_14CD: ; CODE XREF: sub_14BE+1Bj + mov ax, dx + adc ax, 5680h + and al, 7Fh + call sub_1474 + inc dl + jnz short loc_14CD + mov al, 0Ah + out 68h, al + pop si + pop ds + retf 4 +sub_14BE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_14E4 proc far ; CODE XREF: sub_1D32+19p + mov ah, 42h ; 'B' + mov ch, 0C0h ; 'À' + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + mov ax, 0A800h + mov word_F8B0, ax + mov word_F85A, ax + mov word_F8B2, 3E80h + xor ax, ax + mov word_F84E, ax + mov word_F854, ax + mov es, ax + assume es:seg000 + mov ah, es:byte_54D + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_F8B8, ax + mov ax, 27Fh + mov word_F852, ax + mov word_F850, ax + mov ax, 190h + mov word_F8B4, ax + dec ax + mov word_F858, ax + mov word_F856, ax + mov word_F85C, 7CB0h + retf +sub_14E4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1532 proc far ; CODE XREF: sub_1D32+1Dp sub_BC35+5FP ... + 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_F8B2 + mov es, word_F8B0 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_1532 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1556 proc near ; CODE XREF: sub_156C+25p sub_156C+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_1556 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_156C proc far ; CODE XREF: sub_AE96+F5P + ; sub_AE96+159P ... + xor dx, dx + mov cx, word_F8B2 + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_248E + xchg ax, dx + jb short locret_15BE + 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_1556 + call sub_1556 + mov bx, 0B000h + call sub_1556 + call sub_1556 + mov bx, 0B800h + call sub_1556 + call sub_1556 + mov bx, 0E000h + call sub_1556 + call sub_1556 + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_2478 + mov ax, 1 + +locret_15BE: ; CODE XREF: sub_156C+11j + retf 2 +sub_156C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_15C2 proc far ; CODE XREF: sub_2552+5p + xor ax, ax + mov es, ax + assume es:seg000 + test byte ptr es:loc_45B+1, 40h + jz short locret_1615 + 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_1615 + 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_FB8E, 1 + jz short loc_15FC + 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_15FC: ; CODE XREF: sub_15C2+34j + test cl, 1 + jz short loc_1607 + 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_1607: ; CODE XREF: sub_15C2+3Dj + test byte ptr es:loc_711, 1 + jz short loc_1613 + 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_1613: ; CODE XREF: sub_15C2+4Bj + mov ax, cx + +locret_1615: ; CODE XREF: sub_15C2+Aj sub_15C2+1Cj + retf 4 +sub_15C2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1618 proc far ; CODE XREF: sub_A9C9+BAP sub_AE96+EEP ... + +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + xor cx, cx + les bx, [bp+arg_4] + assume es:nothing + mov ax, es:[bx+2] + test ax, ax + jz short loc_1639 + push ax + nop + push cs + call near ptr sub_2856 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_1639: ; CODE XREF: sub_1618+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_1653 + push ax + nop + push cs + call near ptr sub_2856 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_1653: ; CODE XREF: sub_1618+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_1660 + push ax + nop + push cs + call near ptr sub_2856 + +loc_1660: ; CODE XREF: sub_1618+40j + pop bp + retf 8 +sub_1618 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1670 + +loc_1664: ; CODE XREF: sub_1670+11j sub_1670+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_1670 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1670 proc far ; CODE XREF: sub_DAFD+39P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 1664 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_BB4 + jb short loc_1664 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_248E + jb short loc_1664 + 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_16BA: ; CODE XREF: sub_1670+54j sub_1670+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_16BA + inc al + loop loc_16BA + mov ax, 0FFF3h + call sub_1C1A + cmp dl, 50h ; 'P' + jnz short loc_1664 + call sub_1C1A + cmp dl, 69h ; 'i' + jnz short loc_1664 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_16E5: ; CODE XREF: sub_1670+7Cj + inc ax + call sub_1C1A + cmp dl, 1Ah + jnz short loc_16E5 + stosw + +loc_16EF: ; CODE XREF: sub_1670+84j + call sub_1C1A + or dl, dl + jnz short loc_16EF + call sub_1C1A + mov al, dl + stosb + mov ds:410Ch, al + call sub_1C1A + mov ah, dl + call sub_1C1A + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_1714 + jmp loc_1664 +; --------------------------------------------------------------------------- + +loc_1714: ; CODE XREF: sub_1670+9Fj + call sub_1C1A + cmp dl, 4 + jz short loc_171F + jmp loc_1664 +; --------------------------------------------------------------------------- + +loc_171F: ; CODE XREF: sub_1670+AAj + mov al, dl + stosb + call sub_1C1A + mov al, dl + call sub_1C1A + mov ah, dl + stosw + call sub_1C1A + mov al, dl + call sub_1C1A + mov ah, dl + stosw + call sub_1C1A + mov ah, dl + call sub_1C1A + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_FBA4, 0Ah + nop + push cs + call near ptr sub_26AE + pop ds + stosw + jb short loc_1770 + push es + push di + mov es, ax + xor di, di + +loc_1764: ; CODE XREF: sub_1670+FBj + call sub_1C1A + mov al, dl + stosb + dec bx + jnz short loc_1764 + pop di + pop es + nop + +loc_1770: ; CODE XREF: sub_1670+ECj + call sub_1C1A + mov ah, dl + call sub_1C1A + mov al, dl + stosw + mov word_13340, ax + mov bx, ax + call sub_1C1A + mov ah, dl + call sub_1C1A + mov al, dl + stosw + mov word_13342, ax + add ax, 2 + mul bx + shr dx, 1 + rcr ax, 1 + push ds + push dx + push ax + shl dx, 0Ch + mov word_13348, ax + mov word_1334A, dx + push seg dseg + pop ds + mov word_FBA4, 0Ah + nop + push cs + call near ptr sub_26AE + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_17BE + jmp loc_1664 +; --------------------------------------------------------------------------- + +loc_17BE: ; CODE XREF: sub_1670+149j + mov ax, bx + mov word ptr dword_13344, 0 + mov word ptr dword_13344+2, ax + add word_1334A, ax + mov cx, word_13340 + 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_17F0 + mov bl, 30h ; '0' + nop + +loc_17E6: ; CODE XREF: sub_1670+17Ej + call sub_1C1A + mov al, dl + stosb + dec bl + jnz short loc_17E6 + +loc_17F0: ; CODE XREF: sub_1670+171j + xor bl, bl + call sub_1B2C + mov bl, dl + mov al, dl + shl al, 4 + call sub_1B2C + or al, dl + les di, dword_13344 + mov cx, word_13340 + rep stosb + mov cl, 0FFh + nop + +loc_180E: ; CODE XREF: sub_1670+490j + ; sub_1670+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_183A + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_182E + call sub_1C46 + +loc_182E: ; CODE XREF: sub_1670+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_183A: ; CODE XREF: sub_1670+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_1888 + push cx + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_187A + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1870 + call sub_1C46 + +loc_1870: ; CODE XREF: sub_1670+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_187A: ; CODE XREF: sub_1670+1F1j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + adc bl, 0 + pop cx + +loc_1888: ; CODE XREF: sub_1670+1E2j + cmp bl, cl + jnz short loc_18FC + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_18A2 + 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_18A2: ; CODE XREF: sub_1670+223j + and bl, 0Fh + nop + +loc_18A6: ; CODE XREF: sub_1670+284j + call sub_1B2C + mov bl, dl + mov al, dl + shl al, 4 + call sub_1B2C + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_18C4 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_18C4: ; CODE XREF: sub_1670+24Aj + mov dl, ds:4112h + mov cl, ds:4113h + mov dh, 0 + dec cl + jns short loc_18EA + mov si, ds:4110h + cmp si, 4000h + jnz short loc_18E0 + call sub_1C46 + nop + +loc_18E0: ; CODE XREF: sub_1670+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_18EA: ; CODE XREF: sub_1670+260j + shl dl, 1 + mov ds:4112h, dl + mov ds:4113h, cl + jb short loc_18A6 + mov cl, 0FFh + jmp loc_1AFA +; --------------------------------------------------------------------------- + nop + +loc_18FC: ; CODE XREF: sub_1670+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, ds:4112h + mov cl, ds:4113h + nop + +loc_190C: ; CODE XREF: sub_1670+2BCj + inc bh + dec cl + jns short loc_192A + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1920 + call sub_1C46 + nop + +loc_1920: ; CODE XREF: sub_1670+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_192A: ; CODE XREF: sub_1670+2A0j + shl dl, 1 + jb short loc_190C + mov ds:4112h, dl + mov ds:4113h, cl + mov dh, 0 + dec bh + jnz short loc_193F + jmp loc_19D6 +; --------------------------------------------------------------------------- + +loc_193F: ; CODE XREF: sub_1670+2CAj + cmp bh, 8 + jl short loc_1984 + mov cx, bp + +loc_1946: ; CODE XREF: sub_1670+30Fj + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1954 + call sub_1C46 + +loc_1954: ; CODE XREF: sub_1670+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_1946 + mov bp, cx + nop + +loc_1984: ; CODE XREF: sub_1670+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, ds:4112h + mov cl, ds:4113h + cmp cl, ch + jnb short loc_19B0 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_19A4 + call sub_1C46 + +loc_19A4: ; CODE XREF: sub_1670+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_19B0: ; CODE XREF: sub_1670+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_19D6: ; CODE XREF: sub_1670+2CCj + mov cx, ax + test bl, bl + jnz short loc_19DF + jmp loc_1A7C +; --------------------------------------------------------------------------- + +loc_19DF: ; CODE XREF: sub_1670+36Aj + mov bh, 0 + mov ax, word_13340 + cmp bl, 1 + jz short loc_19FE + cmp bl, 2 + jnz short loc_19F4 + shl ax, 1 + adc bh, bh + jmp short loc_19FE +; --------------------------------------------------------------------------- + +loc_19F4: ; CODE XREF: sub_1670+37Cj + dec ax + cmp bl, 3 + jz short loc_19FE + add ax, 2 + nop + +loc_19FE: ; CODE XREF: sub_1670+377j + ; sub_1670+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_1A12 + sub dx, 1000h + nop + +loc_1A12: ; CODE XREF: sub_1670+39Bj + mov ds, dx + or bh, bh + jnz short loc_1A54 + mov ax, cx + +loc_1A1A: ; CODE XREF: sub_1670+3DEj + mov cx, si + cmp si, di + ja short loc_1A22 + mov cx, di + +loc_1A22: ; CODE XREF: sub_1670+3AEj + neg cx + test ax, ax + jz short loc_1A30 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1A30: ; CODE XREF: sub_1670+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1A40 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1A40: ; CODE XREF: sub_1670+3C6j + or si, si + jnz short loc_1A4C + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1A4C: ; CODE XREF: sub_1670+3D2j + test ax, ax + jnz short loc_1A1A + pop ds + assume ds:dseg + jmp loc_1AF8 +; --------------------------------------------------------------------------- + +loc_1A54: ; CODE XREF: sub_1670+3A6j + ; sub_1670:loc_1A76j + lodsb + mov ah, al + or si, si + jnz short loc_1A64 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_1A64: ; CODE XREF: sub_1670+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_1A76 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_1A76: ; CODE XREF: sub_1670+3FCj + loop loc_1A54 + pop ds + assume ds:dseg + jmp short loc_1AF8 +; --------------------------------------------------------------------------- + nop + +loc_1A7C: ; CODE XREF: sub_1670+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1A92 + 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_1A92: ; CODE XREF: sub_1670+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1AB4 + nop + +loc_1A9C: ; CODE XREF: sub_1670:loc_1AAAj + ; sub_1670+43Fj + stosb + or di, di + jnz short loc_1AAA + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_1AAA: ; CODE XREF: sub_1670+42Fj + loop loc_1A9C + sub bp, 1 + jnb short loc_1A9C + jmp short loc_1AF8 +; --------------------------------------------------------------------------- + nop + +loc_1AB4: ; CODE XREF: sub_1670+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_1ACC + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_1ACC: ; CODE XREF: sub_1670+44Dj + ; sub_1670:loc_1AF0j ... + mov al, dl + stosb + or di, di + jnz short loc_1ADA + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1ADA: ; CODE XREF: sub_1670+461j + loop loc_1AE2 + sub bp, 1 + jb short loc_1AF8 + nop + +loc_1AE2: ; CODE XREF: sub_1670:loc_1ADAj + mov al, bh + stosb + or di, di + jnz short loc_1AF0 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_1AF0: ; CODE XREF: sub_1670+477j + loop loc_1ACC + sub bp, 1 + jnb short loc_1ACC + nop + +loc_1AF8: ; CODE XREF: sub_1670+3E1j + ; sub_1670+409j ... + mov cl, bl + +loc_1AFA: ; CODE XREF: sub_1670+288j + cmp word_13348, di + jbe short loc_1B03 + jmp loc_180E +; --------------------------------------------------------------------------- + +loc_1B03: ; CODE XREF: sub_1670+48Ej + mov ax, es + cmp word_1334A, ax + jbe short loc_1B0E + jmp loc_180E +; --------------------------------------------------------------------------- + +loc_1B0E: ; CODE XREF: sub_1670+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_2478 + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_1670 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1B2C proc near ; CODE XREF: sub_1670+182p + ; sub_1670+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, ds:4112h + mov cl, ds:4113h + dec cl + jns short loc_1B54 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1B4A + call sub_1C46 + +loc_1B4A: ; CODE XREF: sub_1B2C+19j + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1B54: ; CODE XREF: sub_1B2C+Fj + shl dl, 1 + jb short loc_1BA2 + add al, 2 + dec cl + jns short loc_1B76 + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1B6C + call sub_1C46 + nop + +loc_1B6C: ; CODE XREF: sub_1B2C+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1B76: ; CODE XREF: sub_1B2C+30j + shl dl, 1 + jnb short loc_1BA2 + add al, 2 + inc ah + dec cl + jns short loc_1B9A + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1B90 + call sub_1C46 + nop + +loc_1B90: ; CODE XREF: sub_1B2C+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov ds:4110h, si + nop + +loc_1B9A: ; CODE XREF: sub_1B2C+54j + shl dl, 1 + jnb short loc_1BA2 + add al, 4 + inc ah + +loc_1BA2: ; CODE XREF: sub_1B2C+2Aj sub_1B2C+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_1BD8 + shl dx, cl + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1BCC + call sub_1C46 + +loc_1BCC: ; CODE XREF: sub_1B2C+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov ds:4110h, si + nop + +loc_1BD8: ; CODE XREF: sub_1B2C+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_1C0C + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_1C0C: ; CODE XREF: sub_1B2C+D9j sub_1B2C+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_1C0C + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1B2C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1C1A proc near ; CODE XREF: sub_1670+5Dp sub_1670+65p ... + push cx + mov si, ds:4110h + cmp si, 4000h + jnz short loc_1C28 + call sub_1C46 + +loc_1C28: ; CODE XREF: sub_1C1A+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_1C1A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1C46 proc near ; CODE XREF: sub_1670+1BBp + ; sub_1670+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_1C46 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1C5E + +loc_1C58: ; CODE XREF: sub_1C5E+10j sub_1C5E+18j ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_1C5E + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C5E proc far ; CODE XREF: sub_DA75+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 1C58 SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + sub ax, word_F854 + cmp ax, word_F856 + ja short loc_1C58 + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_1C58 + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_1C8E + add cx, di + jle short loc_1C58 + shl di, 2 + add si, di + xor di, di + +loc_1C8E: ; CODE XREF: sub_1C5E+23j + cmp di, 50h ; 'P' + jge short loc_1C58 + add cx, di + cmp cx, 50h ; 'P' + jl short loc_1C9D + mov cx, 50h ; 'P' + +loc_1C9D: ; CODE XREF: sub_1C5E+3Aj + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_F85A + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_1CB0: ; CODE XREF: sub_1C5E+C5j + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+2078h] + mov dx, cs:[bx+207Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+2078h] + or dx, cs:[bx+207Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+2078h] + or dx, cs:[bx+207Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+2078h] + or dx, cs:[bx+207Ah] + 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_1CB0 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_1C5E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1D2C proc far ; CODE XREF: sub_1D32+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_1D2C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1D32 proc far ; CODE XREF: sub_E0F4+1AP + mov al, 41h ; 'A' + out 6Ah, al ; PC-98 GDC (6a): + ; Set display mode to LCD + mov word_F8C6, 0 + push cs + call loc_1DE0 + mov al, 0 + out 0A4h, al ; Interrupt Controller #2, 8259A + out 0A6h, al ; Interrupt Controller #2, 8259A + push cs + call near ptr sub_1D2C + push cs + call near ptr sub_14E4 + push cs + call near ptr sub_1532 + push cs + call near ptr sub_1DAC + retf +sub_1D32 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1D58 proc far ; CODE XREF: sub_E0AC+37P + nop + push cs + call near ptr sub_7B2 + retf +sub_1D58 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1D5E proc far ; CODE XREF: sub_E0F4+4AP + xor ax, ax + mov es, ax + assume es:seg000 + or es:byte_500, 20h + retf +sub_1D5E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1D6A proc far ; CODE XREF: sub_DDB1+8P + xor ax, ax + mov es, ax + and es:byte_500, 0DFh + retf +sub_1D6A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1D76 proc near ; CODE XREF: sub_DC2+115p sub_DC2+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_1D76 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1DAC proc far ; CODE XREF: sub_1D32+21p + push si + push di + push ds + pop es + assume es:dseg + mov di, 1A96h + mov si, 588h + 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_F8C6, 64h ; 'd' + push cs + call loc_1DE0 + retf +sub_1DAC endp + +; --------------------------------------------------------------------------- + +loc_1DE0: ; CODE XREF: sub_622+15p sub_622+3Bp ... + cld + push si + mov ax, word_F8C6 + 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_1E06 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1E06: ; CODE XREF: seg000:1DFDj + mov si, 1A96h + mov dl, 64h ; 'd' + cmp word_F8F8, bx + jnz short loc_1E4A + +loc_1E11: ; CODE XREF: seg000:1E45j + 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_1E11 + pop si + retf +; --------------------------------------------------------------------------- + nop + +loc_1E4A: ; CODE XREF: seg000:1E0Fj + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1E5F + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1E5F: ; CODE XREF: seg000:1E56j + shr al, 1 + cmc + sbb al, al + mov cs:byte_1EC8, al + mov dx, bx + push di + mov di, 0 + +loc_1E6E: ; CODE XREF: seg000:1EE5j + 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_1EA3 + mov bh, al + +loc_1EA3: ; CODE XREF: seg000:1E9Fj + cmp bh, bl + ja short loc_1EA9 + mov bh, bl + +loc_1EA9: ; CODE XREF: seg000:1EA5j + 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_1EC8 db 0 ; DATA XREF: seg000:1E64w +; --------------------------------------------------------------------------- + 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 + +loc_1ED7: ; Interrupt Controller #2, 8259A + out 0ACh, al + shr ah, 1 + sbb al, al + and al, 0Fh + out 0AAh, al ; Interrupt Controller #2, 8259A + inc di + cmp di, 10h + jl short loc_1E6E + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1EEA proc far ; CODE XREF: sub_309E+2Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + assume es:nothing + push word ptr es:0 + push cs + call near ptr sub_55E + push [bp+arg_0] + push cs + call near ptr sub_2856 + pop bp + retf 2 +sub_1EEA 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_1F32 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1F32: ; CODE XREF: seg000:1F1Aj + call word ptr es:4 + test ah, ah + jnz short locret_1F61 + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1F61 + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1F60 + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1F60: ; CODE XREF: seg000:1F4Ej + pop ax + +locret_1F61: ; CODE XREF: seg000:1F39j seg000:1F44j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1F62 proc near ; CODE XREF: seg000:1FA6p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1F7F + ja short loc_1F7B + cmp ax, es:6 + jb short loc_1F7F + +loc_1F7B: ; CODE XREF: sub_1F62+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1F7F: ; CODE XREF: sub_1F62+Ej sub_1F62+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_5F2 + pop es + retn +sub_1F62 endp + +; --------------------------------------------------------------------------- + call sub_1F62 + or ah, ah + jnz short locret_1FB2 + xor al, es:1Eh + +locret_1FB2: ; CODE XREF: seg000:1FABj + retn +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+8] + mov di, [bp+0Ah] + test si, si + jz short loc_1FD7 + +loc_1FC4: ; CODE XREF: seg000:1FD5j + mov es, word ptr [bp+6] + call word ptr es:2 + inc ah + jz short loc_1FD7 + mov es, word ptr [bp+0Ch] + stosb + dec si + jnz short loc_1FC4 + +loc_1FD7: ; CODE XREF: seg000:1FC2j seg000:1FCEj + mov ax, di + sub ax, [bp+0Ah] + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_76A + pop bp + retf 2 +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push di + mov es, word ptr [bp+0Ah] + inc word ptr [bp+8] + mov di, [bp+6] + or di, di + jz short loc_203B + +loc_202F: ; CODE XREF: seg000:2039j seg000:203Ej + call word ptr es:2 + test ah, ah + jnz short loc_2040 + dec di + jnz short loc_202F + +loc_203B: ; CODE XREF: seg000:202Dj + dec word ptr [bp+8] + jnz short loc_202F + +loc_2040: ; CODE XREF: seg000:2036j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_204E proc far ; CODE XREF: sub_BA45+47P sub_BA45+58P ... + mov ax, 4E35h + mul word_F906 + mov cx, ax + mov ax, 15Ah + mul word_F904 + add cx, ax + mov ax, 4E35h + mul word_F904 + add ax, 1 + adc dx, cx + mov word_F904, ax + mov ax, dx + mov word_F906, ax + and ah, 7Fh + retf +sub_204E 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_2478 proc far ; CODE XREF: sub_412+57p sub_1372+81p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_10E16, bx + pop bx + retf 2 +sub_2478 endp + +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_248E + +loc_2488: ; CODE XREF: sub_248E+5j + push cs + call near ptr sub_272A + jb short loc_24BD +; END OF FUNCTION CHUNK FOR sub_248E + +; =============== S U B R O U T I N E ======================================= + + +sub_248E proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 2488 SIZE 00000006 BYTES + + cmp word_FBA0, 0 + jz short loc_2488 + 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_10E16 + add bx, ax + jb short loc_24BC + cmp word_10E12, bx + jb short loc_24BC + mov word_10E16, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_24BC: ; CODE XREF: sub_248E+1Ej sub_248E+24j + pop bx + +loc_24BD: ; CODE XREF: sub_248E-2j + mov ax, 0FFF8h + retf 2 +sub_248E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_24C4 proc near ; CODE XREF: sub_323A+1Ep sub_3488+2p + mov dx, 188h + +loc_24C7: ; CODE XREF: sub_24C4+6j + in al, dx + test al, 80h + jnz short loc_24C7 + mov al, bh + out dx, al + +loc_24CF: ; CODE XREF: sub_24C4+Ej + in al, dx + test al, 80h + jnz short loc_24CF + inc dx + inc dx + mov al, bl + out dx, al + retn +sub_24C4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24DA proc near ; CODE XREF: sub_323A+15p + mov dx, 188h + +loc_24DD: ; CODE XREF: sub_24DA+6j + in al, dx + test al, 80h + jnz short loc_24DD + mov al, bh + out dx, al + +loc_24E5: ; CODE XREF: sub_24DA+Ej + in al, dx + test al, 80h + jnz short loc_24E5 + inc dx + inc dx + in al, dx + retn +sub_24DA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24EE proc far ; CODE XREF: _main+6P _main+116P ... + 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_24EE endp + +; --------------------------------------------------------------------------- + nop + xor ax, ax + mov es, ax + assume es:seg000 + mov al, byte ptr es:loc_711+1 + inc ax + retf +; --------------------------------------------------------------------------- + xor ax, ax + mov es, ax + mov al, byte ptr es:loc_711 + retf +; --------------------------------------------------------------------------- + nop + mov dx, 336Ch + jmp short loc_2538 +; --------------------------------------------------------------------------- + nop + mov dx, 3368h + jmp short loc_2538 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2520 proc far ; CODE XREF: sub_E0F4+54P + mov dx, 3568h + jmp short loc_2538 +sub_2520 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2526 proc far ; CODE XREF: sub_DDB1+12P + mov dx, 356Ch + jmp short loc_2538 +sub_2526 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_252C proc far ; CODE XREF: sub_E0F4+4FP + mov dx, 3168h + jmp short loc_2538 +sub_252C endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2532 proc far ; CODE XREF: sub_DDB1+DP + mov dx, 316Ch + jmp short loc_2538 +; --------------------------------------------------------------------------- + nop + +loc_2538: ; CODE XREF: seg000:2517j seg000:251Dj ... + 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_2532 endp + +; --------------------------------------------------------------------------- + db 0 +dword_254E dd 0 ; DATA XREF: sub_2552+5Ew seg000:25BDr ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2552 proc far ; CODE XREF: sub_E0F4+45P + xor ax, ax + push ax + push ax + push cs + call near ptr sub_15C2 + and ax, 0Ch + cmp ax, 0Ch + mov word_FB94, 33FFh + jz short loc_256E + mov word_FB94, 0 + +loc_256E: ; CODE XREF: sub_2552+14j + xor ax, ax + mov word_10E06, ax + mov word_10E08, ax + cmp byte_FB96, al + jnz short locret_25BB + mov al, 0Ah + push ax + push cs + mov ax, 25C6h + push ax + nop + push cs + call near ptr sub_818 + mov word_10E0A, ax + mov word_10E0C, 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_FB96, ah + mov ax, 18h + push ax + push cs + mov ax, 25BCh + push ax + nop + push cs + call near ptr sub_818 + mov word ptr cs:dword_254E, ax + mov word ptr cs:dword_254E+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_25BB: ; CODE XREF: sub_2552+28j + retf +sub_2552 endp + +; --------------------------------------------------------------------------- + pushf + call cs:dword_254E + out 64h, al ; AT Keyboard controller 8042. + iret +; --------------------------------------------------------------------------- + nop + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_FB94 + add word_10E0E, ax + jb short loc_25F7 + inc word_10E06 + inc word_10E08 + cmp word_FB92, 0 + jz short loc_25F7 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_FB90 + pop es + assume es:nothing + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_25F7: ; CODE XREF: seg000:25D4j seg000:25E3j + pop ds + mov al, 20h ; ' ' + out 0, al + out 64h, al ; AT Keyboard controller 8042. + pop ax + iret + +; =============== S U B R O U T I N E ======================================= + + +sub_2600 proc far ; CODE XREF: sub_E0AC+2DP + cmp byte_FB96, 0 + jz short locret_2646 + mov ax, 18h + push ax + push word ptr cs:dword_254E+2 + push word ptr cs:dword_254E + nop + push cs + call near ptr sub_818 + 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_10E0C + push word_10E0A + nop + push cs + call near ptr sub_818 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_FB96 + 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_FB96, al + +locret_2646: ; CODE XREF: sub_2600+5j + retf +sub_2600 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2648 proc far ; CODE XREF: sub_622+10p sub_622+21p ... + cmp byte_FB96, 0 + jnz short loc_2664 + +loc_264F: ; CODE XREF: sub_2648+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_264F + +loc_2659: ; CODE XREF: sub_2648+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2659 + retf +; --------------------------------------------------------------------------- + +loc_2664: ; CODE XREF: sub_2648+5j + mov ax, word_10E06 + +loc_2667: ; CODE XREF: sub_2648+23j + cmp ax, word_10E06 + jz short loc_2667 + retf +sub_2648 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_266E proc far ; CODE XREF: sub_D708+1A3P + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_F8C6, 0C8h ; 'È' + push cs + call near ptr sub_2648 + +loc_2680: ; CODE XREF: sub_266E+2Ej + push cs + call loc_1DE0 + mov di, si + cmp di, 0 + jle short loc_2692 + +loc_268B: ; CODE XREF: sub_266E+22j + push cs + call near ptr sub_2648 + dec di + jnz short loc_268B + +loc_2692: ; CODE XREF: sub_266E+1Bj + sub word_F8C6, 6 + cmp word_F8C6, 64h ; 'd' + jg short loc_2680 + mov word_F8C6, 64h ; 'd' + push cs + call loc_1DE0 + pop di + pop si + retf 2 +sub_266E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_26AE proc far ; CODE XREF: sub_1670+E7p + ; sub_1670+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_26DA + rcr bx, 1 + push bx + push cs + call near ptr sub_2766 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_26DA: ; CODE XREF: sub_26AE+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_26AE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_26E2 proc far ; CODE XREF: sub_E0F4+7P + 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_26FD + push ax + push bx + push cs + call near ptr sub_2704 + xor ax, ax + mov word_FBA2, 1 + +loc_26FD: ; CODE XREF: sub_26E2+Bj + neg ax + pop bx + retf 2 +sub_26E2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2704 proc far ; CODE XREF: sub_26E2+10p sub_272A+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_FBA0, ax + mov word_10E16, ax + add ax, [bp+arg_0] + mov word_10E10, ax + mov word_10E12, ax + mov word_10E14, 0 + mov word_FBA2, 0 + clc + pop bp + retf 4 +sub_2704 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_272A proc far ; CODE XREF: sub_248E-5p sub_2766+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_FBA6 + cmp bx, ax + jbe short loc_273B + sub bx, ax + +loc_273B: ; CODE XREF: sub_272A+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_274F + push ax + push ax + push bx + push cs + call near ptr sub_2704 + mov word_FBA2, 1 + pop ax + +loc_274F: ; CODE XREF: sub_272A+15j + pop bx + retf +sub_272A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2752 proc far ; CODE XREF: seg000:06B5p sub_2966+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_276D +sub_2752 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2766 proc far ; CODE XREF: sub_1332+Ep sub_26AE+25p ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_276D: ; CODE XREF: sub_2752+12j + cmp word_FBA0, 0 + jnz short loc_2778 + push cs + call near ptr sub_272A + +loc_2778: ; CODE XREF: sub_2766+Cj + push cx + push es + test bx, bx + jz short loc_27D9 + mov ax, word_10E10 + sub ax, word_10E16 + cmp bx, ax + jnb short loc_27D9 + inc bx + mov ax, word_10E14 + test ax, ax + jz short loc_27B5 + mov cx, word_10E10 + +loc_2795: ; CODE XREF: sub_2766+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_27B1 + mov cx, es + add cx, bx + jb short loc_27AD + cmp cx, ax + jbe short loc_27E6 + +loc_27AD: ; CODE XREF: sub_2766+41j + mov cx, word_10E10 + +loc_27B1: ; CODE XREF: sub_2766+3Bj + cmp ax, cx + jnz short loc_2795 + +loc_27B5: ; CODE XREF: sub_2766+29j + mov ax, word_10E12 + mov cx, ax + sub ax, bx + jb short loc_27D9 + cmp ax, word_10E16 + jb short loc_27D9 + mov word_10E12, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_283F +; --------------------------------------------------------------------------- + +loc_27D9: ; CODE XREF: sub_2766+16j sub_2766+21j ... + mov ax, 0 + mov word_FBA4, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_27E6: ; CODE XREF: sub_2766+45j + sub ax, cx + cmp ax, 1 + jbe short loc_2816 + 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_10E14 + jnz short loc_283F + mov word_10E14, cx + jmp short loc_283F +; --------------------------------------------------------------------------- + +loc_2816: ; CODE XREF: sub_2766+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_10E14 + jnz short loc_283F + mov ax, word_10E10 + mov cx, bx + push bx + +loc_282B: ; CODE XREF: sub_2766+D0j + les cx, es:0 + jcxz short loc_283A + mov bx, es + cmp bx, ax + jb short loc_282B + xor bx, bx + +loc_283A: ; CODE XREF: sub_2766+CAj + mov word_10E14, bx + pop bx + +loc_283F: ; CODE XREF: sub_2766+71j sub_2766+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_FBA4 + mov es:4, ax + lea ax, [bx+1] + clc + +loc_2850: ; CODE XREF: sub_2856+12j sub_2856+1Aj + pop es + pop cx + pop bx + retf 2 +sub_2766 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2856 proc far ; CODE XREF: sub_55E+11p seg000:06E9p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_10E12 + jz short loc_28BA + jb short loc_2850 + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_2850 + mov es:[bx], bx + mov cx, word_10E14 + mov ax, es + mov word_10E14, ax + jcxz short loc_28F7 + cmp ax, cx + jb short loc_2889 + mov ax, cx + mov word_10E14, ax + +loc_2889: ; CODE XREF: sub_2856+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_10E10 + jnz short loc_2897 + mov ax, es + +loc_2897: ; CODE XREF: sub_2856+3Dj + push ds + +loc_2898: ; CODE XREF: sub_2856+4Dj sub_2856+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_28B7 + cmp [bx], bx + jnz short loc_2898 + +loc_28A5: ; CODE XREF: sub_2856+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_2898 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_28A5 + +loc_28B7: ; CODE XREF: sub_2856+49j + pop ds + jmp short loc_28F7 +; --------------------------------------------------------------------------- + +loc_28BA: ; CODE XREF: sub_2856+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_10E12, ax + cmp ax, word_10E10 + jz short loc_28F7 + mov es, ax + cmp es:[bx], bx + jnz short loc_28F7 + mov ax, es:[bx+2] + mov word_10E12, ax + mov cx, word_10E10 + cmp ax, cx + jz short loc_28F3 + jmp short loc_28EA +; --------------------------------------------------------------------------- + nop + +loc_28E2: ; CODE XREF: sub_2856+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_28F3 + +loc_28EA: ; CODE XREF: sub_2856+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_28E2 + mov bx, es + +loc_28F3: ; CODE XREF: sub_2856+87j sub_2856+92j + mov word_10E14, bx + +loc_28F7: ; CODE XREF: sub_2856+28j sub_2856+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_2856 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_28FE proc far ; CODE XREF: sub_E0AC+28P + cmp word_FBA0, 0 + jz short loc_2919 + mov ax, word_FBA0 + mov es, ax + xor ax, ax + cmp word_FBA2, ax + mov word_FBA0, ax + jz short loc_2919 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_2919: ; CODE XREF: sub_28FE+5j sub_28FE+15j + mov ax, 1 + retf +sub_28FE endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2922 proc far ; CODE XREF: sub_A9C9+ACP sub_B9CE+70P ... + cmp word_FBC8, 0 + jz short locret_2951 + push word_FBC8 + push cs + call near ptr sub_2856 + mov word_FBC8, 0 + jmp short loc_293F +; --------------------------------------------------------------------------- + +loc_2939: ; CODE XREF: sub_2922+22j + dec ax + push ax + push cs + call near ptr sub_2B10 + +loc_293F: ; CODE XREF: sub_2922+15j + mov ax, word_FBCA + test ax, ax + jnz short loc_2939 + cmp word_FBCC, 0 + jz short locret_2951 + call word_FBCC + +locret_2951: ; CODE XREF: sub_2922+5j sub_2922+29j + retf +sub_2922 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_2966 + +loc_2952: ; CODE XREF: sub_2966+32j + push ax + push es + push cs + call near ptr sub_2856 + pop ax + jmp short loc_295F +; END OF FUNCTION CHUNK FOR sub_2966 +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_2966 + +loc_295C: ; CODE XREF: sub_2966+24j + mov ax, 0FFF8h + +loc_295F: ; CODE XREF: sub_2966-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_2966 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2966 proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 2952 SIZE 00000009 BYTES +; FUNCTION CHUNK AT 295C SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_FBCA + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_FBA4, 4 + push ax + push cs + call near ptr sub_2752 + jb short loc_295C + mov es, ax + push word_FBCA + push dx + push ax + push cs + call near ptr sub_2A12 + jb short loc_2952 + 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_29BC + rep movsb + jmp short loc_29C2 +; --------------------------------------------------------------------------- + nop + +loc_29BC: ; CODE XREF: sub_2966+4Fj sub_2966+5Aj + lodsb + not al + stosb + loop loc_29BC + +loc_29C2: ; CODE XREF: sub_2966+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_29CA: ; CODE XREF: sub_2966+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_29CA + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_29DA: ; CODE XREF: sub_2966+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_29DA + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_29EA: ; CODE XREF: sub_2966+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_29EA + test dl, dl + jz short loc_2A06 + mov ah, 4 + +loc_29F8: ; CODE XREF: sub_2966+9Ej + xor si, si + mov cx, bx + +loc_29FC: ; CODE XREF: sub_2966+9Aj + lodsb + and [di], al + inc di + loop loc_29FC + dec ah + jnz short loc_29F8 + +loc_2A06: ; CODE XREF: sub_2966+8Ej + pop ds + mov ax, word_FBCA + dec ax + pop di + pop si + pop bp + retf 8 +sub_2966 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2A12 proc far ; CODE XREF: sub_2966+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_2A81 + cmp word_FBC8, 0 + jnz short loc_2A52 + mov word_FBA4, 4 + push 240h + push cs + call near ptr sub_2766 + mov word_FBC8, ax + mov ax, 0FFF8h + jb short loc_2A81 + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 1ED8h + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_2A52: ; CODE XREF: sub_2A12+17j + mov ax, bx + shl bx, 1 + cmp ax, word_FBCA + jnb short loc_2A6D + cmp word ptr [bx+1ED8h], 0 + jz short loc_2A71 + push word ptr [bx+1AD8h] + push cs + call near ptr sub_2856 + jmp short loc_2A71 +; --------------------------------------------------------------------------- + +loc_2A6D: ; CODE XREF: sub_2A12+48j + inc ax + mov word_FBCA, ax + +loc_2A71: ; CODE XREF: sub_2A12+4Fj sub_2A12+59j + mov ax, [bp+arg_2] + mov [bx+1ED8h], ax + mov ax, [bp+arg_0] + mov [bx+1AD8h], ax + xor ax, ax + +loc_2A81: ; CODE XREF: sub_2A12+10j sub_2A12+2Cj + pop bx + pop bp + retf 6 +sub_2A12 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2A86 proc far ; CODE XREF: sub_B9CE+12P + ; sub_BC35+115P ... + +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_BB4 + jb short loc_2B08 + mov bx, ax + mov cx, 868h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3D6 + pop cx + pop bx + jb short loc_2B00 + mov al, byte_FBAD + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_2B00 + xor si, si + mov ax, word_FBC4 + or ax, ax + jz short loc_2ACC + 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_2ACC: ; CODE XREF: sub_2A86+37j + test byte_FBAD, 80h + jz short loc_2AE0 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_5B2 + pop cx + pop bx + jb short loc_2B00 + +loc_2AE0: ; CODE XREF: sub_2A86+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_2B00 + push bx + push cs + call near ptr sub_B9E + mov ax, word_FBB6 + sub ax, word_FBB4 + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_2B00: ; CODE XREF: sub_2A86+22j sub_2A86+2Ej ... + push ax + push bx + push cs + call near ptr sub_B9E + pop ax + stc + +loc_2B08: ; CODE XREF: sub_2A86+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_2A86 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2B10 proc far ; CODE XREF: sub_2922+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_FBCA + jnb short loc_2B58 + mov cx, bx + shl bx, 1 + mov ax, [bx+1ED8h] + or ax, ax + jz short loc_2B58 + push word ptr [bx+1AD8h] + push cs + call near ptr sub_2856 + mov [bx+1AD8h], dx + mov [bx+1ED8h], dx + inc cx + cmp cx, word_FBCA + jnz short loc_2B50 + +loc_2B41: ; CODE XREF: sub_2B10+3Dj + dec word_FBCA + jz short loc_2B50 + dec bx + dec bx + mov cx, [bx+1AD8h] + jcxz short loc_2B41 + nop + +loc_2B50: ; CODE XREF: sub_2B10+2Fj sub_2B10+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_2B58: ; CODE XREF: sub_2B10+Cj sub_2B10+18j + stc + mov ax, 0FFE1h + retf 2 +sub_2B10 endp + +; --------------------------------------------------------------------------- + nop + +loc_2B60: ; CODE XREF: seg000:2BBEj seg000:2BC7j ... + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_2B66: ; CODE XREF: sub_BAC9+116P + push bp + mov bp, sp + push si + push di + mov bx, [bp+6] + shl bx, 1 + mov ax, [bx+1AD8h] + mov cs:word_2D1D, ax + mov bx, [bx+1ED8h] + xor ax, ax + xchg al, bh + mov word_11618, ax + mov cx, ax + shl cx, 3 + add cx, [bp+0Ah] + dec cx + imul bx + mov cs:word_2D56, ax + cmp cx, word_F852 + jg short loc_2BBA + mov dx, word_F84E + cmp [bp+0Ah], dx + jl short loc_2BBA + mov di, [bp+8] + cmp word_F854, di + jg short loc_2BBA + mov ax, bx + add ax, di + cmp ax, word_F858 + jge short loc_2BBA + pop di + pop si + pop bp + jmp near ptr sub_2D5A +; --------------------------------------------------------------------------- + +loc_2BBA: ; CODE XREF: seg000:2B96j seg000:2B9Fj ... + cmp cx, word_F84E + jl short loc_2B60 + mov dx, word_F852 + cmp [bp+0Ah], dx + jg short loc_2B60 + mov di, [bp+8] + cmp word_F858, di + jl short loc_2B60 + mov ax, bx + add ax, di + cmp ax, word_F854 + jle short loc_2B60 + cmp cx, dx + jle short loc_2BE2 + mov cx, dx + +loc_2BE2: ; CODE XREF: seg000:2BDEj + mov al, [bp+0Ah] + and al, 7 + mov cs:byte_2C5F, al + xor si, si + mov ax, word_F84E + cmp [bp+0Ah], ax + jge short loc_2C07 + mov dx, ax + shr dx, 3 + add si, dx + mov dx, [bp+0Ah] + sar dx, 3 + sub si, dx + mov [bp+0Ah], ax + +loc_2C07: ; CODE XREF: seg000:2BF3j + sub di, word_F854 + jns short loc_2C18 + add bx, di + mov ax, word_11618 + imul di + sub si, ax + xor di, di + +loc_2C18: ; CODE XREF: seg000:2C0Bj + lea ax, [bx+di-1] + sub ax, word_F856 + jle short loc_2C23 + sub bx, ax + +loc_2C23: ; CODE XREF: seg000:2C1Fj + mov cs:word_2D21, bx + mov ax, [bp+0Ah] + shr ax, 3 + imul bx, di, 50h + add bx, ax + mov cs:word_2D24, bx + mov bx, cx + mov dx, 80FFh + and cl, 7 + sar dh, cl + mov cl, [bp+0Ah] + and cl, 7 + shr dl, cl + mov cx, ax + shr bx, 3 + sub bx, cx + jnz short loc_2C55 + and dl, dh + +loc_2C55: ; CODE XREF: seg000:2C51j + mov cs:word_2D27, bx + mov es, word_F85A +; --------------------------------------------------------------------------- + db 0B1h +byte_2C5F db 12h ; DATA XREF: seg000:2BE7w +; --------------------------------------------------------------------------- + mov al, 0C0h ; 'À' + out 7Ch, al + mov al, 0 + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2D1A + mov al, 0CEh ; 'Î' + out 7Ch, al + mov al, 0FFh + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2D1A + mov ax, 0CDh ; 'Í' + out 7Ch, al + call loc_2D1A + mov ax, 0CBh ; 'Ë' + out 7Ch, al + call loc_2D1A + mov ax, 0C7h ; 'Ç' + out 7Ch, al + call loc_2D1A + mov al, 0 + out 7Ch, al + pop di + pop si + pop bp + retf 6 + +; =============== S U B R O U T I N E ======================================= + + +sub_2CA4 proc near + test si, si + jz short loc_2CAB + +loc_2CA8: ; CODE XREF: sub_2CA4+43j + mov ah, [si-1] + +loc_2CAB: ; CODE XREF: sub_2CA4+2j + mov al, [si] + inc si + mov bx, ax + shr bx, cl + and bl, dl + mov es:[di], bl + inc di + mov ch, 12h + dec ch + js short loc_2CDE + jz short loc_2CD1 + +loc_2CC0: ; CODE XREF: sub_2CA4+2Bj + mov ah, al + mov al, [si] + inc si + mov bx, ax + shr bx, cl + mov es:[di], bl + inc di + dec ch + jnz short loc_2CC0 + +loc_2CD1: ; CODE XREF: sub_2CA4+1Aj + mov ah, al + mov al, [si] + inc si + shr ax, cl + and al, dh + mov es:[di], al + inc di + +loc_2CDE: ; CODE XREF: sub_2CA4+18j + add si, 1234h + add di, 1234h + dec bp + jnz short loc_2CA8 + retn +sub_2CA4 endp + +; --------------------------------------------------------------------------- + +loc_2CEA: ; CODE XREF: seg000:2D17j + mov al, [si] + inc si + and al, dl + mov es:[di], al + inc di + cmp bx, 1 + jl short loc_2D07 + lea cx, [bx-1] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + lodsb + and al, dh + stosb + +loc_2D07: ; CODE XREF: seg000:2CF6j + mov al, 0 + xchg al, ah + add si, ax + sub si, bx + mov ah, al + add di, 4Fh ; 'O' + sub di, bx + dec bp + jnz short loc_2CEA + retn +; --------------------------------------------------------------------------- + +loc_2D1A: ; CODE XREF: seg000:2C6Ep seg000:2C7Fp ... + push si + push ds +; --------------------------------------------------------------------------- + db 0B8h +word_2D1D dw 1234h ; DATA XREF: seg000:2B74w + db 50h, 0BDh +word_2D21 dw 1234h ; DATA XREF: seg000:loc_2C23w + db 0BFh +word_2D24 dw 1234h ; DATA XREF: seg000:2C33w + db 0BBh +word_2D27 dw 1234h ; DATA XREF: seg000:loc_2C55w + db 0A1h, 0D8h, 22h, 48h, 80h, 0F9h, 0, 75h, 8, 8Ah, 0E0h + db 1Fh, 68h, 52h, 2Dh, 0EBh, 0B0h, 2Eh, 88h, 1Eh, 0B9h + db 2Ch, 2Bh, 0C3h, 2Eh, 0A3h, 0E0h, 2Ch, 0B8h, 4Fh, 0 + db 2Bh, 0C3h, 2Eh, 0A3h, 0E4h, 2Ch, 1Fh, 0E8h, 52h, 0FFh + db 1Fh, 5Eh, 81h, 0C6h +word_2D56 dw 1234h ; DATA XREF: seg000:2B8Ew +; --------------------------------------------------------------------------- + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2D5A proc far ; CODE XREF: seg000:2BB7j sub_B49F+20P ... + +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+1ED8h] + 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+858h] + mov cs:word_2F07, ax + test bp, 1 + jnz short loc_2DCA + test dh, 1 + jnz short loc_2DB4 + mov cs:byte_2E67, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2E65, al + mov cs:word_2F0A, 0FF3Eh + jmp short loc_2DFC +; --------------------------------------------------------------------------- + +loc_2DB4: ; CODE XREF: sub_2D5A+42j + mov cs:byte_2E95, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2E93, al + mov cs:word_2F0A, 0FF62h + jmp short loc_2DFC +; --------------------------------------------------------------------------- + +loc_2DCA: ; CODE XREF: sub_2D5A+3Dj + dec bp + test dh, 1 + jnz short loc_2DE8 + dec ch + mov cs:byte_2ECC, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_2ECA, al + mov cs:word_2F0A, 0FF90h + jmp short loc_2DFC +; --------------------------------------------------------------------------- + +loc_2DE8: ; CODE XREF: sub_2D5A+74j + mov cs:byte_2EFD, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_2EFB, al + mov cs:word_2F0A, 0FFC6h + +loc_2DFC: ; CODE XREF: sub_2D5A+58j sub_2D5A+6Ej ... + mov ds, word ptr [bx+1AD8h] + 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_2F04 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2F04 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2F04 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2F04 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2F04 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_2D5A 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_2E65 db 50h ; DATA XREF: sub_2D5A+4Dw + db 0B5h +byte_2E67 db 11h ; DATA XREF: sub_2D5A+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_2E93 db 50h ; DATA XREF: sub_2D5A+63w + db 0B5h +byte_2E95 db 11h ; DATA XREF: sub_2D5A:loc_2DB4w + 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_2ECA db 50h ; DATA XREF: sub_2D5A+81w + db 0B5h +byte_2ECC db 11h ; DATA XREF: sub_2D5A+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_2EFB db 50h ; DATA XREF: sub_2D5A+97w + db 0B5h +byte_2EFD db 11h ; DATA XREF: sub_2D5A:loc_2DE8w + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2F04: ; CODE XREF: sub_2D5A+BBp sub_2D5A+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2F07 dw 1234h ; DATA XREF: sub_2D5A+35w + db 0E9h +word_2F0A dw 0FF3Eh ; DATA XREF: sub_2D5A+51w sub_2D5A+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2F0C proc far ; CODE XREF: sub_2F48+4p sub_2FBE+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_2F17: ; CODE XREF: sub_2F0C+2Fj + mov es, bx + assume es:nothing + inc bx + mov ax, es:1 + or ax, ax + jz short loc_2F2F + mov di, 10h + mov cx, 0Ah + mov si, 88Eh + repe cmpsb + jz short loc_2F40 + +loc_2F2F: ; CODE XREF: sub_2F0C+14j + mov ax, es:3 + add bx, ax + mov al, es:0 + cmp al, 4Dh ; 'M' + jz short loc_2F17 + mov bx, 0 + +loc_2F40: ; CODE XREF: sub_2F0C+21j + mov ax, bx + mov word_F8FA, ax + pop di + pop si + retf +sub_2F0C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2F48 proc far ; CODE XREF: _main+BP + push si + push di + nop + push cs + call near ptr sub_2F0C + or ax, ax + mov ax, 2 + jnz short loc_2FBA + 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_2FB1 + mov bx, cs + cmp bx, ax + jnb short loc_2F8C + 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_2F8C: ; CODE XREF: sub_2F48+2Dj + mov cx, ax + mov word_F8FA, 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, 88Eh + mov cx, 0Ah + rep movsb + xor ax, ax + stosw + stosw + stosw + mov cx, 1 + +loc_2FB1: ; CODE XREF: sub_2F48+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_2FBA: ; CODE XREF: sub_2F48+Cj + pop di + pop si + retf +sub_2F48 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_2FBE proc far ; CODE XREF: _main+120P + mov ax, word_F8FA + or ax, ax + jnz short loc_2FCE + nop + push cs + call near ptr sub_2F0C + or ax, ax + jnz short locret_2FDA + +loc_2FCE: ; CODE XREF: sub_2FBE+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_F8FA, 0 + +locret_2FDA: ; CODE XREF: sub_2FBE+Ej + retf +sub_2FBE endp + +; --------------------------------------------------------------------------- + nop +; --------------------------------------------------------------------------- +dword_2FDC dd 0 ; DATA XREF: sub_2FE2+4r sub_2FE2+71w ... +byte_2FE0 db 0, 90h ; DATA XREF: seg000:30D6r seg000:30EDw + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2FE2 proc far ; CODE XREF: sub_E0F4+70P + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + cld + mov ax, word ptr cs:dword_2FDC + or ax, word ptr cs:dword_2FDC+2 + jz short loc_2FF4 + jmp loc_3075 +; --------------------------------------------------------------------------- + +loc_2FF4: ; CODE XREF: sub_2FE2+Dj + push di + push si + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + push cs + call near ptr sub_A7A + push 10h + push cs + call near ptr sub_2752 + mov di, ax + push ax + push 0 + push 10h + push cs + call near ptr sub_9C6 + mov ax, di + mov es, ax + mov di, es:0 + mov si, es:6 + push ax + push cs + call near ptr sub_2856 + push di + push cs + call near ptr sub_2752 + mov word_116AE, ax + push ax + push 0 + push di + push cs + call near ptr sub_9C6 + push cs + call near ptr sub_95A + mov cx, di + mov ax, word_116AE + mov es, ax + mov ax, si + xor bx, bx + +loc_3043: ; CODE XREF: sub_2FE2+68j + xor es:[bx], al + sub al, es:[bx] + inc bx + loop loc_3043 + 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_2FDC, bx + mov word ptr cs:dword_2FDC+2, es + mov word_116AA, 0 + mov word_116AC, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 30D6h + 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_3075: ; CODE XREF: sub_2FE2+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, 22EAh + 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_2FE2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_309E proc far ; CODE XREF: sub_E0AC+3P + mov ax, word ptr cs:dword_2FDC + or ax, word ptr cs:dword_2FDC+2 + jz short locret_30D5 + push ds + lds dx, cs:dword_2FDC + 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_2FDC, ax + mov word ptr cs:dword_2FDC+2, ax + cmp word_116AA, ax + jz short locret_30D5 + push word_116AA + push cs + call near ptr sub_1EEA + push word_116AE + push cs + call near ptr sub_2856 + +locret_30D5: ; CODE XREF: sub_309E+9j sub_309E+25j + retf +sub_309E endp + +; --------------------------------------------------------------------------- + cmp cs:byte_2FE0, 0 + jz short loc_30E3 + jmp cs:dword_2FDC +; --------------------------------------------------------------------------- + +loc_30E3: ; CODE XREF: seg000:30DCj + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_2FE0 + push word ptr [bp+18h] + popf + mov cs:byte_313A, ah + mov si, 310Ah + +loc_30FE: ; CODE XREF: seg000:3104j + add si, 4 + cmp ah, cs:[si] + jnz short loc_30FE + mov di, word_116AC + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 3Eh, 31h, 3Eh, 0, 73h, 31h, 3Fh, 0, 91h, 31h + db 42h, 0, 0A5h, 31h, 46h, 0, 6, 32h, 40h, 0, 0Ah, 32h + db 45h, 0, 0Ah, 32h, 4Ch, 0, 0E8h, 31h, 57h, 0, 0Ah, 32h + db 5Ch, 0, 0Ah, 32h, 44h, 0, 0F4h, 31h +byte_313A db 0 ; DATA XREF: seg000:30F6w + db 0 + db 0Eh, 32h, 0A8h, 0Fh, 74h, 3, 0E9h, 0C9h, 0, 0Bh, 0FFh + db 78h, 3, 0E9h, 0C2h, 0, 1Eh, 68h, 0EAh, 22h, 0FFh, 76h + db 2, 52h, 0Eh, 0E8h, 0DEh, 1, 0Bh, 0C0h, 75h, 3, 0E9h + db 0AFh, 0, 0A3h, 6Ah, 23h, 8Eh, 0C0h, 26h, 8Eh, 6, 2 dup(0) + db 26h, 0A1h, 2 dup(0), 0A3h, 6Ch, 23h, 0E9h, 0B6h, 0 + db 3Bh, 0DFh, 74h, 3, 0E9h, 94h, 0, 0FFh, 36h, 6Ah, 23h + db 0Eh, 0E8h, 68h, 0EDh, 0C7h, 6, 6Ah, 23h, 2 dup(0), 0C7h + db 6, 6Ch, 23h, 2 dup(0FFh), 0E9h, 98h, 0, 3Bh, 0DFh, 75h + db 79h, 0FFh, 76h, 2, 52h, 51h, 0FFh, 36h, 6Ah, 23h, 0Eh + db 0E8h, 12h, 0EEh, 0E9h, 84h, 0, 3Bh, 0DFh, 75h, 65h + db 0Bh, 0C9h, 7Ch, 73h, 3Ch, 1, 74h, 28h, 7Ch, 1Ah, 8Eh + db 6, 6Ah, 23h, 26h, 8Bh, 2 dup(16h), 0, 26h, 8Bh, 0Eh + db 18h, 0, 26h, 2Bh, 16h, 12h, 0, 26h, 1Bh, 0Eh, 14h, 0 + db 0EBh, 0Ch, 51h, 52h, 0FFh, 36h, 6Ah, 23h, 0Eh, 0E8h + db 0Bh, 0EEh, 5Ah, 59h, 0FFh, 36h, 6Ah, 23h, 51h, 52h + db 0Eh, 0E8h, 3Bh, 0EEh, 89h, 56h, 0Eh, 0EBh, 41h, 2Eh + db 0C5h, 16h, 0DCh, 2Fh, 0B8h, 21h, 25h, 0CDh, 21h, 0EBh + db 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h, 6 + db 4, 32h, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh, 74h + db 16h, 3Bh, 0DFh, 74h, 12h, 2Eh, 0FEh, 0Eh, 0E0h, 2Fh + db 0FFh, 76h, 18h, 9Dh, 7, 1Fh, 61h, 0FAh, 2Eh, 0FFh, 2Eh + db 0DCh, 2Fh, 80h, 4Eh, 18h, 1, 0B8h, 1, 0, 0EBh, 4, 80h + db 66h, 18h, 0FEh, 89h, 46h, 12h, 2Eh, 0FEh, 0Eh, 0E0h + db 2Fh, 7, 1Fh, 61h, 0CFh, 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_323A proc far ; CODE XREF: sub_E0F4+5EP + mov cx, 100h + mov dx, 188h + +loc_3240: ; CODE XREF: sub_323A+Bj + in al, dx + inc al + jnz short loc_324B + loop loc_3240 + xor ax, ax + jmp short loc_325F +; --------------------------------------------------------------------------- + +loc_324B: ; CODE XREF: sub_323A+9j + pushf + cli + mov bh, 7 + call sub_24DA + and al, 3Fh + or al, 80h + mov bl, al + call sub_24C4 + popf + mov ax, 1 + +loc_325F: ; CODE XREF: sub_323A+Fj + mov word_F8BC, ax + retf +sub_323A endp + +; --------------------------------------------------------------------------- + nop + +loc_3264: ; CODE XREF: sub_DC2+19Cp sub_DC2+20Fp + mov ax, word_F85C + mov cs:word_32A6, ax + mov ax, word_10DB4 + mov cs:word_3317, ax + mov ax, word_10DBC + mov cs:word_3325, ax + mov ax, word_10DB0 + mov cs:word_330F, ax + mov ax, word_10DB8 + mov cs:word_3321, ax + mov ax, word_F84E + mov cs:word_32AB, ax + mov cs:word_32D5, ax + mov ax, word_F850 + mov cs:word_32C5, ax + jmp short $+2 + push bp + mov cx, word_10DAE + mov bp, word_10DB6 +; --------------------------------------------------------------------------- + db 81h, 0FEh +word_32A6 dw 1234h ; DATA XREF: seg000:3267w + db 77h, 61h, 0B8h +word_32AB dw 1234h ; DATA XREF: seg000:328Aw + 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_32C5 dw 1234h ; DATA XREF: seg000:3295w + db 2Bh, 0CFh, 1Bh, 0C0h, 23h, 0C8h, 3, 0CFh, 2Bh, 0CBh + db 7Ch, 38h, 81h, 0C3h +word_32D5 dw 1234h ; DATA XREF: seg000:328Ew + db 8Bh, 0FBh, 0C1h, 0EFh, 4, 0D1h, 0E7h, 3, 0FEh, 83h + db 0E3h, 0Fh, 3, 0CBh, 83h, 0E9h, 10h, 0D1h, 0E3h, 8Bh + db 87h, 1Eh, 5, 0F7h, 0D0h, 23h, 6, 98h, 8, 8Bh, 0D9h + db 83h, 0E3h, 0Fh, 0D1h, 0E3h, 0C1h, 0F9h, 4, 78h, 6, 0ABh + db 0A1h, 98h, 8, 0F3h, 0ABh, 23h, 87h, 20h, 5, 0ABh, 81h + db 6, 72h, 1Ah +word_330F dw 1234h ; DATA XREF: seg000:327Cw + db 8Bh, 0Eh, 6Eh, 1Ah, 81h, 0D1h +word_3317 dw 1234h ; DATA XREF: seg000:326Ew + db 89h, 0Eh, 6Eh, 1Ah, 81h, 6, 7Ah, 1Ah +word_3321 dw 1234h ; DATA XREF: seg000:3283w + db 81h, 0D5h +word_3325 dw 1234h ; DATA XREF: seg000:3275w + db 83h, 0C6h, 50h, 4Ah, 78h, 3, 0E9h, 74h, 0FFh, 89h, 2Eh + db 76h, 1Ah, 5Dh, 0C3h, 0C8h, 3 dup(0), 56h, 57h, 0C7h + db 6, 64h, 8, 7, 0, 6Ah, 1Fh, 0Eh, 0E8h, 0Ah, 0F4h, 0Fh + db 82h, 0F6h, 0, 8Bh, 0F0h, 0FFh, 76h, 0Ch, 0FFh, 76h + db 0Ah, 0Eh, 0E8h, 4Ch, 0D3h, 0Bh, 0C0h, 0Fh, 84h, 0DDh + db 0, 8Eh, 0C6h, 26h, 0A3h, 2 dup(0), 0A1h, 6Eh, 23h, 8Eh + db 0E0h, 33h, 0C0h, 8Bh, 0F8h, 64h, 8Ah, 5, 0BBh, 2, 0 + db 0Ah, 0C0h, 74h, 18h, 0BBh, 3, 0, 3, 0DFh, 0FFh, 76h + db 8, 0FFh, 76h, 6, 0Fh, 0A0h, 53h, 0E8h, 0C8h, 0, 75h + db 7, 83h, 0C7h, 20h, 0EBh, 0DEh, 8Bh, 0C3h, 8Eh, 0C6h + db 64h, 8Bh, 45h, 14h, 64h, 8Bh, 55h, 16h, 26h, 0A3h, 0Eh + db 0, 26h, 89h, 16h, 10h, 0, 26h, 0FFh, 36h, 2 dup(0) + db 52h, 50h, 6Ah, 0, 0Eh, 0E8h, 0B9h, 0D3h, 0B8h, 62h + db 1Fh, 64h, 8Ah, 55h, 2, 8Eh, 0C6h, 0Ah, 0D2h, 74h, 8 + db 26h, 88h, 16h, 1Eh, 0, 0B8h, 0A6h, 1Fh, 26h, 0A3h, 4 + db 0, 8Eh, 0C1h, 64h, 8Bh, 5, 8Eh, 0C6h, 3Dh, 88h, 0F3h + db 74h, 0Ah, 3Dh, 2 dup(95h), 74h, 0Fh, 0B8h, 5, 0, 0EBh + db 4Fh, 26h, 0A1h, 4, 0, 26h, 0A3h, 2, 0, 0EBh, 15h, 26h + db 0C7h, 6, 2, 0, 14h, 1Fh, 26h, 0C7h, 6, 1Ah, 3 dup(0) + db 26h, 0C7h, 6, 1Ch, 0, 2 dup(0FFh), 64h, 8Bh, 5Dh, 10h + db 64h, 8Bh, 55h, 12h, 33h, 0C0h, 26h, 89h, 1Eh, 6, 0 + db 26h, 0A3h, 8, 0, 26h, 89h, 2 dup(16h), 0, 26h, 0A3h + db 18h, 0, 26h, 0A3h, 0Ah, 0, 26h, 0A3h, 0Ch, 0, 26h, 0A3h + db 12h, 0, 26h, 0A3h, 14h, 0, 8Bh, 0C6h, 0EBh, 1Ah, 0A3h + db 0C0h, 5, 26h, 0FFh, 36h, 2 dup(0), 0Eh, 0E8h, 23h, 0D1h + db 56h, 0Eh, 0E8h, 16h, 0F4h, 0EBh, 5, 0C6h, 6, 0C0h, 5 + db 3, 33h, 0C0h, 5Fh, 5Eh, 0C9h, 0CAh, 8, 0, 90h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+8] + lds si, [bp+4] + +loc_345C: ; CODE XREF: seg000:347Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_3469 + sub al, 20h ; ' ' + +loc_3469: ; CODE XREF: seg000:3465j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_3474 + sub ah, 20h ; ' ' + +loc_3474: ; CODE XREF: seg000:346Fj + cmp ah, al + jnz short loc_347E + add al, 61h ; 'a' + jnz short loc_345C + jmp short loc_3480 +; --------------------------------------------------------------------------- + +loc_347E: ; CODE XREF: seg000:3476j + xor ax, ax + +loc_3480: ; CODE XREF: seg000:347Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 + +; =============== S U B R O U T I N E ======================================= + + +sub_3488 proc near ; CODE XREF: sub_349A+4p + mov bh, 0Fh + call sub_24C4 + mov dx, 188h + mov al, 0Eh + out dx, al + inc dx + inc dx + in al, dx + not al + retn +sub_3488 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_349A proc far ; CODE XREF: sub_E1E4+F7P + pushf + cli + mov bl, 80h ; '€' + call sub_3488 + and ax, 3Fh + popf + retf +sub_349A endp + +; --------------------------------------------------------------------------- + xchg dx, bx + out dx, al + xchg dx, bx + in al, dx + not al + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_34B0 proc far ; CODE XREF: seg000:3886p seg000:38B6p ... + test word_F8C4, 10h + jnz short loc_34D8 + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov bx, 3E6h + jnz short loc_34CA + mov bx, 4CDh + +loc_34CA: ; CODE XREF: sub_34B0+15j + mov dx, 3FDBh + mov al, bl + out dx, al + mov al, bh + out dx, al + mov al, 7 + out 37h, al + retf +; --------------------------------------------------------------------------- + +loc_34D8: ; CODE XREF: sub_34B0+6j + in al, 61h ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + and al, 0FCh + out 61h, al ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + retf +sub_34B0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_34E0 proc near ; CODE XREF: sub_3508:loc_3584p + ; sub_3508:loc_35D2p ... + les bx, [si] + assume es:nothing + mov al, es:[bx] + sub al, 30h ; '0' + cmp al, 9 + ja short loc_3504 + sub ah, ah + nop + +loc_34EE: ; CODE XREF: sub_34E0+21j + mov dx, cx + shl dx, 3 + add dx, cx + add cx, dx + add cx, ax + inc bx + mov al, es:[bx] + sub al, 30h ; '0' + cmp al, 9 + jbe short loc_34EE + nop + +loc_3504: ; CODE XREF: sub_34E0+9j + mov [si], bx + retn +sub_34E0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_3508 proc far ; CODE XREF: sub_3936+BCp + ; sub_3936+10Fp + mov bx, sp + push si + mov si, ss:[bx+4] + jmp loc_35C1 +; --------------------------------------------------------------------------- + +loc_3512: ; CODE XREF: sub_3508+C1j + xor cx, cx + mov al, es:[bx] + mov [si+8], al + inc word ptr [si] + cbw + cmp ax, 4Fh ; 'O' + jnz short loc_3526 + jmp loc_35EC +; --------------------------------------------------------------------------- + nop + +loc_3526: ; CODE XREF: sub_3508+18j + sub ax, 3Ch ; '<' + test al, 1 + jnz short loc_3558 + cmp ax, 18h + ja short loc_3558 + xchg ax, bx + jmp cs:off_3538[bx] +; --------------------------------------------------------------------------- +off_3538 dw offset loc_3602 ; DATA XREF: sub_3508+2Br + dw offset loc_3610 + dw offset loc_3558 + dw offset loc_3558 + dw offset loc_3558 + dw offset loc_3558 + dw offset loc_3558 + dw offset loc_3558 + dw offset loc_35D2 + dw offset loc_361E + dw offset loc_3558 + dw offset loc_3552 + dw offset loc_35E0 +; --------------------------------------------------------------------------- + +loc_3552: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508+46o + mov byte ptr [si+8], 48h ; 'H' + jmp short loc_3584 +; --------------------------------------------------------------------------- + +loc_3558: ; CODE XREF: sub_3508+23j sub_3508+28j ... + mov al, [si+8] + sub al, 41h ; 'A' + cmp al, 6 + ja short loc_35C1 + nop + les bx, [si] + mov al, es:[bx] + cmp al, 2Bh ; '+' + jz short loc_356F + cmp al, 23h ; '#' + jnz short loc_3575 + +loc_356F: ; CODE XREF: sub_3508+61j + add byte ptr [si+8], 8 + inc word ptr [si] + +loc_3575: ; CODE XREF: sub_3508+65j + les bx, [si] + cmp byte ptr es:[bx], 2Dh ; '-' + jnz short loc_3584 + add byte ptr [si+8], 10h + inc word ptr [si] + nop + +loc_3584: ; CODE XREF: sub_3508+4Ej sub_3508+73j + call sub_34E0 + mov [si+0Ch], cx + or cx, cx + jle short loc_3593 + cmp cx, 20h ; ' ' + jle short loc_3599 + +loc_3593: ; CODE XREF: sub_3508+84j + mov cx, [si+0Eh] + mov [si+0Ch], cx + +loc_3599: ; CODE XREF: sub_3508+89j + mov bx, cx + shl bx, 2 + mov ax, [bx+8D0h] + mov [si+10h], ax + les bx, [si] + cmp byte ptr es:[bx], 2Eh ; '.' + jnz short loc_35BA + mov bx, ax + shl ax, 1 + adc ax, bx + sar ax, 1 + mov [si+10h], ax + inc word ptr [si] + +loc_35BA: ; CODE XREF: sub_3508+A3j + mov ax, 1 + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_35C1: ; CODE XREF: sub_3508+7j sub_3508+57j ... + les bx, [si] + cmp byte ptr es:[bx], 0 + jz short loc_35CC + jmp loc_3512 +; --------------------------------------------------------------------------- + +loc_35CC: ; CODE XREF: sub_3508+BFj + xor ax, ax + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_35D2: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508+40o + call sub_34E0 + cmp cx, 20h ; ' ' + ja short loc_35C1 + mov [si+0Eh], cx + jmp short loc_35C1 +; --------------------------------------------------------------------------- + nop + +loc_35E0: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508+48o + call sub_34E0 + push cx + nop + push cs + call near ptr sub_3B40 + jmp short loc_35C1 +; --------------------------------------------------------------------------- + nop + +loc_35EC: ; CODE XREF: sub_3508+1Aj + les bx, [si] + mov al, es:[bx] + sub al, 31h ; '1' + cmp al, 7 + ja short loc_35C1 + sub ah, ah + inc ax + mov [si+0Ah], ax + inc word ptr [si] + jmp short loc_35C1 +; --------------------------------------------------------------------------- + nop + +loc_3602: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508:off_3538o + dec word ptr [si+0Ah] + cmp word ptr [si+0Ah], 0 + jnz short loc_35C1 + inc word ptr [si+0Ah] + jmp short loc_35C1 +; --------------------------------------------------------------------------- + +loc_3610: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508+32o + inc word ptr [si+0Ah] + cmp word ptr [si+0Ah], 9 + jnz short loc_35C1 + dec word ptr [si+0Ah] + jmp short loc_35C1 +; --------------------------------------------------------------------------- + +loc_361E: ; CODE XREF: sub_3508+2Bj + ; DATA XREF: sub_3508+42o + les bx, [si] + mov word ptr [si+14h], 0 + cmp byte ptr es:[bx], 31h ; '1' + jnz short loc_35C1 + mov word ptr [si+14h], 1 + jmp short loc_35C1 +sub_3508 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3632 proc far ; CODE XREF: sub_DDCA+59P + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + enter 4, 0 + push di + push si + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_BB4 + mov si, ax + cmp si, 0FFFEh + jnz short loc_3658 + mov ax, 0FFFEh + jmp short loc_3652 +; --------------------------------------------------------------------------- + +loc_364F: ; CODE XREF: sub_3632+46j + mov ax, 0FFF8h + +loc_3652: ; CODE XREF: sub_3632+1Bj + pop si + pop di + leave + retf 4 +; --------------------------------------------------------------------------- + +loc_3658: ; CODE XREF: sub_3632+16j + push ax + push 0 + push 0 + push 2 + nop + push cs + call near ptr sub_7FC + mov di, ax + push si + push 0 + push 0 + push 0 + nop + push cs + call near ptr sub_7FC + push di + nop + push cs + call near ptr sub_248E + jb short loc_364F + mov [bp+var_2], ax + push si + push ax + push cx + push di + nop + push cs + call near ptr sub_7E2 + mov es, [bp+var_2] + mov bx, ax + mov byte ptr es:[bx], 0FFh + push si + nop + push cs + call near ptr sub_B9E + cld + mov ax, word_FCF0 + mov [bp+var_4], ax + mov bx, ax + shl bx, 3 + mov word ptr [bx+2680h], 0 + mov ax, [bx+2686h] + mov [bx+2682h], ax + xor di, di + xor si, si + +loc_36B3: ; CODE XREF: sub_3632+122j + mov ds, [bp+var_2] + +loc_36B6: ; CODE XREF: sub_3632+9Cj + lodsb + cmp al, 3Bh ; ';' + jnz short loc_36C4 + +loc_36BB: ; CODE XREF: sub_3632+90j + lodsb + cmp al, 0FFh + jz short loc_36D0 + cmp al, 0Ah + jnz short loc_36BB + +loc_36C4: ; CODE XREF: sub_3632+87j + cmp al, 30h ; '0' + jb short loc_36CC + cmp al, 39h ; '9' + jbe short loc_36D0 + +loc_36CC: ; CODE XREF: sub_3632+94j + cmp al, 0FFh + jnz short loc_36B6 + +loc_36D0: ; CODE XREF: sub_3632+8Cj sub_3632+98j + xor cx, cx + cmp al, 30h ; '0' + jb short loc_36F6 + +loc_36D6: ; CODE XREF: sub_3632+C2j + cmp al, 39h ; '9' + ja short loc_36F6 + cmp al, 0FFh + jz short loc_36F6 + sub al, 30h ; '0' + mov dl, al + mov dh, 0 + mov ax, cx + shl ax, 2 + add ax, cx + add ax, ax + add ax, dx + mov cx, ax + lodsb + cmp al, 30h ; '0' + jnb short loc_36D6 + +loc_36F6: ; CODE XREF: sub_3632+A2j sub_3632+A6j ... + push seg dseg + pop ds + cmp al, 0FFh + jz short loc_3757 + mov bx, word_FCF0 + shl bx, 3 + mov dx, bx + les bx, [bx+2680h] + mov es:[bx], cx + mov bx, dx + add word ptr [bx+2680h], 2 + or cx, cx + jz short loc_3720 + inc di + cmp di, 100h + jnz short loc_3750 + +loc_3720: ; CODE XREF: sub_3632+E5j + mov bx, word_FCF0 + shl bx, 3 + les bx, [bx+2680h] + xor di, di + mov es:[bx], di + inc word_FCF0 + cmp word_FCF0, 10h + jz short loc_3757 + mov bx, word_FCF0 + shl bx, 3 + mov word ptr [bx+2680h], 0 + mov cx, [bx+2686h] + mov [bx+2682h], cx + +loc_3750: ; CODE XREF: sub_3632+ECj + cmp al, 0FFh + jz short loc_3757 + jmp loc_36B3 +; --------------------------------------------------------------------------- + +loc_3757: ; CODE XREF: sub_3632+CAj + ; sub_3632+107j ... + mov ax, word_FCF0 + cmp [bp+var_4], ax + mov ax, 0FFF5h + jz short loc_3764 + xor ax, ax + +loc_3764: ; CODE XREF: sub_3632+12Ej + push [bp+var_2] + nop + push cs + call near ptr sub_2478 + pop si + pop di + leave + retf 4 +sub_3632 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3772 proc far ; CODE XREF: sub_3B6E+150p + test word_F8C4, 10h + jnz short loc_37AC + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + mov ah, 0 + mov word_FC92, ax + cli + push 8 + push seg seg000 + push offset loc_381E + nop + push cs + call near ptr sub_818 + mov word_1197C, dx + mov word_1197A, ax + mov al, 36h ; '6' + out 77h, al + mov ax, word_FC94 + out 71h, al ; CMOS Memory: + ; used by real-time clock + mov al, ah + out 71h, al ; CMOS Memory: + ; used by real-time clock + mov al, byte ptr word_FC92 + and al, 0FEh + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + sti + retf +; --------------------------------------------------------------------------- + +loc_37AC: ; CODE XREF: sub_3772+6j + mov ax, 381Eh + mov bx, 0 + call loc_476 + retf +sub_3772 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_37B6 proc far ; CODE XREF: sub_3D12+14p + cli + test word_F8C4, 10h + jnz short loc_37D5 + push 8 + push word_1197C + push word_1197A + nop + push cs + call near ptr sub_818 + mov al, byte ptr word_FC92 + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + sti + retf +; --------------------------------------------------------------------------- + +loc_37D5: ; CODE XREF: sub_37B6+7j + mov ax, 0 + mov bx, 0 + call loc_476 + retf +sub_37B6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_37E0 proc far ; CODE XREF: sub_3936+F5p + mov bx, sp + mov dx, ss:[bx+4] + mov bx, word_FCAA + dec bx + shl bx, 1 + mov ax, [bx+96Ch] + mov bx, dx + add ax, [bx+4] + mov [bx], ax + mov ax, [bx+6] + mov [bx+2], ax + mov word ptr [bx+0Ah], 4 + mov word ptr [bx+8], 48h ; 'H' + mov ax, 4 + mov [bx+0Eh], ax + mov [bx+0Ch], ax + mov word ptr [bx+10h], 8 + mov word ptr [bx+14h], 0 + retf 2 +sub_37E0 endp + +; --------------------------------------------------------------------------- + +loc_381E: ; DATA XREF: sub_3772+15o + push ax + push ds + mov ax, seg dseg + mov ds, ax + test word_F8C4, 10h + jz short loc_3846 + mov ax, word_FBE0 + add ax, 4 + cmp ax, word_FC94 + mov word_FBE0, ax + jbe short loc_388C + mov ax, word_FC94 + inc ax + sub word_FBE0, ax + jmp short loc_3850 +; --------------------------------------------------------------------------- + +loc_3846: ; CODE XREF: seg000:382Bj + cld + mov ax, word_FC94 + out 71h, al ; CMOS Memory: + ; used by real-time clock + mov al, ah + out 71h, al ; CMOS Memory: + ; used by real-time clock + +loc_3850: ; CODE XREF: seg000:3844j + push dx + push bx + push cx + push es + inc word_FCA2 + cmp word_FCA2, 14h + jnz short loc_3890 + xor ax, ax + mov word_FCA2, ax + cmp word_FC98, 1 + jnz short loc_38BA + push ax + push 3 + push ax + nop + push cs + call near ptr sub_3936 + dec ax + jnz short loc_38BA + cmp word_FCA0, 0 + jnz short loc_38BA + mov word_FC98, 0 + nop + push cs + call near ptr sub_34B0 + jmp short loc_38BA +; --------------------------------------------------------------------------- + nop + +loc_388C: ; CODE XREF: seg000:383Aj seg000:38C4j + pop ds + pop ax + retn +; --------------------------------------------------------------------------- + nop + +loc_3890: ; CODE XREF: seg000:385Dj + test word_FCA2, 3 + jnz short loc_38BA + cmp word_FCEE, 1 + jnz short loc_38BA + nop + push cs + call near ptr sub_3AAE + dec ax + jnz short loc_38BA + mov word_FCEE, 0 + cmp word_FC98, 0 + jnz short loc_38BA + nop + push cs + call near ptr sub_34B0 + nop + +loc_38BA: ; CODE XREF: seg000:3869j seg000:3875j ... + pop es + pop cx + pop bx + pop dx + test word_F8C4, 10h + jnz short loc_388C + mov al, 20h ; ' ' + out 0, al + pop ds + pop ax + iret +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_38CE proc near ; CODE XREF: sub_3936:loc_39DCp + push si + mov si, bx + cmp word ptr [si+3Ah], 1 + jz short loc_3933 + mov bx, [si+8] + shl bx, 1 + mov bx, [bx+820h] + cmp word ptr [si+0Ah], 1 + jnz short loc_38EA + shl bx, 1 + jmp short loc_38F1 +; --------------------------------------------------------------------------- + +loc_38EA: ; CODE XREF: sub_38CE+16j + mov cx, [si+0Ah] + dec cx + dec cx + shr bx, cl + +loc_38F1: ; CODE XREF: sub_38CE+1Aj + test word_F8C4, 10h + jz short loc_390A + in al, 61h ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + or al, 3 + out 61h, al ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + mov ax, bx + mov bx, 254h + mov cx, 42h ; 'B' + jmp short loc_3922 +; --------------------------------------------------------------------------- + nop + +loc_390A: ; CODE XREF: sub_38CE+29j + mov al, 6 + out 37h, al + mov cx, 3FDBh + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + jz short loc_392B + mov ax, bx + mov bx, 3E6h + +loc_3922: ; CODE XREF: sub_38CE+39j + mul bx + mov bx, 4CDh + div bx + mov bx, ax + +loc_392B: ; CODE XREF: sub_38CE+4Dj + mov al, bl + mov dx, cx + out dx, al + mov al, bh + out dx, al + +loc_3933: ; CODE XREF: sub_38CE+7j + pop si + retn +sub_38CE endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3936 proc far ; CODE XREF: seg000:3871p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + enter 4, 0 + push di + push si + mov ax, word_FC9C + imul bx, ax, 16h + cmp word ptr [bx+264Eh], 1 + jnz short loc_395C + cmp word ptr [bx+2652h], 1 + jz short loc_395C + cmp word ptr [bx+264Ah], 20h ; ' ' + jz short loc_395C + mov si, 1 + jmp short loc_395E +; --------------------------------------------------------------------------- + +loc_395C: ; CODE XREF: sub_3936+11j sub_3936+18j ... + xor si, si + +loc_395E: ; CODE XREF: sub_3936+24j + mov cx, [bp+arg_4] + sub ax, cx + jz short loc_396E + dec ax + jz short loc_399E + dec ax + jz short loc_39CA + jmp short loc_39E0 +; --------------------------------------------------------------------------- + nop + +loc_396E: ; CODE XREF: sub_3936+2Dj + imul bx, cx, 16h + cmp byte ptr [bx+2646h], 48h ; 'H' + jz short loc_397C + or si, si + jz short loc_3998 + +loc_397C: ; CODE XREF: sub_3936+40j + cmp byte ptr [bx+265Ch], 48h ; 'H' + jz short loc_398A + cmp word ptr [bx+2664h], 1 + jg short loc_39C4 + +loc_398A: ; CODE XREF: sub_3936+4Bj + cmp byte ptr [bx+2672h], 48h ; 'H' + jz short loc_3998 + cmp word ptr [bx+267Ah], 1 + jg short loc_39D8 + +loc_3998: ; CODE XREF: sub_3936+44j sub_3936+59j + add bx, 263Eh + jmp short loc_39DC +; --------------------------------------------------------------------------- + +loc_399E: ; CODE XREF: sub_3936+30j + imul bx, cx, 16h + cmp byte ptr [bx+265Ch], 48h ; 'H' + jz short loc_39AC + or si, si + jz short loc_39C4 + +loc_39AC: ; CODE XREF: sub_3936+70j + cmp byte ptr [bx+2646h], 48h ; 'H' + jnz short loc_39E0 + cmp byte ptr [bx+2672h], 48h ; 'H' + jz short loc_39E0 + cmp word ptr [bx+267Ah], 1 + jle short loc_39E0 + jmp short loc_39D8 +; --------------------------------------------------------------------------- + nop + +loc_39C4: ; CODE XREF: sub_3936+52j sub_3936+74j + add bx, 2654h + jmp short loc_39DC +; --------------------------------------------------------------------------- + +loc_39CA: ; CODE XREF: sub_3936+33j + imul bx, cx, 16h + cmp byte ptr [bx+2672h], 48h ; 'H' + jz short loc_39E0 + or si, si + jnz short loc_39E0 + +loc_39D8: ; CODE XREF: sub_3936+60j sub_3936+8Bj + add bx, 266Ah + +loc_39DC: ; CODE XREF: sub_3936+66j sub_3936+92j + call sub_38CE + nop + +loc_39E0: ; CODE XREF: sub_3936+35j sub_3936+7Bj ... + imul bx, word_FC9C, 16h + dec word ptr [bx+264Eh] + jnz short loc_3A04 + add bx, 263Eh + push bx + nop + push cs + call near ptr sub_3508 + or ax, ax + jnz short loc_3A04 + mov cl, byte ptr word_FC9C + inc ax + shl ax, cl + or word_FC9E, ax + +loc_3A04: ; CODE XREF: sub_3936+B3j sub_3936+C1j + mov ax, [bp+arg_2] + inc word_FC9C + cmp word_FC9C, ax + jnz short loc_3A5C + mov ax, [bp+arg_0] + mov word_FC9C, ax + cmp word_FC9E, 7 + jnz short loc_3A5C + xor di, di + mov word_FC9E, di + mov si, 263Eh + nop + +loc_3A28: ; CODE XREF: sub_3936+11Aj + push si + nop + push cs + call near ptr sub_37E0 + mov cx, di + mov ax, 1 + shl ax, cl + and ax, word_FCCC + cmp ax, 1 + sbb ax, ax + inc ax + mov [si+12h], ax + push si + nop + push cs + call near ptr sub_3508 + inc di + add si, 16h + cmp si, 2680h + jb short loc_3A28 + mov ax, 1 + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + nop + +loc_3A5C: ; CODE XREF: sub_3936+D9j sub_3936+E6j + xor ax, ax + pop si + pop di + leave + retf 6 +sub_3936 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3A64 proc far ; CODE XREF: sub_E32C+28P + mov bx, sp + push si + mov si, ss:[bx+4] + cmp si, 1 + jl short loc_3A76 + cmp si, word_FCF0 + jle short loc_3A7D + +loc_3A76: ; CODE XREF: sub_3A64+Aj + mov ax, 0FFF3h + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_3A7D: ; CODE XREF: sub_3A64+10j + cmp word_FCF6, 1 + jnz short loc_3AA7 + nop + push cs + call near ptr sub_34B0 + mov word_FCF2, si + mov bx, si + shl bx, 3 + mov ax, 2678h + add bx, ax + mov ax, [bx+6] + mov [bx+2], ax + mov word ptr [bx], 0 + mov word_FCEE, 1 + +loc_3AA7: ; CODE XREF: sub_3A64+1Ej + xor ax, ax + pop si + retf 2 +sub_3A64 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_3AAE proc far ; CODE XREF: seg000:38A1p + mov ax, word_FCF2 + dec ax + shl ax, 3 + mov bx, ax + les bx, [bx+2680h] + assume es:nothing + mov cx, es:[bx] + mov bx, ax + jcxz short loc_3B14 + add word ptr [bx+2680h], 2 + test word_F8C4, 10h + jz short loc_3AE0 + in al, 61h ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + or al, 3 + out 61h, al ; PC/XT PPI port B bits: + ; 0: Tmr 2 gate ÍËÍ OR 03H=spkr ON + ; 1: Tmr 2 data ͼ AND 0fcH=spkr OFF + ; 3: 1=read high switches + ; 4: 0=enable RAM parity checking + ; 5: 0=enable I/O channel check + ; 6: 0=hold keyboard clock low + ; 7: 0=enable kbrd + mov dx, 12h + mov ax, 34DCh + mov bx, 42h ; 'B' + jmp short loc_3AFF +; --------------------------------------------------------------------------- + +loc_3AE0: ; CODE XREF: sub_3AAE+1Fj + mov al, 6 + out 37h, al + mov bx, 3FDBh + xor dx, dx + mov es, dx + assume es:seg000 + test es:byte_501, 80h + mov dx, 1Eh + mov ax, 7800h + jnz short loc_3AFF + mov dx, 25h ; '%' + mov ax, 8000h + +loc_3AFF: ; CODE XREF: sub_3AAE+30j sub_3AAE+49j + cmp cx, dx + ja short loc_3B08 + mov ax, 0FFFFh + jmp short loc_3B0A +; --------------------------------------------------------------------------- + +loc_3B08: ; CODE XREF: sub_3AAE+53j + div cx + +loc_3B0A: ; CODE XREF: sub_3AAE+58j + mov dx, bx + out dx, al + mov al, ah + out dx, al + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +loc_3B14: ; CODE XREF: sub_3AAE+12j + mov ax, [bx+2686h] + mov [bx+2682h], ax + mov word ptr [bx+2680h], 0 + mov ax, 1 + retf +sub_3AAE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B26 proc far ; CODE XREF: sub_3D12+Ap + cmp word_FC98, 1 + jnz short loc_3B3C + mov word_FC98, 0 + nop + push cs + call near ptr sub_34B0 + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +loc_3B3C: ; CODE XREF: sub_3B26+5j + mov ax, 0FFE1h + retf +sub_3B26 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3B40 proc far ; CODE XREF: sub_3508+DEp + ; sub_3B6E+12Dp + mov bx, sp + mov cx, ss:[bx+4] + cmp cx, 1Eh + jl short loc_3B68 + cmp cx, 0F0h ; 'ð' + jg short loc_3B68 + cli + mov word_FC96, cx + mov ax, word_FCFA + mov dx, word_FCFC + div cx + mov word_FC94, ax + sti + xor ax, ax + retf 2 +; --------------------------------------------------------------------------- + +loc_3B68: ; CODE XREF: sub_3B40+9j sub_3B40+Fj + mov ax, 0FFF3h + retf 2 +sub_3B40 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3B6E proc far ; CODE XREF: sub_E0F4+78P + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + nop + push cs + call near ptr sub_1316 + cmp word_FCF8, 0 + jz short loc_3B8A + xor ax, ax + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + +loc_3B8A: ; CODE XREF: sub_3B6E+12j + mov dx, [bp+arg_0] + mov [bp+var_2], dx + or dx, dx + jg short loc_3B99 + mov [bp+var_2], 1000h + +loc_3B99: ; CODE XREF: sub_3B6E+24j + mov ax, [bp+var_2] + mov word_FCA4, ax + mov di, 263Eh + +loc_3BA2: ; CODE XREF: sub_3B6E+5Dj + mov word_FBA4, 8 + push [bp+var_2] + nop + push cs + call near ptr sub_2752 + mov [di+6], ax + mov word ptr [di+4], 0 + jnb short loc_3BC4 + mov ax, 0FFF8h + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + nop + +loc_3BC4: ; CODE XREF: sub_3B6E+4Aj + add di, 16h + cmp di, 2680h + jnz short loc_3BA2 + mov di, 2680h + +loc_3BD0: ; CODE XREF: sub_3B6E+97j + mov word_FBA4, 9 + push 201h + nop + push cs + call near ptr sub_2752 + mov [di+6], ax + mov word ptr [di+4], 0 + jnb short loc_3BFE + push word ptr [di+6] + mov word ptr [di+6], 0 + nop + push cs + call near ptr sub_2856 + mov ax, 0FFF8h + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + +loc_3BFE: ; CODE XREF: sub_3B6E+78j + add di, 8 + cmp di, 2700h + jnz short loc_3BD0 + mov word_FC98, 0 + mov word_FCA8, 0 + mov word_FCAA, 0 + mov word_FC9A, 3 + mov word_FC9C, 0 + mov word_FC9E, 0 + mov word_FCA0, 1 + mov word_FCA2, 0 + mov word_FCA6, 0 + cld + mov cx, 10h + mov di, 98Eh + push ds + pop es + assume es:dseg + mov ax, 78h ; 'x' + rep stosw + mov word_FCEE, 0 + mov word_FCF0, 0 + mov word_FCF2, 0 + mov word_FCF4, 1 + mov word_FCF6, 1 + test word_F8C4, 10h + jz short loc_3C76 + mov ax, 10h + jmp short loc_3C88 +; --------------------------------------------------------------------------- + +loc_3C76: ; CODE XREF: sub_3B6E+101j + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov ax, 7CDh + jnz short loc_3C88 + mov ax, 99Ah + +loc_3C88: ; CODE XREF: sub_3B6E+106j + ; sub_3B6E+115j + and ax, 0FFFEh + mov dx, 78h ; 'x' + mul dx + mov word_FCFC, dx + mov word_FCFA, ax + push 78h ; 'x' + nop + push cs + call near ptr sub_3B40 + mov bx, 2642h + xor dx, dx + xor ax, ax + +loc_3CA5: ; CODE XREF: sub_3B6E+14Cj + les di, [bx] + assume es:nothing + mov cx, word_FCA4 + shr cx, 1 + rep stosw + adc cx, cx + rep stosb + add bx, 16h + inc dx + cmp dx, 3 + jl short loc_3CA5 + nop + push cs + call near ptr sub_3772 + test word_F8C4, 10h + jz short loc_3CDC + mov ax, 254h + mov cx, ax + mov al, 0B6h ; '¶' + out 43h, al ; Timer 8253-5 (AT: 8254.2). + mov al, cl + out 42h, al ; Timer 8253-5 (AT: 8254.2). + mov al, ch + out 42h, al ; Timer 8253-5 (AT: 8254.2). + jmp short loc_3D03 +; --------------------------------------------------------------------------- + +loc_3CDC: ; CODE XREF: sub_3B6E+159j + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov ax, 3E6h + jnz short loc_3CEE + mov ax, 4CDh + +loc_3CEE: ; CODE XREF: sub_3B6E+17Bj + mov cx, ax + mov al, 3 + shl al, 1 + or al, 70h + mov dx, 3FDFh + out dx, al + mov al, cl + mov dx, 3FDBh + out dx, al + mov al, ch + out dx, al + +loc_3D03: ; CODE XREF: sub_3B6E+16Cj + mov word_FCF8, 1 + xor ax, ax + pop di + pop si + leave + retf 2 +sub_3B6E endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_3D12 proc far ; CODE XREF: sub_E0AC+41P + push si + cmp word_FCF8, 0 + jz short loc_3D2F + nop + push cs + call near ptr sub_3B26 + nop + push cs + call near ptr sub_3D70 + nop + push cs + call near ptr sub_37B6 + mov word_FCF8, 0 + +loc_3D2F: ; CODE XREF: sub_3D12+6j + mov si, 263Eh + +loc_3D32: ; CODE XREF: sub_3D12+3Aj + mov ax, [si+6] + cmp ax, 0 + jz short loc_3D45 + push ax + nop + push cs + call near ptr sub_2856 + mov word ptr [si+6], 0 + +loc_3D45: ; CODE XREF: sub_3D12+26j + add si, 16h + cmp si, 2680h + jnz short loc_3D32 + mov si, 2680h + +loc_3D51: ; CODE XREF: sub_3D12+59j + mov ax, [si+6] + cmp ax, 0 + jz short loc_3D64 + push ax + nop + push cs + call near ptr sub_2856 + mov word ptr [si+6], 0 + +loc_3D64: ; CODE XREF: sub_3D12+45j + add si, 8 + cmp si, 2700h + jnz short loc_3D51 + pop si + retf +sub_3D12 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_3D70 proc far ; CODE XREF: sub_3D12+Fp + cmp word_FCEE, 1 + jnz short loc_3D86 + mov word_FCEE, 0 + nop + push cs + call near ptr sub_34B0 + xor ax, ax + retf +; --------------------------------------------------------------------------- + nop + +loc_3D86: ; CODE XREF: sub_3D70+5j + mov ax, 0FFE1h + retf +sub_3D70 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3D8A proc far ; CODE XREF: sub_C8F5+22P sub_C8F5+3BP ... + +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_F8B0 + 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_3DD2: ; CODE XREF: sub_3D8A+98j + lodsb + or al, al + jz short loc_3E24 + mov ah, 0 + add 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_3DF4: ; CODE XREF: sub_3D8A+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_3DF4 + sub di, 500h + xor ch, ch + add cx, bp + jmp short loc_3DD2 +; --------------------------------------------------------------------------- + +loc_3E24: ; CODE XREF: sub_3D8A+4Bj + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ch +sub_3D8A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3E34 proc far ; CODE XREF: sub_C8A5+1FP sub_C8A5+39P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push di + mov cx, [bp+arg_6] + mov di, [bp+arg_4] + mov dx, [bp+arg_0] + mov bp, [bp+arg_2] + add bp, 5680h + and bp, 0FF7Fh + pushf + mov al, 0C0h ; 'À' + cli + out 7Ch, al + popf + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + shr dx, 1 + sbb al, al + out 7Eh, al + mov al, 0Bh + out 68h, al + mov ax, di + shl ax, 2 + add di, ax + shl di, 4 + mov ax, cx + and cx, 7 + shr ax, 3 + add di, ax + mov es, word_F8B0 + mov ax, bp + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + mov dx, 10h + xor ch, ch + +loc_3E94: ; CODE XREF: sub_3E34+84j + mov al, ch + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov ah, al + mov al, ch + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + mov bh, al + mov bl, 0 + shr ax, cl + shr bx, cl + xchg al, ah + stosw + mov es:[di], bl + add di, 4Eh ; 'N' + inc ch + dec dx + jnz short loc_3E94 + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop di + pop bp + retf 8 +sub_3E34 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_3EC8 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 14CEh + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_3EC8 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_53A0 + pop cx + nop + push cs + call near ptr sub_3EC8 +_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_1082E, 20h ; ' ' + jnz short loc_3F45 + mov ax, 1 + jmp short loc_3F61 +; --------------------------------------------------------------------------- + +loc_3F45: ; CODE XREF: _atexit+Aj + mov bx, word_1082E + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+3F88h], dx + mov [bx+3F86h], ax + inc word_1082E + xor ax, ax + +loc_3F61: ; 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:46B4p ... + +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_4CBB + 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_8FEF+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_A4F2+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_3FE3 + mov [bp+var_6], 0 + jmp short loc_3FCE +; --------------------------------------------------------------------------- + +loc_3FB5: ; 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_3FCE: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3FE3 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3FB5 + +loc_3FE3: ; 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_4001 + 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_4001: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_400B + jmp loc_40F2 +; --------------------------------------------------------------------------- + +loc_400B: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_4DEE + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_4025 + jmp loc_40F2 +; --------------------------------------------------------------------------- + +loc_4025: ; 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_409B + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_409B + jmp short loc_4084 +; --------------------------------------------------------------------------- + +loc_4058: ; 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_4084: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_40A5 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_4058 + jmp short loc_40A5 +; --------------------------------------------------------------------------- + +loc_409B: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_40A5: ; 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_40E7 + 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_40E7: ; 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_40F6 +; --------------------------------------------------------------------------- + +loc_40F2: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_40F6: ; 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_58C5+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_3EC8+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_10868 + 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_4158 proc far ; CODE XREF: sub_415D+29P sub_415D+43P ... + push si + push di + pop di + pop si + retf +sub_4158 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_415D 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_418A + jmp short loc_417A +; --------------------------------------------------------------------------- + +loc_416A: ; CODE XREF: sub_415D+22j + dec word_1082E + mov bx, word_1082E + mov cl, 2 + shl bx, cl + call dword ptr [bx+3F86h] + +loc_417A: ; CODE XREF: sub_415D+Bj + cmp word_1082E, 0 + jnz short loc_416A + nop + push cs + call __cleanup + call off_10830 + +loc_418A: ; CODE XREF: sub_415D+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_41B1 + cmp [bp+arg_4], 0 + jnz short loc_41A8 + call off_10834 + call off_10838 + +loc_41A8: ; CODE XREF: sub_415D+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_41B1: ; CODE XREF: sub_415D+3Bj + pop di + pop si + pop bp + retn 6 +sub_415D 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_415D + 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_3EC8+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_415D + 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_415D + 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_415D + 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_A873+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:5338p + +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:527Dp seg000:537Ap ... + +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_4263 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_8E3C+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_4263 +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_4263 +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_4263: ; CODE XREF: seg000:424Bj 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_4282 + or dx, dx + jz short loc_42E7 + or bx, bx + jz short loc_42E7 + +loc_4282: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_42A4 + or dx, dx + jns short loc_4296 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_4296: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_42A4 + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_42A4: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_42AE: ; CODE XREF: N_LUDIV@:loc_42C5j + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_42C5 + ja short loc_42C0 + cmp si, bx + jb short loc_42C5 + +loc_42C0: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_42C5: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_42AE + pop bx + test bx, 2 + jz short loc_42D4 + mov ax, si + mov dx, di + shr bx, 1 + +loc_42D4: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_42E1 + neg dx + neg ax + sbb dx, 0 + +loc_42E1: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_42E7: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_42F0 + xchg ax, dx + +loc_42F0: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_42E1 +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_430C + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_430C: ; 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 near ; CODE XREF: __sbrk+38p + pop es + push cs + push es + +F_PADD@: + or cx, cx + jge short loc_4328 + not bx + not cx +N_PADD@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4320 proc far ; CODE XREF: sub_71F0+7Bp sub_71F0+9Ap ... + add bx, 1 + adc cx, 0 + jmp short loc_4357 +; --------------------------------------------------------------------------- + +loc_4328: ; CODE XREF: N_PADD@+5j sub_4320+35j + add ax, bx + jnb short loc_4330 + add dx, 1000h + +loc_4330: ; CODE XREF: sub_4320+Aj + 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_4357 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_4328 +; --------------------------------------------------------------------------- + +loc_4357: ; CODE XREF: sub_4320+6j sub_4320+29j + sub ax, bx + jnb short loc_435F + sub dx, 1000h + +loc_435F: ; CODE XREF: sub_4320+39j + 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 +sub_4320 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_4398 + cmp dx, 58h ; 'X' + jle short loc_4389 + +loc_4386: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_4389: ; CODE XREF: __IOERROR+Fj + mov word_109F6, dx + mov bx, dx + mov al, [bx+16B8h] + cbw + mov dx, ax + jmp short loc_43A6 +; --------------------------------------------------------------------------- + +loc_4398: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_10CD8 + jg short loc_4386 + mov word_109F6, 0FFFFh + +loc_43A6: ; CODE XREF: __IOERROR+21j + mov word_F3BE, 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:4769p seg000:47A2p + +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+168Eh], 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_4400 + jmp short loc_4405 +; --------------------------------------------------------------------------- + +loc_4400: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_4405: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_4634 + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 9, 44h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 4417h + 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, 450Fh + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 1712h + 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_10A56 + 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, 4634h + 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_10A5A + mov ax, word_10A58 + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_10A5A, dx + mov word_10A58, 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_44DB + mov ax, [bp+arg_0] + jmp short loc_44DE +; --------------------------------------------------------------------------- + +loc_44DB: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_44DE: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_44E7 +; --------------------------------------------------------------------------- + +loc_44E3: ; CODE XREF: operator new(uint)+43j + call dword ptr word_10A58 + +loc_44E7: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_4DEE + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_4503 + mov ax, word_10A58 + or ax, seg_10A5A + jnz short loc_44E3 + +loc_4503: ; 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 + +; =============== S U B R O U T I N E ======================================= + + +sub_4548 proc far ; CODE XREF: sub_71F0+7Bp sub_71F0+9Ap ... + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +sub_4548 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + dd byte_4634 + dw 0 + dd unk_10A52 + dd byte_45FA + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 52h, 45h + +; =============== 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:1A42o + +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, 456Ah + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 171Ch + 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, 1712h + 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_45D3: ; DATA XREF: dseg:1A60o + 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, 1712h + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_45FA db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:455Co + db 0Dh dup(0), 1, 0, 1, 0, 8, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_4634 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:4409o seg000:4552o + db 0Dh dup(0), 2, 0, 2, 0, 76h, 46h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0C3h, 46h + 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_46BD + 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_46BB + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_46BF +; --------------------------------------------------------------------------- + +loc_46BB: ; CODE XREF: seg000:46AAj + jmp short loc_46BF +; --------------------------------------------------------------------------- + +loc_46BD: ; CODE XREF: seg000:4681j + xor ax, ax + +loc_46BF: ; CODE XREF: seg000:46B9j + ; seg000:loc_46BBj + 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, 52h, 67h + 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_8E3C+51p sub_8E3C+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_4704 + mul bx + +loc_4704: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_470B + xchg ax, cx + mul si + add ax, cx + +loc_470B: ; CODE XREF: N_LXMUL@:loc_4704j + 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_4732 + cmp ax, bx + +locret_4732: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_475C +; --------------------------------------------------------------------------- + +loc_473A: ; CODE XREF: seg000:4760j + mov bx, cx + add bx, bx + mov word ptr [bx+168Eh], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+1500h], 0FFh + add ax, 14FCh + mov bx, dx + mov [bx+150Eh], ax + inc cx + +loc_475C: ; CODE XREF: seg000:4738j + cmp cx, word_109CC + jb short loc_473A + mov al, byte_10840 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_4777 + and word_1083E, 0FDFFh + +loc_4777: ; CODE XREF: seg000:476Fj + mov ax, 200h + push ax + test byte ptr word_1083E+1, 2 + jz short loc_4787 + mov ax, 1 + jmp short loc_4789 +; --------------------------------------------------------------------------- + +loc_4787: ; CODE XREF: seg000:4780j + xor ax, ax + +loc_4789: ; CODE XREF: seg000:4785j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 14FCh + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_10854 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_47B0 + and word_10852, 0FDFFh + +loc_47B0: ; CODE XREF: seg000:47A8j + mov ax, 200h + push ax + test byte ptr word_10852+1, 2 + jz short loc_47C0 + mov ax, 2 + jmp short loc_47C2 +; --------------------------------------------------------------------------- + +loc_47C0: ; CODE XREF: seg000:47B9j + xor ax, ax + +loc_47C2: ; CODE XREF: seg000:47BEj + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 1510h + 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_58C5+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_47E9 + mov ax, 0FFFFh + jmp short loc_4803 +; --------------------------------------------------------------------------- + +loc_47E9: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_47FF + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_4803 +; --------------------------------------------------------------------------- + +loc_47FF: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_4803: ; 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:4468p seg000:4538p ... + 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:4435p + ; 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:4982p ... + +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:1838o + 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_48D6 + 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_48D6: ; 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), 70h, 49h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0E2h, 48h + 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_74C7+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, 48FAh + 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_4954 + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_4954: ; 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_4978 +; --------------------------------------------------------------------------- + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_4978: ; 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:183Co + 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_49CA + 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_49CA: ; 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_4A06 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_4A06: ; 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_4A39 + xor ax, ax + jmp short loc_4A73 +; --------------------------------------------------------------------------- + +loc_4A39: ; 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_4A73: ; 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_4A8D + xor ax, ax + jmp short loc_4ACB +; --------------------------------------------------------------------------- + +loc_4A8D: ; 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_4ACB: ; 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, 182Eh + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_10B82, ax + mov word_10B80, 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_10C96, 0 + jz short locret_4B7A + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4B43 proc near ; CODE XREF: sub_6EA2+77p sub_6EA2+A1p ... + mov word_10C96, 2 + jz short locret_4B7A + 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_10C96, 3 + mov esp, edx + jz short locret_4B7A + mov word_10C96, 4 + +locret_4B7A: ; CODE XREF: seg000:4B36j sub_4B43+6j ... + retn +sub_4B43 endp + +; --------------------------------------------------------------------------- +word_4B7B dw 0 ; DATA XREF: sub_4B87r sub_4B87+1Dr ... +word_4B7D dw 0 ; DATA XREF: sub_4B87+14w sub_4B87+27w ... +word_4B7F dw 0 ; DATA XREF: sub_4B87+4Cw sub_4C5B+19w ... +word_4B81 dw 0 ; DATA XREF: sub_4B87+32r + ; sub_4B87:loc_4BDAr ... +word_4B83 dw 0 ; DATA XREF: sub_4E75+1r sub_4F55+1Aw +word_4B85 dw 0 ; DATA XREF: sub_4E75+7r sub_4F55+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_4B87 proc near ; CODE XREF: sub_4CBB+18p + cmp dx, cs:word_4B7B + jz short loc_4BC5 + mov ds, dx + mov ds, word_F342 + cmp word_F342, 0 + jz short loc_4BA2 + mov cs:word_4B7D, ds + jmp short loc_4BDA +; --------------------------------------------------------------------------- + +loc_4BA2: ; CODE XREF: sub_4B87+12j + mov ax, ds + cmp ax, cs:word_4B7B + jz short loc_4BC0 + mov ax, off_F348 + mov cs:word_4B7D, ax + push ds + xor ax, ax + push ax + call sub_4C5B + mov ds, cs:word_4B81 + jmp short loc_4BE3 +; --------------------------------------------------------------------------- + +loc_4BC0: ; CODE XREF: sub_4B87+22j + mov dx, cs:word_4B7B + +loc_4BC5: ; CODE XREF: sub_4B87+5j + mov cs:word_4B7B, 0 + mov cs:word_4B7D, 0 + mov cs:word_4B7F, 0 + +loc_4BDA: ; CODE XREF: sub_4B87+19j + mov ds, cs:word_4B81 + push dx + xor ax, ax + push ax + +loc_4BE3: ; CODE XREF: sub_4B87+37j + call __brk + add sp, 4 + retn +sub_4B87 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4BEA proc near ; CODE XREF: sub_4CBB:loc_4CD8p + mov ds, dx + push ds + mov es, word_F342 + mov word_F342, 0 + mov off_F348, es + cmp dx, cs:word_4B7B + jz short loc_4C30 + cmp word ptr es:2, 0 + jnz short loc_4C30 + mov ax, word_F340 + 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_4C29 + mov es:8, cx + jmp short loc_4C33 +; --------------------------------------------------------------------------- + +loc_4C29: ; CODE XREF: sub_4BEA+36j + mov es:2, cx + jmp short loc_4C33 +; --------------------------------------------------------------------------- + +loc_4C30: ; CODE XREF: sub_4BEA+16j sub_4BEA+1Ej + call sub_4C84 + +loc_4C33: ; CODE XREF: sub_4BEA+3Dj sub_4BEA+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_F342, 0 + jz short loc_4C45 + retn +; --------------------------------------------------------------------------- + +loc_4C45: ; CODE XREF: sub_4BEA+58j + mov ax, word_F340 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_F340 + mov es, bx + mov es:2, ax +sub_4BEA endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_4C5B proc near ; CODE XREF: sub_4B87+2Fp sub_4DF8+66p + mov bx, ds + cmp bx, word_F346 + jz short loc_4C7C + mov es, word_F346 + mov ds, word_F344 + mov word_F346, es + mov word ptr es:4, ds + mov cs:word_4B7F, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_4C7C: ; CODE XREF: sub_4C5B+6j + mov cs:word_4B7F, 0 + retn +sub_4C5B endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4C84 proc near ; CODE XREF: sub_4BEA:loc_4C30p + mov ax, cs:word_4B7F + or ax, ax + jz short loc_4CAD + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov word_F344, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov word_F346, es + retn +; --------------------------------------------------------------------------- + +loc_4CAD: ; CODE XREF: sub_4C84+6j + mov cs:word_4B7F, ds + mov word_F344, ds + mov word_F346, ds + retn +sub_4C84 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4CBB proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_4E75+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_4B81, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_4CDB + cmp dx, cs:word_4B7D + jnz short loc_4CD8 + call sub_4B87 + jmp short loc_4CDB +; --------------------------------------------------------------------------- + +loc_4CD8: ; CODE XREF: sub_4CBB+16j + call sub_4BEA + +loc_4CDB: ; CODE XREF: sub_4CBB+Fj sub_4CBB+1Bj + mov ds, cs:word_4B81 + pop di + pop si + pop bp + retf +sub_4CBB endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4CE4 proc near ; CODE XREF: sub_4DF8:loc_4E4Dp + push ax + mov ds, cs:word_4B81 + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_4D0D + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_4B81 + push ax + push dx + call __sbrk + add sp, 4 + +loc_4D0D: ; CODE XREF: sub_4CE4+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_4B81 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_4D44 + mov cs:word_4B7B, dx + mov cs:word_4B7D, dx + mov ds, dx + mov word_F340, bx + mov word_F342, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4D44: ; CODE XREF: sub_4CE4+46j + xor ax, ax + cwd + retn +sub_4CE4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4D48 proc near ; CODE XREF: sub_4DF8:loc_4E48p + push ax + mov ds, cs:word_4B81 + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_4D70 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_4B81 + push ax + push dx + call __sbrk + add sp, 4 + +loc_4D70: ; CODE XREF: sub_4D48+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_4B81 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_4DC7 + and ax, 0Fh + jnz short loc_4DAC + +loc_4D94: ; CODE XREF: sub_4D48+7Dj + mov cx, cs:word_4B7D + mov cs:word_4B7D, dx + mov ds, dx + mov word_F340, bx + mov word_F342, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4DAC: ; CODE XREF: sub_4D48+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_4DC7 + inc dx + jmp short loc_4D94 +; --------------------------------------------------------------------------- + +loc_4DC7: ; CODE XREF: sub_4D48+45j sub_4D48+7Aj + xor ax, ax + cwd + retn +sub_4D48 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4DCB proc near ; CODE XREF: sub_4DF8:loc_4E52p + mov bx, dx + sub word_F340, ax + add dx, word_F340 + mov ds, dx + mov word_F340, ax + mov word_F342, bx + mov bx, dx + add bx, word_F340 + mov ds, bx + mov word_F342, dx + mov ax, 4 + retn +sub_4DCB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4DEE 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_4E01 +sub_4DEE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4DF8 proc far ; CODE XREF: sub_4E75+Ep sub_4F55+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_4E01: ; CODE XREF: sub_4DEE+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_4B81, ds + jz short loc_4E6C + add ax, 13h + adc dx, 0 + jb short loc_4E57 + test dx, 0FFF0h + jnz short loc_4E57 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_4B7B + or dx, dx + jz short loc_4E4D + mov dx, cs:word_4B7F + or dx, dx + jz short loc_4E48 + mov bx, dx + +loc_4E38: ; CODE XREF: sub_4DF8+4Ej + mov ds, dx + cmp word_F340, ax + jnb short loc_4E5C + mov dx, word_F346 + cmp dx, bx + jnz short loc_4E38 + +loc_4E48: ; CODE XREF: sub_4DF8+3Cj + call sub_4D48 + jmp short loc_4E6C +; --------------------------------------------------------------------------- + +loc_4E4D: ; CODE XREF: sub_4DF8+33j + call sub_4CE4 + jmp short loc_4E6C +; --------------------------------------------------------------------------- + +loc_4E52: ; CODE XREF: sub_4DF8:loc_4E5Cj + call sub_4DCB + jmp short loc_4E6C +; --------------------------------------------------------------------------- + +loc_4E57: ; CODE XREF: sub_4DF8+1Cj sub_4DF8+22j + xor ax, ax + cwd + jmp short loc_4E6C +; --------------------------------------------------------------------------- + +loc_4E5C: ; CODE XREF: sub_4DF8+46j + ja short loc_4E52 + call sub_4C5B + mov bx, off_F348 + mov word_F342, bx + mov ax, offset word_F344 + +loc_4E6C: ; CODE XREF: sub_4DF8+14j sub_4DF8+53j ... + mov ds, cs:word_4B81 + pop di + pop si + pop bp + retf +sub_4DF8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4E75 proc near ; CODE XREF: sub_4F55:loc_4FB1p + push bx + mov si, cs:word_4B83 + push si + mov si, cs:word_4B85 + push si + push cs + call near ptr sub_4DF8 + add sp, 4 + or dx, dx + jnz short loc_4E8F + pop bx + retn +; --------------------------------------------------------------------------- + +loc_4E8F: ; CODE XREF: sub_4E75+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_F340 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_4EE0 + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_4EB3: ; CODE XREF: sub_4E75+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_4EC2 + mov cx, 1000h + +loc_4EC2: ; CODE XREF: sub_4E75+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_4EE0 + 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_4EB3 +; --------------------------------------------------------------------------- + +loc_4EE0: ; CODE XREF: sub_4E75+32j sub_4E75+59j + mov ds, cs:word_4B81 + assume ds:dseg + push cs + call near ptr sub_4CBB + add sp, 4 + pop dx + mov ax, 4 + retn +sub_4E75 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4EF1 proc near ; CODE XREF: sub_4F55:loc_4FACp + cmp bx, cs:word_4B7D + jz short loc_4F3D + 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_4F29 + mov es:2, di + jmp short loc_4F2E +; --------------------------------------------------------------------------- + +loc_4F29: ; CODE XREF: sub_4EF1+2Fj + mov es:8, di + +loc_4F2E: ; CODE XREF: sub_4EF1+36j + mov si, bx + push cs + call near ptr sub_4CBB + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4F3D: ; CODE XREF: sub_4EF1+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_4EF1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4F55 proc far ; CODE XREF: sub_58C5+2DDp + ; seg003:0751P ... + +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + xor dx, dx + jmp short loc_4F62 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_4F62: ; CODE XREF: sub_4F55+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_4B81, ds + mov cs:word_4B83, dx + mov cs:word_4B85, ax + or bx, bx + jz short loc_4FB6 + mov cx, ax + or cx, dx + jz short loc_4FC1 + add ax, 13h + adc dx, 0 + jb short loc_4FCA + test dx, 0FFF0h + jnz short loc_4FCA + 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_4FB1 + ja short loc_4FAC + mov dx, bx + mov ax, 4 + jmp short loc_4FCD +; --------------------------------------------------------------------------- + +loc_4FAC: ; CODE XREF: sub_4F55+4Ej + call sub_4EF1 + jmp short loc_4FCD +; --------------------------------------------------------------------------- + +loc_4FB1: ; CODE XREF: sub_4F55+4Cj + call sub_4E75 + jmp short loc_4FCD +; --------------------------------------------------------------------------- + +loc_4FB6: ; CODE XREF: sub_4F55+25j + push dx + push ax + push cs + call near ptr sub_4DF8 + add sp, 4 + jmp short loc_4FCD +; --------------------------------------------------------------------------- + +loc_4FC1: ; CODE XREF: sub_4F55+2Bj + push bx + push ax + push cs + call near ptr sub_4CBB + add sp, 4 + +loc_4FCA: ; CODE XREF: sub_4F55+33j sub_4F55+39j + xor ax, ax + cwd + +loc_4FCD: ; CODE XREF: sub_4F55+55j sub_4F55+5Aj ... + mov ds, cs:word_4B81 + pop di + pop si + pop bp + retf +sub_4F55 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_4FD6 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_10C98 + jz short loc_503A + mov cl, 6 + shl [bp+newsize], cl + mov dx, word_F3CE + mov ax, [bp+newsize] + add ax, segx + cmp ax, dx + jbe short loc_501B + mov ax, dx + sub ax, segx + mov [bp+newsize], ax + +loc_501B: ; CODE XREF: sub_4FD6+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_504C + mov ax, [bp+newsize] + mov cl, 6 + shr ax, cl + mov word_10C98, ax + +loc_503A: ; CODE XREF: sub_4FD6+26j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word_F3CA, dx + mov word_F3C8, ax + mov ax, 1 + jmp short loc_505C +; --------------------------------------------------------------------------- + +loc_504C: ; CODE XREF: sub_4FD6+58j + mov ax, segx + add ax, dx + mov word_F3CE, ax + mov word_F3CC, 0 + xor ax, ax + +loc_505C: ; CODE XREF: sub_4FD6+74j + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_4FD6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_4B87:loc_4BE3p + ; sub_4EF1+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_F3C6 + mov bx, word_F3C4 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_509C + mov cx, word_F3CE + mov bx, word_F3CC + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_509C + push [bp+arg_2] + push [bp+arg_0] + call sub_4FD6 + or ax, ax + jnz short loc_50A1 + +loc_509C: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_50A3 +; --------------------------------------------------------------------------- + +loc_50A1: ; CODE XREF: __brk+36j + xor ax, ax + +loc_50A3: ; 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_4CE4+Ap sub_4CE4+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_F3CA + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_F3C8 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_50D2 + jg short loc_5122 + cmp ax, 0FFFFh + ja short loc_5122 + +loc_50D2: ; CODE XREF: __sbrk+22j + mov dx, word_F3CA + mov ax, word_F3C8 + mov cx, [bp+arg_2] + mov bx, [bp+arg_0] + call N_PADD@ + mov [bp+var_2], dx + mov [bp+var_4], ax + mov cx, word_F3C6 + mov bx, word_F3C4 + call N_PCMP@ + jb short loc_5122 + mov cx, word_F3CE + mov bx, word_F3CC + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_5122 + mov dx, word_F3CA + mov ax, word_F3C8 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_4FD6 + or ax, ax + jnz short loc_512A + +loc_5122: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_5130 +; --------------------------------------------------------------------------- + +loc_512A: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_5130: ; 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_10CA6 + mov ax, word_10CA4 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_515F + cmp ax, 1 + jz short loc_519C + +loc_515F: ; CODE XREF: seg000:5158j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_5173 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_517D + cmp word ptr [bp-4], 0FFFFh + jnz short loc_517D + +loc_5173: ; CODE XREF: seg000:5165j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_517D: ; CODE XREF: seg000:516Bj seg000:5171j + mov word_10CA6, 0 + mov word_10CA4, 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_519C: ; CODE XREF: seg000:515Dj + mov sp, bp + pop bp + pop di + pop si + pop ds + pop es + pop dx + pop cx + pop bx + pop ax + iret +; --------------------------------------------------------------------------- + push ax + push bx + push cx + push dx + push es + push ds + push si + push di + push bp + mov bp, seg dseg + mov ds, bp + mov bp, sp + sub sp, 4 + mov dx, word_10CA6 + mov ax, word_10CA4 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_51D1 + cmp ax, 1 + jz short loc_520E + +loc_51D1: ; CODE XREF: seg000:51CAj + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_51E5 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_51EF + cmp word ptr [bp-4], 0FFFFh + jnz short loc_51EF + +loc_51E5: ; CODE XREF: seg000:51D7j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_51EF: ; CODE XREF: seg000:51DDj seg000:51E3j + mov word_10CA6, 0 + mov word_10CA4, 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_520E: ; CODE XREF: seg000:51CFj + 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_10C9E + mov ax, word_10C9C + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_5245 + cmp ax, 1 + jz short loc_528A + +loc_5245: ; CODE XREF: seg000:523Ej + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_5259 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_5263 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_5263 + +loc_5259: ; CODE XREF: seg000:524Bj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_5263: ; CODE XREF: seg000:5251j seg000:5257j + mov word_10C9E, 0 + mov word_10C9C, 0 + push word_13350 + push word_1334E + 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_528A: ; CODE XREF: seg000:5243j + 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_5299 proc far ; CODE XREF: seg000:52E2p sub_53A0+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_52A0: ; CODE XREF: sub_5299+1Cj + mov bx, dx + mov al, [bx+1974h] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_52B1 + mov ax, dx + jmp short loc_52BA +; --------------------------------------------------------------------------- + +loc_52B1: ; CODE XREF: sub_5299+12j + inc dx + cmp dx, 6 + jl short loc_52A0 + mov ax, 0FFFFh + +loc_52BA: ; CODE XREF: sub_5299+16j + pop di + pop si + pop bp + retf +sub_5299 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_10C9B, 0 + jnz short loc_52DE + mov word_13348, seg seg000 + mov word ptr dword_13344+2, 52BEh + mov byte_10C9B, 1 + +loc_52DE: ; CODE XREF: seg000:52CBj + push word ptr [bp+6] + push cs + call near ptr sub_5299 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_52FD + mov word_F3BE, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_539A +; --------------------------------------------------------------------------- + +loc_52FD: ; CODE XREF: seg000:52ECj + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+195Eh] + mov ax, [bx+195Ch] + 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+195Eh], dx + mov [bx+195Ch], ax + cmp word ptr [bp+6], 2 + jnz short loc_5367 + cmp byte_10C9A, 0 + jnz short loc_5348 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_13350, dx + mov word_1334E, ax + mov byte_10C9A, 1 + +loc_5348: ; CODE XREF: seg000:5330j + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_535A + push word_13350 + push word_1334E + jmp short loc_5362 +; --------------------------------------------------------------------------- + +loc_535A: ; CODE XREF: seg000:534Ej + mov ax, seg seg000 + push ax + mov ax, 521Ah + push ax + +loc_5362: ; CODE XREF: seg000:5358j + mov ax, 23h ; '#' + jmp short loc_538B +; --------------------------------------------------------------------------- + +loc_5367: ; CODE XREF: seg000:5329j + cmp word ptr [bp+6], 8 + jnz short loc_5394 + mov ax, seg seg000 + push ax + mov ax, 5136h + 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, 51A8h + push ax + mov ax, 4 + +loc_538B: ; CODE XREF: seg000:5365j + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_5394: ; CODE XREF: seg000:536Bj + mov dx, [bp-4] + mov ax, [bp-6] + +loc_539A: ; CODE XREF: seg000:52FAj + 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_53A0 proc far ; CODE XREF: _abort+8p + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 6 + push si + push di + push [bp+arg_0] + push cs + call near ptr sub_5299 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_53BD + mov ax, 1 + jmp short loc_5431 +; --------------------------------------------------------------------------- + +loc_53BD: ; CODE XREF: sub_53A0+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+195Eh] + mov ax, [bx+195Ch] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_53DB + cmp ax, 1 + jz short loc_542F + +loc_53DB: ; CODE XREF: sub_53A0+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_540A + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_53F5 + cmp ax, 16h + jnz short loc_53FE + nop + push cs + call near ptr sub_3EC8 +; --------------------------------------------------------------------------- + +loc_53F5: ; CODE XREF: sub_53A0+49j + xor ax, ax + int 23h ; DOS - CONTROL "C" EXIT ADDRESS + ; Return: return via RETF 2 with CF set + ; DOS will abort program with errorlevel 0 + ; else + ; interrupted DOS call continues + mov ax, 4C03h + int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT) + ; AL = exit code +; --------------------------------------------------------------------------- + +loc_53FE: ; CODE XREF: sub_53A0+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_542F +; --------------------------------------------------------------------------- + +loc_540A: ; CODE XREF: sub_53A0+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+195Eh], 0 + mov word ptr [bx+195Ch], 0 + mov bx, [bp+var_2] + mov al, [bx+197Ah] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_542F: ; CODE XREF: sub_53A0+39j sub_53A0+68j + xor ax, ax + +loc_5431: ; CODE XREF: sub_53A0+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_53A0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _access(char *pathname, char) +__access proc far ; CODE XREF: sub_5E0D+A8p sub_A469+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_5456 + jmp short loc_546E +; --------------------------------------------------------------------------- + +loc_5456: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_5461 + test dl, 1 + jnz short loc_5465 + +loc_5461: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_546E +; --------------------------------------------------------------------------- + +loc_5465: ; CODE XREF: __access+28j + mov word_F3BE, 5 + mov ax, 0FFFFh + +loc_546E: ; 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, 80h, 19h, 0Bh, 6, 82h, 19h, 75h, 27h, 0BEh + db 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h, 8Ch + db 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h, 5, 83h + db 0FEh, 0FFh, 75h, 6, 0BEh, 84h, 19h, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_10CC0, si + mov word ptr dword_10CC0+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_54BB proc far ; CODE XREF: sub_54E0+35p + ; sub_58C5+284p ... + +arg_0 = byte ptr 6 + + push bp + mov bp, sp + push si + push di + mov al, [bp+arg_0] + xor cx, cx + les bx, dword_10CC0 + +loc_54C9: ; CODE XREF: sub_54BB+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_54DB + cmp al, dl + jb short loc_54DB + inc bx + inc bx + cmp al, dh + ja short loc_54C9 + inc cx + +loc_54DB: ; CODE XREF: sub_54BB+13j sub_54BB+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_54BB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_54E0 proc far ; CODE XREF: sub_588B+23p + ; sub_58C5+1AEp ... + +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 4 + push si + push di + xor cx, cx + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_54F6: ; CODE XREF: sub_54E0+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5503 + xor cx, cx + jmp short loc_5531 +; --------------------------------------------------------------------------- + +loc_5503: ; CODE XREF: sub_54E0+1Dj + cmp cx, 1 + jnz short loc_550D + mov cx, 2 + jmp short loc_5524 +; --------------------------------------------------------------------------- + +loc_550D: ; CODE XREF: sub_54E0+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_54BB + pop cx + or ax, ax + jz short loc_5522 + mov cx, 1 + jmp short loc_5524 +; --------------------------------------------------------------------------- + +loc_5522: ; CODE XREF: sub_54E0+3Bj + xor cx, cx + +loc_5524: ; CODE XREF: sub_54E0+2Bj sub_54E0+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_5531 + inc word ptr [bp+var_4] + jmp short loc_54F6 +; --------------------------------------------------------------------------- + +loc_5531: ; CODE XREF: sub_54E0+21j sub_54E0+4Aj + or cx, cx + jnz short loc_553A + mov ax, 1 + jmp short loc_553C +; --------------------------------------------------------------------------- + +loc_553A: ; CODE XREF: sub_54E0+53j + xor ax, ax + +loc_553C: ; CODE XREF: sub_54E0+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_54E0 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_555B + xchg ax, cx + jmp short loc_555F +; --------------------------------------------------------------------------- + +loc_555B: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_555F: ; 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_557B + nop + push cs + call near ptr _flushall + jmp loc_562C +; --------------------------------------------------------------------------- + +loc_557B: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_558A + jmp loc_5627 +; --------------------------------------------------------------------------- + +loc_558A: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_55E1 + test byte ptr es:[bx+2], 8 + jnz short loc_55B2 + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_55AC + jmp loc_562C +; --------------------------------------------------------------------------- + +loc_55AC: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_562C + +loc_55B2: ; 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_562C + cmp es:[bx+0Ch], ax + jnz short loc_562C + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_562C +; --------------------------------------------------------------------------- + +loc_55E1: ; 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_562C + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_562C + or word ptr es:[bx+2], 10h + +loc_5627: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_562E +; --------------------------------------------------------------------------- + +loc_562C: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_562E: ; 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_109CC + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 14FCh + jmp short loc_566D +; --------------------------------------------------------------------------- + +loc_5651: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_5669 + 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_5669: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_566D: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_5651 + 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_5680 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_569D + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_56AA +; --------------------------------------------------------------------------- + +loc_569D: ; CODE XREF: sub_5680+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_56AA: ; CODE XREF: sub_5680+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_56FE + 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_56F7 + jmp short loc_56DF +; --------------------------------------------------------------------------- + +loc_56D0: ; CODE XREF: sub_5680+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_56DF + inc [bp+var_2] + +loc_56DF: ; CODE XREF: sub_5680+4Ej sub_5680+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_56D0 + jmp short loc_56FE +; --------------------------------------------------------------------------- + +loc_56E8: ; CODE XREF: sub_5680+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_56F7 + inc [bp+var_2] + +loc_56F7: ; CODE XREF: sub_5680+4Cj sub_5680+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_56E8 + +loc_56FE: ; CODE XREF: sub_5680+35j sub_5680+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_5680 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_5724 + mov ax, 0FFFFh + jmp short loc_5787 +; --------------------------------------------------------------------------- + +loc_5724: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_5741 + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_5741 + push word ptr [bp+stream+2] + push bx + call sub_5680 + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_5741: ; 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_5785 + cmp ax, 0FFFFh + jnz short loc_5785 + mov ax, 0FFFFh + jmp short loc_5787 +; --------------------------------------------------------------------------- + +loc_5785: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_5787: ; 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_57BF + cmp ax, 0FFFFh + jnz short loc_57BF + jmp loc_5860 +; --------------------------------------------------------------------------- + +loc_57BF: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_57CB + jmp loc_5850 +; --------------------------------------------------------------------------- + +loc_57CB: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+168Fh], 8 + jz short loc_583E + 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_5806 + cmp ax, 0FFFFh + jnz short loc_5806 + jmp short loc_5866 +; --------------------------------------------------------------------------- + +loc_5806: ; 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_5832 + cmp ax, 0FFFFh + jnz short loc_5832 + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_5866 +; --------------------------------------------------------------------------- + +loc_5832: ; 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_583E: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_5680 + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_5860 +; --------------------------------------------------------------------------- + +loc_5850: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_5680 + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_5860: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_5866: ; 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_586C proc near ; CODE XREF: sub_588B+Ep sub_58C5+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_587E + cmp ax, 2Fh ; '/' + jnz short loc_5883 + +loc_587E: ; CODE XREF: sub_586C+Bj + mov ax, 1 + jmp short loc_5885 +; --------------------------------------------------------------------------- + +loc_5883: ; CODE XREF: sub_586C+10j + xor ax, ax + +loc_5885: ; CODE XREF: sub_586C+15j + pop di + pop si + pop bp + retn 2 +sub_586C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_588B proc near ; CODE XREF: sub_58C5+CDp + ; sub_58C5+15Bp ... + +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + les bx, [bp+arg_0] + mov al, es:[bx] + mov ah, 0 + push ax + call sub_586C + or ax, ax + jz short loc_58BD + 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_54E0 + add sp, 8 + or ax, ax + jz short loc_58BD + mov ax, 1 + jmp short loc_58BF +; --------------------------------------------------------------------------- + +loc_58BD: ; CODE XREF: sub_588B+13j sub_588B+2Bj + xor ax, ax + +loc_58BF: ; CODE XREF: sub_588B+30j + pop di + pop si + pop bp + retn 8 +sub_588B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_58C5 proc far ; CODE XREF: sub_5E0D+10Dp + +drive = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +src = dword ptr -0Ch +dest = dword ptr -8 +s = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 12h + push si + push di + mov ax, 0A1h ; '¡' + push ax + nop + push cs + call near ptr sub_4DEE + pop cx + mov word ptr [bp+s+2], dx + mov word ptr [bp+s], ax + or ax, dx + jnz short loc_58E4 + jmp loc_5B27 +; --------------------------------------------------------------------------- + +loc_58E4: ; CODE XREF: sub_58C5+1Aj + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + les bx, [bp+src] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+172Dh], 0Ch + jz short loc_5924 + mov bx, word ptr [bp+src] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_5924 + mov al, es:[bx] + cbw + mov [bp+var_10], ax + push ax ; ch + nop + push cs + call near ptr _toupper + pop cx + add ax, 0FFC0h + mov [bp+drive], ax + add word ptr [bp+src], 2 + jmp short loc_593A +; --------------------------------------------------------------------------- + +loc_5924: ; CODE XREF: sub_58C5+39j sub_58C5+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_593A: ; CODE XREF: sub_58C5+5Dj + les bx, [bp+src] + mov al, es:[bx] + cbw + push ax + call sub_586C + or ax, ax + jnz short loc_59A2 + 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_5972 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + jmp loc_5B27 +; --------------------------------------------------------------------------- + +loc_5972: ; CODE XREF: sub_58C5+9Bj + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov dx, word ptr [bp+s+2] + add ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + push dx + push word ptr [bp+s] + dec ax + push dx + push ax + call sub_588B + or ax, ax + jnz short loc_59C4 + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_59C1 +; --------------------------------------------------------------------------- + +loc_59A2: ; CODE XREF: sub_58C5+82j + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + les bx, [bp+dest] + mov al, byte ptr [bp+var_10] + mov es:[bx], al + inc word ptr [bp+dest] + les bx, [bp+dest] + mov byte ptr es:[bx], 3Ah ; ':' + +loc_59C1: ; CODE XREF: sub_58C5+DBj + inc word ptr [bp+dest] + +loc_59C4: ; CODE XREF: sub_58C5+D2j + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, word ptr [bp+s+2] + mov ax, word ptr [bp+s] + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + +loc_59EA: ; CODE XREF: sub_58C5+28Cj + ; sub_58C5+298j ... + les bx, [bp+src] + inc word ptr [bp+src] + mov al, es:[bx] + cbw + mov [bp+var_E], ax + or ax, ax + jz short loc_5A06 + push ax + call sub_586C + or ax, ax + jnz short loc_5A06 + jmp loc_5B38 +; --------------------------------------------------------------------------- + +loc_5A06: ; CODE XREF: sub_58C5+134j + ; sub_58C5+13Cj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_5A2D + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFEh + push word ptr [bp+dest+2] + push ax + call sub_588B + or ax, ax + jz short loc_5A2D + sub word ptr [bp+dest], 2 + jmp short loc_5AA4 +; --------------------------------------------------------------------------- + +loc_5A2D: ; CODE XREF: sub_58C5+149j + ; sub_58C5+160j + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_5AA4 + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_5AA4 + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + add ax, 0FFFDh + push word ptr [bp+dest+2] + push ax + call sub_588B + or ax, ax + jz short loc_5AA4 + sub word ptr [bp+dest], 3 + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_5A8D + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_54E0 + add sp, 8 + or ax, ax + jz short loc_5A8D + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + jmp loc_5B27 +; --------------------------------------------------------------------------- + +loc_5A8D: ; CODE XREF: sub_58C5+19Cj + ; sub_58C5+1B6j ... + push word ptr [bp+s+2] + push word ptr [bp+s] + dec word ptr [bp+dest] + mov ax, word ptr [bp+dest] + push word ptr [bp+dest+2] + push ax + call sub_588B + or ax, ax + jz short loc_5A8D + +loc_5AA4: ; CODE XREF: sub_58C5+166j + ; sub_58C5+170j ... + cmp [bp+var_E], 0 + jz short loc_5AAD + jmp loc_5B2D +; --------------------------------------------------------------------------- + +loc_5AAD: ; CODE XREF: sub_58C5+1E3j + push word ptr [bp+s+2] + push word ptr [bp+s] + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + call sub_588B + or ax, ax + jz short loc_5AC5 + dec word ptr [bp+dest] + +loc_5AC5: ; CODE XREF: sub_58C5+1FBj + les bx, [bp+dest] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_5AF3 + mov ax, word ptr [bp+dest] + dec ax + push word ptr [bp+dest+2] + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_54E0 + add sp, 8 + or ax, ax + jz short loc_5AF3 + les bx, [bp+dest] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp+dest] + +loc_5AF3: ; CODE XREF: sub_58C5+208j + ; sub_58C5+222j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + push word ptr [bp+s+2] + push word ptr [bp+s] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov dx, ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_5B15 + jmp loc_5B99 +; --------------------------------------------------------------------------- + +loc_5B15: ; CODE XREF: sub_58C5+24Bj + cmp dx, [bp+arg_8] + jbe short loc_5B72 + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + +loc_5B27: ; CODE XREF: sub_58C5+1Cj sub_58C5+AAj ... + xor dx, dx + xor ax, ax + jmp short loc_5BA8 +; --------------------------------------------------------------------------- + +loc_5B2D: ; CODE XREF: sub_58C5+1E5j + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + jmp short loc_5B6C +; --------------------------------------------------------------------------- + +loc_5B38: ; CODE XREF: sub_58C5+13Ej + les bx, [bp+dest] + mov al, byte ptr [bp+var_E] + mov es:[bx], al + inc word ptr [bp+dest] + push [bp+var_E] + nop + push cs + call near ptr sub_54BB + pop cx + or ax, ax + jnz short loc_5B54 + jmp loc_59EA +; --------------------------------------------------------------------------- + +loc_5B54: ; CODE XREF: sub_58C5+28Aj + les bx, [bp+src] + cmp byte ptr es:[bx], 0 + jnz short loc_5B60 + jmp loc_59EA +; --------------------------------------------------------------------------- + +loc_5B60: ; CODE XREF: sub_58C5+296j + mov al, es:[bx] + les bx, [bp+dest] + mov es:[bx], al + inc word ptr [bp+src] + +loc_5B6C: ; CODE XREF: sub_58C5+271j + inc word ptr [bp+dest] + jmp loc_59EA +; --------------------------------------------------------------------------- + +loc_5B72: ; CODE XREF: sub_58C5+253j + push word ptr [bp+s+2] + push word ptr [bp+s] ; src + push [bp+arg_2] + push [bp+arg_0] ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4CBB + add sp, 0Ch + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_5BA8 +; --------------------------------------------------------------------------- + +loc_5B99: ; CODE XREF: sub_58C5+24Dj + push dx + push word ptr [bp+s+2] + push word ptr [bp+s] + nop + push cs + call near ptr sub_4F55 + add sp, 6 + +loc_5BA8: ; CODE XREF: sub_58C5+266j + ; sub_58C5+2D2j + pop di + pop si + mov sp, bp + pop bp + retf +sub_58C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; char *__cdecl _getdcwd(int drive, char *buf, int len) +__getdcwd proc far ; CODE XREF: sub_58C5+93p sub_5E0D+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_5BCA + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_5BCA: ; 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_5C26 + 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_5C05 + mov word_F3BE, 22h ; '"' + jmp short loc_5C26 +; --------------------------------------------------------------------------- + +loc_5C05: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_5C2C + push [bp+len] + nop + push cs + call near ptr sub_4DEE + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_5C2C + mov word_F3BE, 8 + +loc_5C26: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_5C45 +; --------------------------------------------------------------------------- + +loc_5C2C: ; 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_5C45: ; 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_A4F2+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_5C7C + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_5C7C + les di, dword_10CEC + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_5C89 + +loc_5C7C: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_5CB5 +; --------------------------------------------------------------------------- + +loc_5C82: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_5C89: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_5C7C + mov al, es:[di] + or al, al + jz short loc_5C7C + cmp ah, al + jnz short loc_5C82 + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_5C82 + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_5C82 + inc di + mov ax, di + mov dx, es + +loc_5CB5: ; 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_5CDC + 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_5CDC: ; 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_74C7+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_5CFB + movsb + +loc_5CFB: ; 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_5D22 + jcxz short loc_5D29 + stosb + dec cx + +loc_5D22: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_5D29 + stosb + +loc_5D29: ; 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_8173+CFp seg003:09D5P + +dest = dword ptr 6 +value = byte ptr 0Ah +_length= word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push word ptr [bp+value] ; value + push [bp+_length] ; length + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + push cs + call near ptr _setmem + add sp, 8 + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_memset endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl movmem(const void *src, void *dest, unsigned int length) +_movmem proc far ; CODE XREF: _memmove+15p + +src = dword ptr 6 +dest = dword ptr 0Ah +_length= word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push ds + mov cx, word ptr [bp+dest+2] + mov bx, word ptr [bp+dest] + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + call N_PCMP@ + jnb short loc_5D6C + std + mov ax, 1 + jmp short loc_5D6F +; --------------------------------------------------------------------------- + +loc_5D6C: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_5D6F: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_5D82 + add si, cx + dec si + add di, cx + dec di + +loc_5D82: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_5D8C + jcxz short loc_5D9B + movsb + dec cx + +loc_5D8C: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_5D9B + add si, ax + add di, ax + movsb + +loc_5D9B: ; 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:0991P seg003:09BAP + +dest = dword ptr 6 +src = dword ptr 0Ah +_length = word ptr 0Eh + + push bp + mov bp, sp + push si + push di + push [bp+_length] ; length + push word ptr [bp+dest+2] + push word ptr [bp+dest] ; dest + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push cs + call near ptr _movmem + add sp, 0Ah + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_memmove endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; void __cdecl _searchenv(const char *file, const char *varname, char *pathname) +__searchenv proc far ; CODE XREF: sub_A469+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_5DED + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 1990h + +loc_5DED: ; 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_5E0D + 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_5E0D(char *src, __int32, char *pathname) +sub_5E0D 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_5E32 + xor dx, dx + jmp short loc_5E41 +; --------------------------------------------------------------------------- + +loc_5E32: ; CODE XREF: sub_5E0D+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_5E41: ; CODE XREF: sub_5E0D+23j sub_5E0D+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_5E96 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_5E67 + cmp bl, 2Fh ; '/' + jz short loc_5E67 + cmp bl, 3Ah ; ':' + jnz short loc_5E83 + +loc_5E67: ; CODE XREF: sub_5E0D+4Ej sub_5E0D+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_54E0 + add sp, 8 + or ax, ax + jnz short loc_5E96 + +loc_5E83: ; CODE XREF: sub_5E0D+58j + push ds + mov ax, 1992h + 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_5E96: ; CODE XREF: sub_5E0D+3Fj sub_5E0D+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_5F0A + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5ED1 + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_5F49 +; --------------------------------------------------------------------------- + +loc_5ED1: ; CODE XREF: sub_5E0D+B9j + xor dx, dx + jmp short loc_5EE9 +; --------------------------------------------------------------------------- + +loc_5ED5: ; CODE XREF: sub_5E0D+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_5EE9: ; CODE XREF: sub_5E0D+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_5EF8 + cmp byte ptr es:[bx], 0 + jnz short loc_5ED5 + +loc_5EF8: ; CODE XREF: sub_5E0D+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5F04 + jmp loc_5E41 +; --------------------------------------------------------------------------- + +loc_5F04: ; CODE XREF: sub_5E0D+F2j + inc word ptr [bp+arg_4] + jmp loc_5E41 +; --------------------------------------------------------------------------- + +loc_5F0A: ; CODE XREF: sub_5E0D+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_58C5 + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_5F49 + 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_4CBB + add sp, 0Ch + +loc_5F49: ; CODE XREF: sub_5E0D+C2j + ; sub_5E0D+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5E0D 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:4795p seg000:47CEp + +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_5F63 + jmp loc_603A +; --------------------------------------------------------------------------- + +loc_5F63: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_5F6C + jmp loc_603A +; --------------------------------------------------------------------------- + +loc_5F6C: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_5F76 + jmp loc_603A +; --------------------------------------------------------------------------- + +loc_5F76: ; CODE XREF: _setvbuf+22j + cmp word_10CD6, 0 + jnz short loc_5F8C + cmp word ptr [bp+stream], 1510h + jnz short loc_5F8C + mov word_10CD6, 1 + jmp short loc_5FA0 +; --------------------------------------------------------------------------- + +loc_5F8C: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_10CD4, 0 + jnz short loc_5FA0 + cmp word ptr [bp+stream], 14FCh + jnz short loc_5FA0 + mov word_10CD4, 1 + +loc_5FA0: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_5FBD + 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_5FBD: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_5FD6 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + +loc_5FD6: ; 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_606A + cmp [bp+_size], 0 + jbe short loc_606A + mov word ptr off_10830+2, seg seg000 + mov word ptr off_10830, 6378h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_603F + push [bp+_size] + nop + push cs + call near ptr sub_4DEE + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_603A + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_603F +; --------------------------------------------------------------------------- + +loc_603A: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_606C +; --------------------------------------------------------------------------- + +loc_603F: ; 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_606A + or word ptr es:[bx+2], 8 + +loc_606A: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_606C: ; 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_5E0D+83p sub_5E0D+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_60A0 + movsb + dec cx + +loc_60A0: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_60A7 + movsb + +loc_60A7: ; 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_58C5+10Dp + ; sub_58C5+2BBp ... + +dest = dword ptr 6 +src = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + cld + les di, [bp+src] + mov si, di + xor al, al + mov cx, 0FFFFh + repne scasb + not cx + push ds + mov ax, es + mov ds, ax + les di, [bp+dest] + rep movsb + pop ds + mov dx, word ptr [bp+dest+2] + mov ax, word ptr [bp+dest] + pop di + pop si + pop bp + retf +_strcpy endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl stricmp(const char *s1, const char *s2) +_stricmp proc far ; CODE XREF: sub_A4F2+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_611D: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_6141 + scasb + jz short loc_611D + cmp al, ch + jb short loc_6132 + cmp al, cl + ja short loc_6132 + sub al, 20h ; ' ' + +loc_6132: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_613D + cmp bl, cl + ja short loc_613D + sub bl, 20h ; ' ' + +loc_613D: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_611D + +loc_6141: ; 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_615C + cmp ax, di + jz short loc_6166 + +loc_615C: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_6166: ; 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_616A(char *s, char) +sub_616A proc far ; CODE XREF: sub_A4F2+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_61A9 +; --------------------------------------------------------------------------- + +loc_6192: ; CODE XREF: sub_616A+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_61A8 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_61B1 +; --------------------------------------------------------------------------- + +loc_61A8: ; CODE XREF: sub_616A+34j + dec cx + +loc_61A9: ; CODE XREF: sub_616A+26j + or cx, cx + jnz short loc_6192 + xor dx, dx + xor ax, ax + +loc_61B1: ; CODE XREF: sub_616A+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_616A 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_109CC + jb short loc_61D3 + mov ax, 6 + push ax + call __IOERROR + jmp loc_6317 +; --------------------------------------------------------------------------- + +loc_61D3: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_61E1 + xor ax, ax + jmp loc_6317 +; --------------------------------------------------------------------------- + +loc_61E1: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+168Fh], 8 + jz short loc_6200 + 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_6200: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+168Fh], 40h + jnz short loc_6223 + 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_6317 +; --------------------------------------------------------------------------- + +loc_6223: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+168Eh], 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_62BD +; --------------------------------------------------------------------------- + +loc_6242: ; 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_625F + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_625F: ; 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_62C7 + jnz short loc_6285 + cmp dx, 80h ; '€' + jb short loc_62C7 + +loc_6285: ; 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_62BD + cmp dx, 0FFFFh + jnz short loc_62B5 + mov ax, 0FFFFh + jmp short loc_6312 +; --------------------------------------------------------------------------- + +loc_62B5: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_630D +; --------------------------------------------------------------------------- + +loc_62BD: ; 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_62C7: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_62D0 + jmp loc_6242 +; --------------------------------------------------------------------------- + +loc_62D0: ; 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_6314 + 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_6314 + cmp dx, 0FFFFh + jnz short loc_630A + mov ax, 0FFFFh + jmp short loc_6312 +; --------------------------------------------------------------------------- + +loc_630A: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_630D: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_6312: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_6317 +; --------------------------------------------------------------------------- + +loc_6314: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_6317: ; 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+168Eh], 1 + jz short loc_6334 + mov ax, 5 + push ax + jmp short loc_6355 +; --------------------------------------------------------------------------- + +loc_6334: ; 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_6354 + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+168Eh], 1000h + pop ax + jmp short loc_6358 +; --------------------------------------------------------------------------- + +loc_6354: ; CODE XREF: __rtl_write+26j + push ax + +loc_6355: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_6358: ; 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], 14FCh + jmp short loc_63AB +; --------------------------------------------------------------------------- + +loc_638F: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_63A4 + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_63A4: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_63AB: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_638F + 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_63D8 + 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_63F6 + +loc_63D8: ; 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_63F6: ; 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_64F1 + db 4 dup(0), 0F1h, 64h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 12h, 64h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 1Ah, 64h + +; =============== 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_EED1+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, 6428h + 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, 64AEh + 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, 64F1h + 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_64F1 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:6412o + db 0Dh dup(0), 2, 0, 2, 0, 33h, 65h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 80h, 65h + 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_657A + 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_6578 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_657C +; --------------------------------------------------------------------------- + +loc_6578: ; CODE XREF: seg000:6567j + jmp short loc_657C +; --------------------------------------------------------------------------- + +loc_657A: ; CODE XREF: seg000:653Ej + xor ax, ax + +loc_657C: ; CODE XREF: seg000:6576j + ; seg000:loc_6578j + 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, 52h, 67h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 26h, 69h + 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), 0B8h, 65h + +; =============== 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, 65C6h + 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_660B + 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_665D + +loc_660B: ; 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_664D + 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_664D: ; 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_665D: ; 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_6926 + 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), 83h, 66h + +; =============== 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:445Ap seg000:4522p ... + +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, 6691h + 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_66D6 + 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_672C + +loc_66D6: ; 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_671C + 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_671C: ; 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_672C: ; 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:45F1p seg000:46A0p ... + +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_67AC + 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_67AC + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_67AC: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- +off_67B0 dd byte_68EE ; DATA XREF: seg000:67B8o + dd 0 + dd off_67B0 + 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, 67B8h + 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, 66A7h + 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, 68EEh + 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_6926 + 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), 11h, 68h + +; =============== 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, 681Fh + 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_6858 + cmp ax, word ptr [bp+arg_4] + jz short loc_68D6 + +loc_6858: ; 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_68C6 + 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_68C6: ; 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_68D6: ; 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_68EE db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:off_67B0o + db 0Dh dup(0), 1, 0, 1, 0, 52h, 67h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_6926 db 4, 0, 10h, 20h, 0Ah, 0, 39h, 69h ; DATA XREF: seg000:6683o + ; seg000:6811o + dw seg seg000 +aString db 'string *',0 + db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + db 0Dh dup(0), 1, 0, 1, 0, 8, 3 + dw seg 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_697F 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_6993 + mov dx, ds + mov ax, 199Ah + jmp short loc_69A0 +; --------------------------------------------------------------------------- + +loc_6993: ; CODE XREF: sub_697F+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_69A0: ; CODE XREF: sub_697F+12j + pop di + pop si + pop bp + retf +sub_697F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_69A4 proc far ; CODE XREF: sub_6A41+69p + ; sub_6A41+106p ... + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + cmp dx, word ptr [bp+arg_4+2] + jnz short loc_69BC + cmp ax, word ptr [bp+arg_4] + jz short loc_6A38 + +loc_69BC: ; CODE XREF: sub_69A4+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_6A30 + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_6A30 + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + or ax, es:[bx+2] + test al, 80h + jnz short loc_6A30 + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+4] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_6A12: ; CODE XREF: sub_69A4+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_6A34 + +loc_6A30: ; CODE XREF: sub_69A4+26j sub_69A4+34j ... + xor ax, ax + jmp short loc_6A3B +; --------------------------------------------------------------------------- + +loc_6A34: ; CODE XREF: sub_69A4+8Aj + or dx, dx + jnz short loc_6A12 + +loc_6A38: ; CODE XREF: sub_69A4+16j + mov ax, 1 + +loc_6A3B: ; CODE XREF: sub_69A4+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_69A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6A41 proc near ; CODE XREF: sub_6A41+9Bp + ; sub_6A41+135p ... + +var_A = dword ptr -0Ah +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + les bx, [bp+arg_0] + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + add ax, es:[bx+0Ch] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_6A5C: ; CODE XREF: sub_6A41+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_6AF0 + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_6AE9 + cmp [bp+arg_C], 0 + jz short loc_6A98 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_6A98 + mov ax, 1 + jmp short loc_6A9A +; --------------------------------------------------------------------------- + +loc_6A98: ; CODE XREF: sub_6A41+41j sub_6A41+50j + xor ax, ax + +loc_6A9A: ; CODE XREF: sub_6A41+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_69A4 + add sp, 8 + or ax, ax + jz short loc_6ABD + cmp [bp+var_6], 0 + jz short loc_6ABD + jmp loc_6B80 +; --------------------------------------------------------------------------- + +loc_6ABD: ; CODE XREF: sub_6A41+71j sub_6A41+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_6AE9 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_6A41 + add sp, 0Eh + or ax, ax + jz short loc_6AE9 + jmp loc_6B80 +; --------------------------------------------------------------------------- + +loc_6AE9: ; CODE XREF: sub_6A41+3Bj sub_6A41+84j ... + add word ptr [bp+var_4], 8 + jmp loc_6A5C +; --------------------------------------------------------------------------- + +loc_6AF0: ; CODE XREF: sub_6A41+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_6B03: ; CODE XREF: sub_6A41+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_6B8C + cmp [bp+arg_C], 0 + jz short loc_6B35 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_6B35 + mov ax, 1 + jmp short loc_6B37 +; --------------------------------------------------------------------------- + +loc_6B35: ; CODE XREF: sub_6A41+DEj sub_6A41+EDj + xor ax, ax + +loc_6B37: ; CODE XREF: sub_6A41+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_69A4 + add sp, 8 + or ax, ax + jz short loc_6B57 + cmp [bp+var_6], 0 + jnz short loc_6B80 + +loc_6B57: ; CODE XREF: sub_6A41+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_6B85 + push [bp+var_6] + push [bp+arg_A] + push [bp+arg_8] + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+var_A+2] + push word ptr [bp+var_A] + call sub_6A41 + add sp, 0Eh + or ax, ax + jz short loc_6B85 + +loc_6B80: ; CODE XREF: sub_6A41+79j sub_6A41+A5j ... + mov ax, 1 + jmp short loc_6B8E +; --------------------------------------------------------------------------- + +loc_6B85: ; CODE XREF: sub_6A41+11Ej + ; sub_6A41+13Dj + add word ptr [bp+var_4], 8 + jmp loc_6B03 +; --------------------------------------------------------------------------- + +loc_6B8C: ; CODE XREF: sub_6A41+D8j + xor ax, ax + +loc_6B8E: ; CODE XREF: sub_6A41+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_6A41 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6B94 proc near ; CODE XREF: sub_6D9D+1Dp sub_6D9D+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_6B9F: ; CODE XREF: sub_6B94+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_6BB2 + cmp ax, word ptr [bp+arg_4] + jnz short loc_6BB2 + jmp loc_6CC7 +; --------------------------------------------------------------------------- + +loc_6BB2: ; CODE XREF: sub_6B94+14j sub_6B94+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_6C42 + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_6BE5 + jmp loc_6C88 +; --------------------------------------------------------------------------- + +loc_6BE5: ; CODE XREF: sub_6B94+4Cj + or cx, cx + jz short loc_6BEC + jmp loc_6D00 +; --------------------------------------------------------------------------- + +loc_6BEC: ; CODE XREF: sub_6B94+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_6C22 + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_6C10 + jmp loc_6D00 +; --------------------------------------------------------------------------- + +loc_6C10: ; CODE XREF: sub_6B94+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_6C88 + +loc_6C22: ; CODE XREF: sub_6B94+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_6C36 + jmp loc_6D00 +; --------------------------------------------------------------------------- + +loc_6C36: ; CODE XREF: sub_6B94+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_6C3F + jmp loc_6D00 +; --------------------------------------------------------------------------- + +loc_6C3F: ; CODE XREF: sub_6B94+A6j + jmp loc_6CC7 +; --------------------------------------------------------------------------- + +loc_6C42: ; CODE XREF: sub_6B94+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_6CB0 + les bx, [bp+arg_0] + mov dx, es:[bx+0Ch] + mov ax, es:[bx+0Ah] + les bx, [bp+arg_4] + cmp dx, es:[bx+0Ch] + jnz short loc_6C67 + cmp ax, es:[bx+0Ah] + jz short loc_6C88 + +loc_6C67: ; CODE XREF: sub_6B94+CBj + or cx, cx + jz short loc_6C6E + jmp loc_6D00 +; --------------------------------------------------------------------------- + +loc_6C6E: ; CODE XREF: sub_6B94+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_6D00 + +loc_6C88: ; CODE XREF: sub_6B94+4Ej sub_6B94+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_6B9F +; --------------------------------------------------------------------------- + +loc_6CB0: ; CODE XREF: sub_6B94+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_69A4 + add sp, 8 + or ax, ax + jz short loc_6CCC + +loc_6CC7: ; CODE XREF: sub_6B94+1Bj + ; sub_6B94:loc_6C3Fj + mov ax, 1 + jmp short loc_6D02 +; --------------------------------------------------------------------------- + +loc_6CCC: ; CODE XREF: sub_6B94+131j + test byte ptr [bp+var_2], 2 + jz short loc_6D00 + test byte ptr [bp+var_4], 1 + jz short loc_6D00 + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_6D00 + mov ax, 1 + push ax + push [bp+arg_C] + push [bp+arg_A] + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_6A41 + add sp, 0Eh + jmp short loc_6D02 +; --------------------------------------------------------------------------- + +loc_6D00: ; CODE XREF: sub_6B94+55j sub_6B94+79j ... + xor ax, ax + +loc_6D02: ; CODE XREF: sub_6B94+136j + ; sub_6B94+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_6B94 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6D08 proc far ; CODE XREF: sub_74C7+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_4DEE + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + mov ax, [bp+var_4] + or ax, [bp+var_2] + jnz short loc_6D58 + cmp [bp+arg_0], 80h ; '€' + ja short loc_6D3A + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_6D3F + +loc_6D3A: ; CODE XREF: sub_6D08+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_6D3F: ; CODE XREF: sub_6D08+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_6D5E +; --------------------------------------------------------------------------- + +loc_6D58: ; CODE XREF: sub_6D08+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_6D5E: ; CODE XREF: sub_6D08+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_6D08 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + les bx, ss:16h + mov dx, es:[bx+22h] + mov ax, es:[bx+20h] + cmp dx, [bp+8] + jnz short loc_6D8C + cmp ax, [bp+6] + jnz short loc_6D8C + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_6D99 +; --------------------------------------------------------------------------- + +loc_6D8C: ; CODE XREF: seg000:6D79j seg000:6D7Ej + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + +loc_6D99: ; CODE XREF: seg000:6D8Aj + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6D9D proc near ; CODE XREF: sub_862E+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_6B94 + add sp, 0Eh + or ax, ax + jz short loc_6DC7 + jmp loc_6E63 +; --------------------------------------------------------------------------- + +loc_6DC7: ; CODE XREF: sub_6D9D+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_6E57 + push [bp+arg_6] + push [bp+arg_4] + mov ax, 1 + push ax + les bx, [bp+arg_8] + push word ptr es:[bx+8] + push word ptr es:[bx+6] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_6B94 + add sp, 0Eh + or ax, ax + jnz short loc_6E63 + les bx, [bp+arg_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+arg_8+2], dx + mov word ptr [bp+arg_8], ax + les bx, [bp+arg_8] + mov ax, es:[bx+2] + mov [bp+var_4], ax + test byte ptr [bp+var_4], 10h + jz short loc_6E9A + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_8+2] + push word ptr [bp+arg_8] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call sub_6B94 + add sp, 0Eh + or ax, ax + jnz short loc_6E63 + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_6E9A + +loc_6E57: ; CODE XREF: sub_6D9D+42j + test byte ptr [bp+var_4], 10h + jz short loc_6E9A + test [bp+arg_C], 1 + jz short loc_6E68 + +loc_6E63: ; CODE XREF: sub_6D9D+27j sub_6D9D+67j ... + mov ax, 1 + jmp short loc_6E9C +; --------------------------------------------------------------------------- + +loc_6E68: ; CODE XREF: sub_6D9D+C4j + test byte ptr [bp+var_2], 10h + jz short loc_6E9A + test byte ptr [bp+var_2+1], 20h + jz short loc_6E7A + test byte ptr [bp+var_4+1], 20h + jz short loc_6E9A + +loc_6E7A: ; CODE XREF: sub_6D9D+D5j + test byte ptr [bp+var_4], 40h + jz short loc_6E9A + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_6E96 + mov ax, 1 + jmp short loc_6E98 +; --------------------------------------------------------------------------- + +loc_6E96: ; CODE XREF: sub_6D9D+F2j + xor ax, ax + +loc_6E98: ; CODE XREF: sub_6D9D+F7j + jmp short loc_6E9C +; --------------------------------------------------------------------------- + +loc_6E9A: ; CODE XREF: sub_6D9D+88j sub_6D9D+B8j ... + xor ax, ax + +loc_6E9C: ; CODE XREF: sub_6D9D+C9j + ; sub_6D9D:loc_6E98j + pop di + pop si + mov sp, bp + pop bp + retn +sub_6D9D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6EA2 proc near ; CODE XREF: sub_74C7+263p + ; sub_8173+1FDp + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = word ptr 8 +arg_6 = word ptr 0Ah +arg_8 = dword ptr 0Ch +arg_C = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + les bx, ss:16h + mov ax, es:[bx+6] + mov [bp+var_2], ax + push ds + mov ds, [bp+var_2] + mov ax, [bp+arg_C] + and ax, 1 + mov [bp+var_4], ax + test byte ptr [bp+arg_C], 4 + jz short loc_6ECD + or [bp+var_4], 2 + +loc_6ECD: ; CODE XREF: sub_6EA2+25j + test byte ptr [bp+arg_C], 2 + jz short loc_6EE1 + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_6EE1 + or [bp+var_4], 20h + +loc_6EE1: ; CODE XREF: sub_6EA2+2Fj sub_6EA2+39j + test byte ptr [bp+arg_C], 20h + jz short loc_6EEB + or [bp+var_4], 8 + +loc_6EEB: ; CODE XREF: sub_6EA2+43j + test byte ptr [bp+arg_C], 80h + jz short loc_6EF5 + or [bp+var_4], 10h + +loc_6EF5: ; CODE XREF: sub_6EA2+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_6EFE + jmp loc_7083 +; --------------------------------------------------------------------------- + +loc_6EFE: ; CODE XREF: sub_6EA2+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_6F09 + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6F09: ; CODE XREF: sub_6EA2+62j + add bx, bx + jmp cs:off_71C0[bx] + +loc_6F10: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:off_71C0o + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + add sp, 6 + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6F22: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_6F34: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6F5A +; --------------------------------------------------------------------------- + +loc_6F48: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6F5A: ; CODE XREF: sub_6EA2+A4j + add sp, 0Ah + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6F60: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_6F6F: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6F7E: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6FA4 +; --------------------------------------------------------------------------- + +loc_6F92: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6FA4: ; CODE XREF: sub_6EA2+EEj + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6FA7: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_6FB7: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_6FBF: ; CODE XREF: sub_6EA2+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6FC7: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6FD5: ; CODE XREF: sub_6EA2+263j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_6FEB +; --------------------------------------------------------------------------- + +loc_6FDA: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_6FE8: ; CODE XREF: sub_6EA2+272j + call [bp+arg_8] + +loc_6FEB: ; CODE XREF: sub_6EA2+136j + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_6FEE: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7008 +; --------------------------------------------------------------------------- + +loc_6FFC: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_7005: ; CODE XREF: sub_6EA2+205j + call [bp+arg_8] + +loc_7008: ; CODE XREF: sub_6EA2+158j + ; sub_6EA2+1FCj + pop cx + pop cx + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_700D: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_7024: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_703B: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_7044: ; CODE XREF: sub_6EA2+234j + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7055 +; --------------------------------------------------------------------------- + +loc_7049: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_7052: ; CODE XREF: sub_6EA2+23Dj + call [bp+arg_8] + +loc_7055: ; CODE XREF: sub_6EA2+1A5j + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_7058: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_706C: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+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_7189 +; --------------------------------------------------------------------------- + +loc_7080: ; CODE XREF: sub_6EA2+69j + ; sub_6EA2+1EEj + ; DATA XREF: ... + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_7083: ; CODE XREF: sub_6EA2+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_708E + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_708E: ; CODE XREF: sub_6EA2+1E7j + add bx, bx + jmp cs:off_7190[bx] + +loc_7095: ; DATA XREF: seg000:off_7190o + push [bp+arg_4] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7008 +; --------------------------------------------------------------------------- + +loc_70A1: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:7192o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7005 +; --------------------------------------------------------------------------- + +loc_70AA: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:7194o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_70CA +; --------------------------------------------------------------------------- + +loc_70BB: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:7196o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_8] + +loc_70CA: ; CODE XREF: sub_6EA2+217j + add sp, 8 + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_70D0: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:7198o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7044 +; --------------------------------------------------------------------------- + +loc_70D9: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:719Ao + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_7052 +; --------------------------------------------------------------------------- + +loc_70E2: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71A0o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 00ch + jmp loc_7189 +; --------------------------------------------------------------------------- + +loc_70F0: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71A2o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_6FBF +; --------------------------------------------------------------------------- + +loc_70F9: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:719Co ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6FD5 +; --------------------------------------------------------------------------- + +loc_7108: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:719Eo ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6FE8 +; --------------------------------------------------------------------------- + +loc_7117: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71B0o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_7123: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71B2o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_712F: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71B4o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop cx + pop cx + pop ds + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_7141: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71B6o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_7153: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71B8o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_715E: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71BAo + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_7169: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71BCo + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + ; Hack + db 0ffh + db 056h + db 00ch + pop ds + jmp short loc_7189 +; --------------------------------------------------------------------------- + +loc_7179: ; CODE XREF: sub_6EA2+1EEj + ; DATA XREF: seg000:71BEo + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call [bp+arg_8] + pop ds + jmp short $+2 + +loc_7189: ; CODE XREF: sub_6EA2+64j sub_6EA2+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6EA2 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7190 dw offset loc_7095 ; DATA XREF: sub_6EA2+1EEr + dw offset loc_70A1 + dw offset loc_70AA + dw offset loc_70BB + dw offset loc_70D0 + dw offset loc_70D9 + dw offset loc_70F9 + dw offset loc_7108 + dw offset loc_70E2 + dw offset loc_70F0 + dw offset loc_70F9 + dw offset loc_7108 + dw offset loc_7189 + dw offset loc_7189 + dw offset loc_7189 + dw offset loc_7189 + dw offset loc_7117 + dw offset loc_7123 + dw offset loc_712F + dw offset loc_7141 + dw offset loc_7153 + dw offset loc_715E + dw offset loc_7169 + dw offset loc_7179 +off_71C0 dw offset loc_6F10 ; DATA XREF: sub_6EA2+69r + dw offset loc_6F22 + dw offset loc_6F34 + dw offset loc_6F48 + dw offset loc_6F60 + dw offset loc_6F6F + dw offset loc_6F7E + dw offset loc_6F92 + dw offset loc_6FA7 + dw offset loc_6FB7 + dw offset loc_6FC7 + dw offset loc_6FDA + dw offset loc_7080 + dw offset loc_7080 + dw offset loc_7080 + dw offset loc_7080 + dw offset loc_6FEE + dw offset loc_6FFC + dw offset loc_700D + dw offset loc_7024 + dw offset loc_703B + dw offset loc_7049 + dw offset loc_7058 + dw offset loc_706C + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_71F0 proc near ; CODE XREF: sub_74C7+2BCp + ; sub_7E7F+2Bp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp [bp+arg_A], 0 + jz short loc_7203 + mov ax, 2 + jmp short loc_7205 +; --------------------------------------------------------------------------- + +loc_7203: ; CODE XREF: sub_71F0+Cj + xor ax, ax + +loc_7205: ; CODE XREF: sub_71F0+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_722B + or [bp+var_6], 2 + +loc_722B: ; CODE XREF: sub_71F0+35j + test byte ptr [bp+arg_8], 2 + jz short loc_723F + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_723F + or [bp+var_6], 20h + +loc_723F: ; CODE XREF: sub_71F0+3Fj sub_71F0+49j + test byte ptr [bp+arg_8], 20h + jz short loc_7249 + or [bp+var_6], 8 + +loc_7249: ; CODE XREF: sub_71F0+53j + test byte ptr [bp+arg_8], 80h + jz short loc_7253 + or [bp+var_6], 10h + +loc_7253: ; CODE XREF: sub_71F0+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_725E + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_725E: ; CODE XREF: sub_71F0+69j + add bx, bx + jmp cs:off_7378[bx] + +loc_7265: ; DATA XREF: seg000:off_7378o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop cx + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_7273: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:737Ao + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_7281: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:737Co + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + add sp, 6 + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_7293: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:737Eo + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + add sp, 6 + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_72A5: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7380o + push [bp+var_2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_730B +; --------------------------------------------------------------------------- + +loc_72B0: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7382o + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_7308 +; --------------------------------------------------------------------------- + +loc_72B8: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7384o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_72D2 +; --------------------------------------------------------------------------- + +loc_72C6: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7386o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_72D2: ; CODE XREF: sub_71F0+D4j + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_72D5: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7388o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_72E3: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:738Ao + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_7371 +; --------------------------------------------------------------------------- + +loc_72F1: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:738Co + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_730B +; --------------------------------------------------------------------------- + +loc_72FF: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:738Eo + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_7308: ; CODE XREF: sub_71F0+C6j + call [bp+arg_4] + +loc_730B: ; CODE XREF: sub_71F0+BEj + ; sub_71F0+10Dj + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_730D: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:7398o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7319: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:739Ao + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7325: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:739Co + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + pop ds + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7333: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:739Eo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7341: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:73A0o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_734C: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:73A2o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7357: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:73A4o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + ; Hack + db 0ffh + db 056h + db 008h + pop ds + jmp short loc_7371 +; --------------------------------------------------------------------------- + +loc_7364: ; CODE XREF: sub_71F0+70j + ; DATA XREF: seg000:73A6o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_7371: ; CODE XREF: sub_71F0+6Bj sub_71F0+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_71F0 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7378 dw offset loc_7265 ; DATA XREF: sub_71F0+70r + dw offset loc_7273 + dw offset loc_7281 + dw offset loc_7293 + dw offset loc_72A5 + dw offset loc_72B0 + dw offset loc_72B8 + dw offset loc_72C6 + dw offset loc_72D5 + dw offset loc_72E3 + dw offset loc_72F1 + dw offset loc_72FF + dw offset loc_7371 + dw offset loc_7371 + dw offset loc_7371 + dw offset loc_7371 + dw offset loc_730D + dw offset loc_7319 + dw offset loc_7325 + dw offset loc_7333 + dw offset loc_7341 + dw offset loc_734C + dw offset loc_7357 + dw offset loc_7364 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_73A8 proc near ; CODE XREF: sub_8FEF+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_73D3 + or [bp+var_4], 2 + +loc_73D3: ; CODE XREF: sub_73A8+25j + test byte ptr [bp+arg_8], 2 + jz short loc_73DD + or [bp+var_4], 4 + +loc_73DD: ; CODE XREF: sub_73A8+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_73E7 + or [bp+var_4], 8 + +loc_73E7: ; CODE XREF: sub_73A8+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_745A + add bx, bx + jmp cs:off_7461[bx] + +loc_73F6: ; DATA XREF: seg000:off_7461o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + pop cx + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_73FF: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7463o + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_7408: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7465o + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_741C +; --------------------------------------------------------------------------- + +loc_7413: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7467o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_741C: ; CODE XREF: sub_73A8+69j + pop cx + pop cx + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_7420: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7469o + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_742E +; --------------------------------------------------------------------------- + +loc_7428: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:746Bo + push [bp+arg_0] + call [bp+arg_4] + +loc_742E: ; CODE XREF: sub_73A8+7Ej + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_7430: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7471o + mov bx, [bp+arg_0] + push bx + pop bx + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_743A: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:7473o + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_745A +; --------------------------------------------------------------------------- + +loc_7444: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:746Do ... + push [bp+arg_2] + push [bp+arg_0] + ; Hack + db 0ffh + db 056h + db 008h + jmp short loc_7458 +; --------------------------------------------------------------------------- + +loc_744F: ; CODE XREF: sub_73A8+49j + ; DATA XREF: seg000:746Fo ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_7458: ; CODE XREF: sub_73A8+A5j + jmp short $+2 + +loc_745A: ; CODE XREF: sub_73A8+45j sub_73A8+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_73A8 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_7461 dw offset loc_73F6 ; DATA XREF: sub_73A8+49r + dw offset loc_73FF + dw offset loc_7408 + dw offset loc_7413 + dw offset loc_7420 + dw offset loc_7428 + dw offset loc_7444 + dw offset loc_744F + dw offset loc_7430 + dw offset loc_743A + dw offset loc_7444 + dw offset loc_744F + db 4 dup(0), 37h, 77h + dw seg seg000 + db 14h dup(0), 90h, 77h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 79h, 74h + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 91h, 74h + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far sub_74C7(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_74C7 proc far ; 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, 74A9h + 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_7553 +; --------------------------------------------------------------------------- + +loc_7530: ; CODE XREF: sub_74C7+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_7550 + les bx, [bp+var_34] + mov al, es:[bx] + les bx, [bp+var_38] + mov es:[bx], al + inc word ptr [bp+var_38] + +loc_7550: ; CODE XREF: sub_74C7+78j + inc word ptr [bp+var_34] + +loc_7553: ; CODE XREF: sub_74C7+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_7530 + les bx, [bp+var_38] + mov byte ptr es:[bx], 0 + les bx, ss:16h + mov ax, [bp+arg_14] + mov es:[bx+1Ah], ax + les bx, ss:16h + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+18h], dx + mov es:[bx+16h], ax + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + les bx, [bp+var_22] + mov ax, es:[bx] + mov [bp+n], ax + les bx, [bp+var_22] + mov ax, es:[bx+2] + mov [bp+var_2A], ax + test byte ptr [bp+var_2A], 2 + jz short loc_75B0 + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_75B2 +; --------------------------------------------------------------------------- + +loc_75B0: ; CODE XREF: sub_74C7+DEj + xor ax, ax + +loc_75B2: ; CODE XREF: sub_74C7+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_75CC + les bx, [bp+var_26] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_26+2], dx + mov word ptr [bp+var_26], ax + +loc_75CC: ; CODE XREF: sub_74C7+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_6D08 + pop cx + mov word ptr [bp+var_30+2], dx + mov word ptr [bp+var_30], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, ss:16h + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_22+2] + mov ax, word ptr [bp+var_22] + mov es:[bx+6], dx + mov es:[bx+4], ax + les bx, [bp+var_30] + mov ax, [bp+arg_12] + mov es:[bx+0Ch], ax + les bx, [bp+var_30] + mov ax, [bp+n] + mov es:[bx+0Eh], ax + les bx, [bp+var_30] + mov ax, [bp+var_2A] + mov es:[bx+14h], ax + les bx, [bp+var_30] + mov ax, [bp+var_2C] + mov es:[bx+16h], ax + les bx, [bp+var_30] + mov dx, word ptr [bp+var_26+2] + mov ax, word ptr [bp+var_26] + mov es:[bx+12h], dx + mov es:[bx+10h], ax + les bx, [bp+var_30] + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov es:[bx+0Ah], dx + mov es:[bx+8], ax + les bx, [bp+var_30] + mov word ptr es:[bx+24h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+28h], 0 + mov word ptr es:[bx+26h], 0 + les bx, [bp+var_30] + mov word ptr es:[bx+18h], ds + les bx, [bp+var_30] + mov word ptr es:[bx+1Ch], seg seg000 + mov word ptr es:[bx+1Ah], 6D64h + les bx, [bp+var_30] + mov ax, [bp+arg_14] + mov es:[bx+2Ch], ax + les bx, [bp+var_30] + mov dx, [bp+arg_18] + mov ax, [bp+arg_16] + mov es:[bx+30h], dx + mov es:[bx+2Eh], ax + les bx, [bp+var_30] + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov es:[bx+20h], dx + mov es:[bx+1Eh], ax + les bx, [bp+var_30] + mov ax, [bp+arg_10] + mov es:[bx+22h], ax + les bx, [bp+var_30] + mov byte ptr es:[bx+39h], 0 + les bx, [bp+var_30] + mov byte ptr es:[bx+38h], 1 + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + mov ax, word ptr [bp+var_30] + add ax, 3Ah ; ':' + push word ptr [bp+var_30+2] + push ax ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + test byte ptr [bp+var_2C], 1 + jz short loc_7756 + 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_6EA2 + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_7741 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7741: ; CODE XREF: sub_74C7+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_7756: ; CODE XREF: sub_74C7+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_779A + test byte ptr [bp+var_2C], 2 + jz short loc_779A + mov [bp+var_12], 12h + mov ax, 1 + push ax + les bx, [bp+var_22] + push word ptr es:[bx+22h] + les bx, [bp+var_22] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_71F0 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_779A +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_779A: ; CODE XREF: sub_74C7+293j + ; sub_74C7+299j ... + les bx, ss:16h + mov dx, es:[bx+1Eh] + mov ax, es:[bx+1Ch] + mov [bp+var_46], dx + mov [bp+var_48], ax + mov dx, [bp+arg_1C] + mov ax, [bp+arg_1A] + mov [bp+var_42], dx + mov [bp+var_44], ax + mov dx, word ptr [bp+var_30+2] + mov ax, word ptr [bp+var_30] + mov [bp+var_3E], dx + mov [bp+var_40], ax + push ss + lea ax, [bp+var_48] + push ax + xor ax, ax + mov dx, 3 + push ax + push dx + xor ax, ax + mov dx, 1 + push ax + push dx + mov ax, 0EEFh + mov dx, 0FACEh + push ax + push dx + nop + push cs + call near ptr _RaiseException + add sp, 10h + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_74C7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far _ThrowException(int, int, void *src, int, int, int, int, int, int, int, int, int) +@_ThrowException$qnvt1t1t1uiuiuinuc proc far ; CODE XREF: seg000:4484p + ; xalloc::raise(void)+6Cp ... + +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +src = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h +arg_12 = word ptr 18h +arg_14 = word ptr 1Ah +arg_16 = word ptr 1Ch +arg_18 = word ptr 1Eh + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov [bp+var_6], bp + mov bx, [bp+var_6] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + xor ax, ax + push ax ; int + push [bp+var_2] ; int + push [bp+var_4] ; int + push [bp+arg_18] ; int + push [bp+arg_16] ; int + push [bp+arg_14] ; int + push [bp+arg_12] ; int + push [bp+arg_10] ; int + push [bp+arg_E] ; int + push [bp+arg_C] ; int + push [bp+arg_A] ; int + push [bp+arg_8] ; int + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + push [bp+arg_2] ; int + push [bp+arg_0] ; int + push cs + call near ptr sub_74C7 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ThrowException$qnvt1t1t1uiuiuinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _ReThrowException(unsigned int, unsigned char *) +@_ReThrowException$quinuc proc far + +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 0Ah + push si + push di + mov [bp+var_A], bp + mov bx, [bp+var_A] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + mov [bp+var_2], dx + mov [bp+var_4], ax + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, word ptr [bp+var_8] + or ax, word ptr [bp+var_8+2] + jnz short loc_788A + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_788A: ; 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_78D6 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_78DF +; --------------------------------------------------------------------------- + +loc_78D6: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_78DF: ; 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_74C7 + add sp, 20h + pop di + pop si + mov sp, bp + pop bp + retf +@_ReThrowException$quinuc endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_78F9 proc far ; CODE XREF: sub_78FE+22p + push si + push di + pop di + pop si + retf +sub_78F9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_78FE proc far ; 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_7918 + inc [bp+var_4] + +loc_7918: ; CODE XREF: sub_78FE+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_78F9 + jmp short loc_7966 +; --------------------------------------------------------------------------- + +loc_7925: ; CODE XREF: sub_78FE+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_7950 + mov ax, dx + jmp short loc_7984 +; --------------------------------------------------------------------------- + +loc_7950: ; CODE XREF: sub_78FE+4Cj + cmp [bp+var_4], 0 + jz short loc_795D + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_795D: ; CODE XREF: sub_78FE+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_7966: ; CODE XREF: sub_78FE+25j + cmp [bp+var_2], 0FFFFh + jz short loc_7974 + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_7925 + +loc_7974: ; CODE XREF: sub_78FE+6Cj + cmp [bp+var_4], 0 + jz short loc_7981 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_7981: ; CODE XREF: sub_78FE+7Aj + mov ax, 1 + +loc_7984: ; CODE XREF: sub_78FE+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_78FE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Global_unwind proc far ; 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_79B5 + mov [bp+var_4A], 0 + mov [bp+var_4C], 26h ; '&' + mov [bp+var_46], 0 + mov [bp+var_48], 2 + mov [bp+var_3E], 0 + lea dx, [bp+var_4C] + +loc_79B5: ; 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_78FE + add sp, 8 + pop di + pop si + mov sp, bp + pop bp + retf +__Global_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_79D1 proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_79D1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_74C7+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 7E48 SIZE 0000000D BYTES + + push ax + push cx + push dx + push bx + push sp + push bp + push si + push di + push ds + push es + mov bp, sp + sub sp, 186h + lea ax, [bp+var_86] + push ax + push cs + call near ptr sub_79D1 + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_10C96, 3 + jnb short loc_79FF + jmp loc_7AB5 +; --------------------------------------------------------------------------- + +loc_79FF: ; 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_7AFE +; --------------------------------------------------------------------------- + +loc_7AB5: ; 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_7AFE: ; 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_7B2F + cmp [bp+arg_0], 0FACEh + jnz short loc_7B2F + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_7B3D +; --------------------------------------------------------------------------- + +loc_7B2F: ; 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_7B3D: ; 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_7C0E + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_7C0E: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_7C26 + ja short loc_7C1C + cmp [bp+arg_8], 0Fh + jbe short loc_7C26 + +loc_7C1C: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_7C26: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_7C5C +; --------------------------------------------------------------------------- + +loc_7C33: ; 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_7C5C: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_7C33 + jnz short loc_7C6D + cmp ax, [bp+arg_8] + jb short loc_7C33 + +loc_7C6D: ; 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_78FE + add sp, 8 + or ax, ax + jnz short loc_7CB8 + test byte ptr [bp+arg_4], 1 + jz short loc_7CD8 + mov [bp+var_54], 0C000h + mov [bp+var_56], 25h ; '%' + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov [bp+var_50], dx + mov [bp+var_52], ax + mov [bp+var_4A], 0 + mov [bp+var_4C], 0 + mov [bp+var_4E], 0 + mov [bp+var_48], 0 + jmp short loc_7C6D +; --------------------------------------------------------------------------- + +loc_7CB8: ; 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_78FE + add sp, 8 + or ax, ax + jz short loc_7CD8 + jmp loc_7E43 +; --------------------------------------------------------------------------- + +loc_7CD8: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_10C96, 3 + jnb short loc_7CE2 + jmp loc_7DC2 +; --------------------------------------------------------------------------- + +loc_7CE2: ; 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_7E48 +; --------------------------------------------------------------------------- + +loc_7DC2: ; 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_7E48 +; --------------------------------------------------------------------------- + +loc_7E43: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_7E48: ; 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), 0B7h, 7Eh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 55h, 7Eh + dw seg seg000 + db 2 dup(0), 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7E7F proc near ; CODE XREF: sub_7ECF+58p sub_7ECF+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, 7E6Dh + 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_71F0 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_7EC1 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7EC1: ; CODE XREF: sub_7E7F+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_7E7F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7ECF proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_8419+138p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 4 + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + cmp byte ptr es:[bx+38h], 0 + jz short loc_7F4A + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_7F42 + 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_7E7F + 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_7F42: ; CODE XREF: sub_7ECF+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_7F4A: ; CODE XREF: sub_7ECF+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_7FA1 + les bx, [bp+arg_0] + mov dx, es:[bx+34h] + mov ax, es:[bx+32h] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + test byte ptr es:[bx+2], 2 + jz short loc_7F99 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_7F99 + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push ss + les bx, [bp+arg_0] + push word ptr es:[bx+36h] + call sub_7E7F + add sp, 0Ah + +loc_7F99: ; CODE XREF: sub_7ECF+9Ej sub_7ECF+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_7FA1: ; CODE XREF: sub_7ECF+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7ECF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; _CatchCleanup(void) +@_CatchCleanup$qv proc far ; CODE XREF: ___call_terminate+69p + ; sub_74C7+277p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_4] + mov ax, es:[bx+24h] + mov [bp+var_6], ax + mov bx, [bp+var_6] + les ax, ss:[bx+arg_0] + mov bx, [bp+var_6] + add ax, ss:[bx+arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+var_6] + mov ss:[bx+arg_6], ax + push word ptr [bp+var_4+2] + +loc_7FFE: ; DATA XREF: sub_E3E8+1o + push word ptr [bp+var_4] + call sub_7ECF + pop cx + pop cx + push ds + les bx, [bp+var_4] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + les bx, [bp+var_4] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + pop di + pop si + mov sp, bp + pop bp + retf +@_CatchCleanup$qv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8024 proc near ; CODE XREF: sub_8024+A0p sub_80F0+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_802C: ; CODE XREF: sub_8024+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_8049 + xor ax, ax + jmp loc_80EA +; --------------------------------------------------------------------------- + +loc_8049: ; CODE XREF: sub_8024+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_8075 + les bx, [bp+var_8] + mov ax, es:[bx] + mov dx, word ptr [bp+var_8+2] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + +loc_8075: ; CODE XREF: sub_8024+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_69A4 + add sp, 8 + or ax, ax + jnz short loc_80CE + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_80E3 + les bx, [bp+var_4] + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + add ax, es:[bx+0Ah] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_C] + or ax, [bp+var_A] + jz short loc_80E3 + lea ax, [bp+var_8] + push ax + push [bp+arg_8] + push [bp+arg_6] + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + call sub_8024 + add sp, 0Ch + or ax, ax + jz short loc_80E3 + +loc_80CE: ; CODE XREF: sub_8024+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_80EA +; --------------------------------------------------------------------------- + +loc_80E3: ; CODE XREF: sub_8024+70j sub_8024+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_802C +; --------------------------------------------------------------------------- + +loc_80EA: ; CODE XREF: sub_8024+22j sub_8024+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_8024 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_80F0 proc far ; CODE XREF: sub_8173+159p + ; sub_8173+1C2p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + + push bp + mov bp, sp + sub sp, 4 + push si + push di + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jz short loc_8161 + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + xor ax, ax + push ax + push [bp+var_2] + push [bp+var_4] + call sub_8024 + add sp, 0Ch + or ax, ax + jnz short loc_8161 + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ch] + mov [bp+var_2], dx + mov [bp+var_4], ax + lea ax, [bp+arg_0] + push ax + push [bp+arg_A] + push [bp+arg_8] + mov ax, 1 + push ax + push [bp+var_2] + push [bp+var_4] + call sub_8024 + add sp, 0Ch + or ax, ax + jz short loc_8169 + +loc_8161: ; CODE XREF: sub_80F0+Ej sub_80F0+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_816D +; --------------------------------------------------------------------------- + +loc_8169: ; CODE XREF: sub_80F0+6Fj + xor dx, dx + xor ax, ax + +loc_816D: ; CODE XREF: sub_80F0+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_80F0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8173 proc near ; 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_81A2 + jmp loc_8413 +; --------------------------------------------------------------------------- + +loc_81A2: ; CODE XREF: sub_8173+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_81AF + jmp loc_8413 +; --------------------------------------------------------------------------- + +loc_81AF: ; CODE XREF: sub_8173+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_8223 + les bx, [bp+var_8] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_8] + mov dx, es:[bx+2] + +loc_8223: ; CODE XREF: sub_8173+96j + test cl, 10h + jz short loc_824B + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_824B + push [bp+n] ; n + xor ax, ax + push ax ; c + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; s + nop + push cs + call near ptr _memset + add sp, 8 + jmp loc_8376 +; --------------------------------------------------------------------------- + +loc_824B: ; CODE XREF: sub_8173+B3j sub_8173+BDj + test dl, 1 + jnz short loc_8253 + jmp loc_82F7 +; --------------------------------------------------------------------------- + +loc_8253: ; CODE XREF: sub_8173+DBj + test cl, 30h + jnz short loc_825B + jmp loc_82F7 +; --------------------------------------------------------------------------- + +loc_825B: ; CODE XREF: sub_8173+E3j + test cl, 20h + jz short loc_8262 + jmp short loc_8285 +; --------------------------------------------------------------------------- + +loc_8262: ; CODE XREF: sub_8173+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_828C + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_8285: ; CODE XREF: sub_8173+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_828C: ; CODE XREF: sub_8173+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_69A4 + add sp, 8 + or ax, ax + jnz short loc_82ED + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + mov [bp+var_16], dx + mov [bp+var_18], ax + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_80F0 + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov dx, word ptr [bp+src+2] + mov ax, word ptr [bp+src] + cmp dx, [bp+var_16] + jnz short loc_82E8 + cmp ax, [bp+var_18] + jz short loc_82ED + +loc_82E8: ; CODE XREF: sub_8173+16Ej + mov [bp+var_14], 1 + +loc_82ED: ; CODE XREF: sub_8173+133j + ; sub_8173+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_83C1 +; --------------------------------------------------------------------------- + +loc_82F7: ; CODE XREF: sub_8173+DDj sub_8173+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_837D + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push cs + call near ptr sub_69A4 + add sp, 8 + or ax, ax + jnz short loc_8346 + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + les bx, [bp+arg_6] + push word ptr es:[bx+12h] + push word ptr es:[bx+10h] + push word ptr [bp+src+2] + push word ptr [bp+src] + push cs + call near ptr sub_80F0 + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_8346: ; CODE XREF: sub_8173+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_83C4 + les bx, [bp+arg_0] + push word ptr es:[bx+0Eh] + les bx, [bp+arg_0] + push word ptr es:[bx+0Ch] + push word ptr es:[bx+0Ah] + push word ptr [bp+src+2] + push word ptr [bp+src] + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] + call sub_6EA2 + add sp, 0Eh + +loc_8376: ; CODE XREF: sub_8173+D5j + ; sub_8173+227j + mov [bp+var_14], 1 + jmp short loc_83DD +; --------------------------------------------------------------------------- + +loc_837D: ; CODE XREF: sub_8173+18Cj + test cl, 20h + jz short loc_839C + push [bp+n] ; n + push ss + lea ax, [bp+src] + push ax ; src + push ss + les bx, [bp+arg_6] + push word ptr es:[bx+36h] ; dest + nop + push cs + call near ptr _memcpy + add sp, 0Ah + jmp short loc_8376 +; --------------------------------------------------------------------------- + +loc_839C: ; CODE XREF: sub_8173+20Dj + test cl, 10h + jz short loc_83C4 + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_83C4 + les bx, [bp+src] + mov ax, es:[bx] + mov [bp+var_10], ds + mov [bp+var_12], ax + mov ax, 4 + push ax + push ss + lea ax, [bp+var_12] + +loc_83C1: ; CODE XREF: sub_8173+181j + push ax + jmp short loc_83CD +; --------------------------------------------------------------------------- + +loc_83C4: ; CODE XREF: sub_8173+1DBj + ; sub_8173+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_83CD: ; CODE XREF: sub_8173+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_83DD: ; CODE XREF: sub_8173+208j + cmp [bp+var_14], 0 + jnz short loc_8413 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_840B + les bx, [bp+var_8] + push word ptr es:[bx+22h] + les bx, [bp+var_8] + push word ptr es:[bx+20h] + push word ptr es:[bx+1Eh] + push word ptr [bp+src+2] + push word ptr [bp+src] + call sub_7E7F + add sp, 0Ah + +loc_840B: ; CODE XREF: sub_8173+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_8413: ; CODE XREF: sub_8173+2Cj sub_8173+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_8173 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8419 proc near ; 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_85BE +; --------------------------------------------------------------------------- + +loc_8471: ; CODE XREF: sub_8419+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_84AC + jmp loc_85BB +; --------------------------------------------------------------------------- + +loc_84AC: ; CODE XREF: sub_8419+8Ej + add bx, bx + jmp cs:off_85D8[bx] + +loc_84B3: ; DATA XREF: seg000:off_85D8o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_13352+2, dx + mov word ptr dword_13352, ax + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 1 + push ds + pop es + assume es:dseg + push ds + mov ds, [bp+var_C] + push bp + mov bp, [bp+var_A] + call es:dword_13352 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_85BB +; --------------------------------------------------------------------------- + +loc_84EE: ; CODE XREF: sub_8419+95j + ; DATA XREF: seg000:85E0o + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_851D +; --------------------------------------------------------------------------- + +loc_84FD: ; CODE XREF: sub_8419+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_8517 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_8517 + jmp short loc_8537 +; --------------------------------------------------------------------------- + +loc_8517: ; CODE XREF: sub_8419+EEj sub_8419+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_851D: ; CODE XREF: sub_8419+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_84FD + +loc_8537: ; CODE XREF: sub_8419+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_7ECF + pop cx + pop cx + push ds + les bx, [bp+var_16] + mov ds, word ptr es:[bx+18h] + push word ptr [bp+var_16+2] + push word ptr [bp+var_16] + les bx, [bp+var_16] + call dword ptr es:[bx+1Ah] + pop cx + pop cx + pop ds + jmp short loc_85BB +; --------------------------------------------------------------------------- + +loc_8570: ; CODE XREF: sub_8419+95j + ; DATA XREF: seg000:85E2o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1C], ax + add [bp+var_12], 2 + les bx, [bp+var_4] + add bx, [bp+var_12] + mov ax, es:[bx] + mov [bp+var_1E], ds + mov [bp+var_20], ax + mov ax, word ptr [bp+var_4+2] + mov dx, [bp+var_20] + mov [bp+var_1E], ax + mov [bp+var_20], dx + push [bp+var_A] + push [bp+arg_0] + mov ax, [bp+var_1C] + add ax, [bp+var_E] + cwd + push dx + push ax + push [bp+var_1E] + push [bp+var_20] + call sub_8FEF + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_85BB: ; CODE XREF: sub_8419+90j sub_8419+95j ... + mov ax, [bp+var_8] + +loc_85BE: ; CODE XREF: sub_8419+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_85D2 + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_85D2 + jmp loc_8471 +; --------------------------------------------------------------------------- + +loc_85D2: ; CODE XREF: sub_8419+1ACj + ; sub_8419+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8419 endp + +; --------------------------------------------------------------------------- +off_85D8 dw offset loc_84B3 ; DATA XREF: sub_8419+95r + dw offset loc_85BB + dw offset loc_85BB + dw offset loc_85BB + dw offset loc_84EE + dw offset loc_8570 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Local_unwind proc far + +var_2 = word ptr -2 +arg_0 = word ptr 6 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + push [bp+arg_0] + push [bp+var_2] + call sub_8419 + pop cx + pop cx + pop di + pop si + mov sp, bp + pop bp + retf +__Local_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__Return_unwind proc far + +var_2 = word ptr -2 + + push bp + mov bp, sp + sub sp, 2 + push si + push di + mov ax, ss:14h + mov [bp+var_2], ax + xor ax, ax + push ax + push [bp+var_2] + call sub_8419 + pop cx + pop cx + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov ss:14h, ax + pop di + pop si + mov sp, bp + pop bp + retf +__Return_unwind endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_862E proc near ; 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_869C +; --------------------------------------------------------------------------- + +loc_8647: ; CODE XREF: sub_862E+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_8690 + xor ax, ax + push ax + les bx, [bp+arg_4] + push word ptr es:[bx+0Ch] + push [bp+var_6] + push [bp+var_8] + les bx, [bp+arg_4] + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + les bx, [bp+arg_4] + push word ptr es:[bx+6] + push word ptr es:[bx+4] + call sub_6D9D + add sp, 10h + or ax, ax + jz short loc_8698 + +loc_8690: ; CODE XREF: sub_862E+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_86AC +; --------------------------------------------------------------------------- + +loc_8698: ; CODE XREF: sub_862E+60j + add word ptr [bp+var_4], 10h + +loc_869C: ; CODE XREF: sub_862E+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8647 + xor dx, dx + xor ax, ax + +loc_86AC: ; CODE XREF: sub_862E+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_862E endp + +; --------------------------------------------------------------------------- + db 2 dup(2Ah), 42h, 2 dup(43h), 78h, 68h, 31h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__ExceptionHandler proc far ; 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_8746 + jmp loc_87EE +; --------------------------------------------------------------------------- + +loc_8746: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_8419 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_875F + jmp loc_8A21 +; --------------------------------------------------------------------------- + +loc_875F: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_8769 + jmp loc_8A21 +; --------------------------------------------------------------------------- + +loc_8769: ; 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_8784 + jmp loc_8A21 +; --------------------------------------------------------------------------- + +loc_8784: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_87C2 +; --------------------------------------------------------------------------- + +loc_8786: ; 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_6D9D + add sp, 10h + or ax, ax + jz short loc_87BE + jmp loc_8A21 +; --------------------------------------------------------------------------- + +loc_87BE: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_87C2: ; CODE XREF: __ExceptionHandler:loc_8784j + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8786 + mov ax, ss:14h + mov word ptr [bp+var_24+2], ax + mov bx, [bp+var_4] + mov ax, ss:[bx] + mov ss:14h, ax + nop + push cs + call near ptr ___call_unexpected +; --------------------------------------------------------------------------- + mov ax, word ptr [bp+var_24+2] + mov ss:14h, ax + jmp loc_8A21 +; --------------------------------------------------------------------------- + +loc_87EE: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_8A15 +; --------------------------------------------------------------------------- + +loc_87F8: ; 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_8829 + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_8829: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_8A2A[bx] + +loc_8830: ; DATA XREF: seg000:8A30o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_883E + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_883E: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_8848 + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_8848: ; 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_862E + add sp, 8 + mov word ptr [bp+var_24+2], dx + mov word ptr [bp+var_24], ax + mov ax, word ptr [bp+var_24] + or ax, word ptr [bp+var_24+2] + jnz short loc_8882 + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_8882: ; 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_88B6: ; 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_8419 + pop cx + pop cx + mov bx, [bp+var_4] + mov ax, [bp+var_2E] + mov ss:[bx+arg_6], ax + cmp word ptr [bp+var_20+2], 3 + jnz short loc_8908 + push [bp+var_16] + push [bp+var_26] + push [bp+var_28] + push word ptr [bp+var_C+2] + push word ptr [bp+var_C] + push [bp+var_4] + push word ptr [bp+var_24+2] + push word ptr [bp+var_24] + call sub_8173 + add sp, 10h + +loc_8908: ; 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_8A12 +; --------------------------------------------------------------------------- + +loc_8921: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:8A2Co + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_8936 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_8936 + jmp loc_8A12 +; --------------------------------------------------------------------------- + +loc_8936: ; 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_13356+2, dx + mov word ptr dword_13356, ax + mov ax, ds + mov es, ax + assume es:dseg + push si + mov si, [bp+var_1C] + push ds + mov ds, [bp+var_1A] + push bp + mov bp, [bp+var_16] + call es:dword_13356 + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_89CD +; --------------------------------------------------------------------------- + +loc_8998: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:8A2Eo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_89AC + cmp word ptr ss:[bx], 0FACEh + jnz short loc_89AC + jmp short loc_8A12 +; --------------------------------------------------------------------------- + +loc_89AC: ; 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_89CD: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_89EB + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_89E7 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_89E7: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_8A24 +; --------------------------------------------------------------------------- + +loc_89EB: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_89F3 + jmp short loc_8A12 +; --------------------------------------------------------------------------- + +loc_89F3: ; 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_88B6 +; --------------------------------------------------------------------------- + +loc_8A12: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_8A15: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_8A21 + jmp loc_87F8 +; --------------------------------------------------------------------------- + +loc_8A21: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_8A24: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_8A2A dw offset loc_8A12 ; DATA XREF: __ExceptionHandler+171r + dw offset loc_8921 + dw offset loc_8998 + dw offset loc_8830 + dw offset loc_8A12 + dw offset loc_8A12 + db 4 dup(0), 0C9h, 8Ah + dw seg seg000 + db 14h dup(0), 0D9h, 8Ah + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 4Eh, 8Ah + dw seg seg000 + db 2 dup(0), 4, 0, 6, 0, 3, 0, 36h, 8Ah + dw seg seg000 + db 6, 0, 4, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8A84 proc far ; CODE XREF: sub_8B71+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, 8A66h + 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_71F0 + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_8AD2 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_8AD2: ; CODE XREF: sub_8A84+43j + mov [bp+var_12], 0 + jmp short loc_8AE2 +; --------------------------------------------------------------------------- + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_8AE2: ; CODE XREF: sub_8A84+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_8A84 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8AF0 proc far ; CODE XREF: sub_8B71+DCp + ; sub_8B71+162p ... + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_C] + jmp short loc_8B5F +; --------------------------------------------------------------------------- + +loc_8AFD: ; CODE XREF: sub_8AF0+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_8B25 + les bx, [bp+var_4] + mov ax, es:[bx] + mov dx, word ptr [bp+var_4+2] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_8B25: ; CODE XREF: sub_8AF0+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_8B5F + push [bp+arg_10] + xor ax, ax + push ax + xor ax, ax + push ax + push cx + push word ptr [bp+var_8+2] + push word ptr [bp+var_8] + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + nop + push cs + call near ptr sub_8B71 + add sp, 10h + xor cx, cx + +loc_8B5F: ; CODE XREF: sub_8AF0+Bj sub_8AF0+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_8AFD + pop di + pop si + mov sp, bp + pop bp + retf +sub_8AF0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8B71 proc far ; CODE XREF: sub_8AF0+67p + ; sub_8B71+25Ep ... + +var_2A = word ptr -2Ah +var_28 = word ptr -28h +var_26 = word ptr -26h +var_24 = word ptr -24h +var_22 = dword ptr -22h +var_1E = word ptr -1Eh +var_1C = word ptr -1Ch +var_1A = word ptr -1Ah +var_18 = dword ptr -18h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 2Ah + push si + push di + cmp [bp+arg_C], 0 + jz short loc_8B88 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_8B8F +; --------------------------------------------------------------------------- + +loc_8B88: ; CODE XREF: sub_8B71+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_8B8F: ; CODE XREF: sub_8B71+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8BB1 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_8BCA + jnz short loc_8BB1 + cmp ax, [bp+var_1C] + jb short loc_8BCA + +loc_8BB1: ; CODE XREF: sub_8B71+2Cj sub_8B71+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_8A84 + add sp, 0Ah + jmp loc_8E36 +; --------------------------------------------------------------------------- + +loc_8BCA: ; CODE XREF: sub_8B71+37j sub_8B71+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_8C63 + +loc_8BF5: ; CODE XREF: sub_8B71+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_8C63 + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_8C5D + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_8C56 + jnz short loc_8C2C + cmp bx, [bp+var_1C] + jb short loc_8C56 + +loc_8C2C: ; CODE XREF: sub_8B71+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_8C46: ; CODE XREF: sub_8B71+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_8AF0 + add sp, 12h + jmp loc_8E36 +; --------------------------------------------------------------------------- + +loc_8C56: ; CODE XREF: sub_8B71+B2j sub_8B71+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_8C5D: ; CODE XREF: sub_8B71+A4j + add word ptr [bp+var_10], 8 + jmp short loc_8BF5 +; --------------------------------------------------------------------------- + +loc_8C63: ; CODE XREF: sub_8B71+82j sub_8B71+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_8C7C: ; CODE XREF: sub_8B71+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_8CF2 + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_8CEC + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_8CE5 + jnz short loc_8CB3 + cmp bx, [bp+var_1C] + jb short loc_8CE5 + +loc_8CB3: ; CODE XREF: sub_8B71+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_8AF0 + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_8CE2 + jmp loc_8E36 +; --------------------------------------------------------------------------- + +loc_8CE2: ; CODE XREF: sub_8B71+16Cj + jmp loc_8E16 +; --------------------------------------------------------------------------- + +loc_8CE5: ; CODE XREF: sub_8B71+139j + ; sub_8B71+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_8CEC: ; CODE XREF: sub_8B71+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_8C7C +; --------------------------------------------------------------------------- + +loc_8CF2: ; CODE XREF: sub_8B71+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_8D0B: ; CODE XREF: sub_8B71+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_8D45 + les bx, [bp+var_22] + mov ax, es:[bx+0Ah] + mov [bp+var_1E], ax + les bx, [bp+var_22] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_22+2], dx + mov word ptr [bp+var_22], ax + +loc_8D45: ; CODE XREF: sub_8B71+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_8D69 + jb short loc_8D5F + cmp bx, [bp+var_1C] + jnb short loc_8D69 + +loc_8D5F: ; CODE XREF: sub_8B71+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_8E2F +; --------------------------------------------------------------------------- + +loc_8D69: ; CODE XREF: sub_8B71+1E5j + ; sub_8B71+1ECj ... + les bx, [bp+var_18] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+4] + mov [bp+var_24], dx + mov [bp+var_26], ax + les bx, [bp+var_18] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov [bp+var_28], dx + mov [bp+var_2A], ax + cmp [bp+var_1E], 1 + jbe short loc_8DB5 + push [bp+arg_E] + push [bp+var_1A] + push [bp+var_1C] + les bx, [bp+var_18] + push word ptr es:[bx+2] + push word ptr es:[bx] + push [bp+var_24] + push [bp+var_26] + nop + push cs + call near ptr sub_8E3C + add sp, 0Eh + jmp short loc_8DD5 +; --------------------------------------------------------------------------- + +loc_8DB5: ; CODE XREF: sub_8B71+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_8B71 + add sp, 10h + +loc_8DD5: ; CODE XREF: sub_8B71+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_8DEE + jmp loc_8D69 +; --------------------------------------------------------------------------- + +loc_8DEE: ; CODE XREF: sub_8B71+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_8AF0 + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_8E36 + +loc_8E16: ; CODE XREF: sub_8B71:loc_8CE2j + push [bp+arg_E] + mov ax, 1 + push ax + xor ax, ax + push ax + push [bp+var_A] + push [bp+var_C] + push word ptr [bp+var_10+2] + push word ptr [bp+var_10] + jmp loc_8C46 +; --------------------------------------------------------------------------- + +loc_8E2F: ; CODE XREF: sub_8B71+1F5j + add word ptr [bp+var_18], 6 + jmp loc_8D0B +; --------------------------------------------------------------------------- + +loc_8E36: ; CODE XREF: sub_8B71+56j sub_8B71+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_8B71 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8E3C proc far ; CODE XREF: sub_8B71+23Cp + ; sub_8FEF+316p + +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h + + push bp + mov bp, sp + sub sp, 0Eh + push si + push di + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+0Ah] + mov [bp+var_6], ax + les bx, [bp+var_4] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+1Ah] + mov [bp+var_8], 0 + mov [bp+var_A], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jnz short loc_8E96 + mov bx, [bp+var_6] + xor cx, cx + mov dx, [bp+var_8] + mov ax, [bp+var_A] + call N_LXMUL@ + mov [bp+arg_A], dx + mov [bp+arg_8], ax + +loc_8E96: ; CODE XREF: sub_8E3C+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_8F26 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_8F13 +; --------------------------------------------------------------------------- + +loc_8EF4: ; CODE XREF: sub_8E3C+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_8F13: ; CODE XREF: sub_8E3C+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_8B71 + add sp, 10h + +loc_8F26: ; CODE XREF: sub_8E3C+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_8EF4 + pop di + pop si + mov sp, bp + pop bp + retf +sub_8E3C endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8F3E proc far ; CODE XREF: sub_8FEF+1B1p + ; sub_8FEF+2E4p + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov cx, [bp+arg_4] + mov bx, cx + mov dx, ss:[bx+2] + mov ax, ss:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov ax, es:[bx+8] + and ax, 50h + cmp ax, 50h ; 'P' + jnz short loc_8FE3 + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_8FE3 + les bx, [bp+var_4] + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + add ax, es:[bx+6] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + les bx, [bp+var_4] + test byte ptr es:[bx+9], 10h + jz short loc_8F9D + les bx, [bp+var_8] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], dx + jmp short loc_8FA6 +; --------------------------------------------------------------------------- + +loc_8F9D: ; CODE XREF: sub_8F3E+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_8FA6: ; CODE XREF: sub_8F3E+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_8FE3: ; CODE XREF: sub_8F3E+27j sub_8F3E+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_8F3E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8FEF proc near ; CODE XREF: sub_8419+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_9005 + jmp loc_93F2 +; --------------------------------------------------------------------------- + +loc_9005: ; CODE XREF: sub_8FEF+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_905E + les bx, [bp+arg_0] + les bx, es:[bx] + les bx, es:[bx+6] + mov ax, es:[bx+1Ah] + mov [bp+var_6], 0 + mov [bp+var_8], ax + +loc_905E: ; CODE XREF: sub_8FEF+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_9075 + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_93F4 +; --------------------------------------------------------------------------- + +loc_9075: ; CODE XREF: sub_8FEF+77j + cmp [bp+var_6], 0 + jg short loc_90A7 + jnz short loc_9083 + cmp [bp+var_8], 0 + ja short loc_90A7 + +loc_9083: ; CODE XREF: sub_8FEF+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_9095 + jmp loc_93F2 +; --------------------------------------------------------------------------- + +loc_9095: ; CODE XREF: sub_8FEF+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_920C +; --------------------------------------------------------------------------- + +loc_90A7: ; CODE XREF: sub_8FEF+8Aj sub_8FEF+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_90B3: ; CODE XREF: sub_8FEF+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_90C6 + sub word ptr [bp+var_C], 0Ah + jmp loc_920C +; --------------------------------------------------------------------------- + +loc_90C6: ; CODE XREF: sub_8FEF+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_90EE + jmp loc_91B8 +; --------------------------------------------------------------------------- + +loc_90EE: ; CODE XREF: sub_8FEF+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_9112 + jmp loc_91B8 +; --------------------------------------------------------------------------- + +loc_9112: ; CODE XREF: sub_8FEF+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_911F + jmp loc_91B8 +; --------------------------------------------------------------------------- + +loc_911F: ; CODE XREF: sub_8FEF+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_912C + jmp loc_91B8 +; --------------------------------------------------------------------------- + +loc_912C: ; CODE XREF: sub_8FEF+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_9145 + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_1C+2], ss + jmp short loc_9153 +; --------------------------------------------------------------------------- + +loc_9145: ; CODE XREF: sub_8FEF+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_9153: ; CODE XREF: sub_8FEF+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_917B + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_9184 +; --------------------------------------------------------------------------- + +loc_917B: ; CODE XREF: sub_8FEF+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_9184: ; CODE XREF: sub_8FEF+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_9195 + add word ptr [bp+var_1C], 4 + +loc_9195: ; CODE XREF: sub_8FEF+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_8F3E + add sp, 6 + mov word ptr [bp+var_1C+2], dx + mov word ptr [bp+var_1C], ax + mov dx, word ptr [bp+var_12+2] + mov ax, word ptr [bp+var_12] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_91B8: ; CODE XREF: sub_8FEF+FCj + ; sub_8FEF+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_91DD + les bx, [bp+var_16] + mov ax, es:[bx+0Ah] + mov [bp+var_18], ax + les bx, [bp+var_16] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16+2], dx + mov word ptr [bp+var_16], ax + +loc_91DD: ; CODE XREF: sub_8FEF+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_91FB + jnz short loc_920C + cmp ax, [bp+var_8] + jnb short loc_920C + +loc_91FB: ; CODE XREF: sub_8FEF+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_90B3 +; --------------------------------------------------------------------------- + +loc_920C: ; CODE XREF: sub_8FEF+B5j sub_8FEF+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_923B + les bx, [bp+var_C] + mov ax, es:[bx+6] + add ax, [bp+arg_A] + mov word ptr [bp+var_16], ss + jmp short loc_9249 +; --------------------------------------------------------------------------- + +loc_923B: ; CODE XREF: sub_8FEF+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_9249: ; CODE XREF: sub_8FEF+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_9255 + jmp loc_92DF +; --------------------------------------------------------------------------- + +loc_9255: ; CODE XREF: sub_8FEF+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_9287 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_9290 +; --------------------------------------------------------------------------- + +loc_9287: ; CODE XREF: sub_8FEF+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_9290: ; CODE XREF: sub_8FEF+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_92AE + add [bp+var_18], 4 + +loc_92AE: ; CODE XREF: sub_8FEF+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_92DF + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_92DF + test byte ptr [bp+var_16+2], 8 + jz short loc_92DF + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_8F3E + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_92DF: ; CODE XREF: sub_8FEF+263j + ; sub_8FEF+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_932D + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_930D + push [bp+arg_A] + push [bp+var_6] + push [bp+var_8] + push word ptr [bp+var_12+2] + push word ptr [bp+var_12] + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_8E3C + add sp, 0Eh + jmp short loc_932D +; --------------------------------------------------------------------------- + +loc_930D: ; CODE XREF: sub_8FEF+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_8B71 + add sp, 10h + +loc_932D: ; CODE XREF: sub_8FEF+2F4j + ; sub_8FEF+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_933B + jmp loc_93D9 +; --------------------------------------------------------------------------- + +loc_933B: ; CODE XREF: sub_8FEF+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_934A + sub word ptr [bp+driver], 4 + +loc_934A: ; CODE XREF: sub_8FEF+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_9399 + les bx, [bp+var_12] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_12+2], dx + mov word ptr [bp+var_12], ax + les bx, [bp+var_12] + mov ax, es:[bx+16h] + or ax, es:[bx+18h] + jz short loc_9386 + les bx, [bp+var_12] + push word ptr es:[bx+14h] + les bx, [bp+var_12] + push word ptr es:[bx+18h] + push word ptr es:[bx+16h] + jmp short loc_93B8 +; --------------------------------------------------------------------------- + +loc_9386: ; CODE XREF: sub_8FEF+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_93D9 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_93D7 +; --------------------------------------------------------------------------- + +loc_9399: ; CODE XREF: sub_8FEF+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_93C6 + les bx, [bp+var_12] + push word ptr es:[bx+12h] + les bx, [bp+var_12] + push word ptr es:[bx+10h] + push word ptr es:[bx+0Eh] + +loc_93B8: ; CODE XREF: sub_8FEF+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_73A8 + add sp, 0Ah + jmp short loc_93D9 +; --------------------------------------------------------------------------- + +loc_93C6: ; CODE XREF: sub_8FEF+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_93D9 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_93D7: ; CODE XREF: sub_8FEF+3A8j + pop cx + pop cx + +loc_93D9: ; CODE XREF: sub_8FEF+349j + ; sub_8FEF+39Bj ... + mov [bp+var_6], 0 + mov [bp+var_8], 0 + mov ax, word ptr [bp+var_C] + sub word ptr [bp+var_C], 0Ah + cmp ax, word ptr [bp+arg_0] + jbe short loc_93F2 + jmp loc_920C +; --------------------------------------------------------------------------- + +loc_93F2: ; CODE XREF: sub_8FEF+13j sub_8FEF+A3j ... + xor ax, ax + +loc_93F4: ; CODE XREF: sub_8FEF+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8FEF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__CurrExcContext proc far + +s1 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + mov ax, [bp+arg_0] + mov [bp+var_2], ax + cmp [bp+var_2], 0FFFFh + jz short loc_943D + mov bx, [bp+var_2] + mov dx, ss:[bx+4] + mov ax, ss:[bx+2] + add ax, 0FFF8h + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + mov ax, 8 + push ax ; n + push ds + mov ax, 19A3h + push ax ; s2 + push word ptr [bp+s1+2] + push word ptr [bp+s1] ; s1 + nop + push cs + call near ptr _memcmp + add sp, 0Ah + or ax, ax + jz short loc_9442 + +loc_943D: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_9449 +; --------------------------------------------------------------------------- + +loc_9442: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_9449: ; 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_94A5 + mov ax, 8 + push ax + nop + push cs + call near ptr @$bnew$qui ; operator new(uint) + pop cx + mov word ptr [bp+arg_0+2], dx + mov word ptr [bp+arg_0], ax + or ax, dx + jz short loc_94E3 + +loc_94A5: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 9A81h + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_2], 0 + mov [bp+src], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 9A63h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_94E3: ; 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_952E + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 9A81h + test dl, 1 + jz short loc_952E + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_952E: ; 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_69A4 + add sp, 8 + pop di + pop si + pop bp + retf +@typeinfo@0$beql$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::operator!=(typeinfo const &)const +@typeinfo@0$bneq$xqmx8typeinfo proc far + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + push [bp+arg_6] + push [bp+arg_4] + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr @typeinfo@0$beql$xqmx8typeinfo ; typeinfo::operator==(typeinfo &) + add sp, 8 + neg ax + sbb ax, ax + inc ax + pop di + pop si + pop bp + retf +@typeinfo@0$bneq$xqmx8typeinfo endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; typeinfo::before(typeinfo const &)const +@typeinfo@0before$xqmx8typeinfo proc far + +var_8 = dword ptr -8 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 8 + push si + push di + les bx, [bp+arg_0] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_9592 + xor ax, ax + jmp short loc_95EB +; --------------------------------------------------------------------------- + +loc_9592: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_95A4 + mov ax, 1 + jmp short loc_95EB +; --------------------------------------------------------------------------- + +loc_95A4: ; 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_95E9 + mov ax, 1 + jmp short loc_95EB +; --------------------------------------------------------------------------- + +loc_95E9: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_95EB: ; 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_697F + pop cx + pop cx + pop di + pop si + pop bp + retf +@typeinfo@0name$xqv endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __GetTypeInfo(int, int, int, int, int, __int32, int, int, int, int) +@__GetTypeInfo$qnvt1t1t1 proc far + +var_8 = dword ptr -8 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_C = word ptr 12h +arg_E = word ptr 14h + + push bp + mov bp, sp + sub sp, 8 + push si + push di + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov word ptr [bp+var_8+2], dx + mov word ptr [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_964D + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 401Ah + push ax ; src + push cs ; int + mov ax, 9A4Dh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_964D: ; 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_968E proc near ; CODE XREF: sub_968E+143p + ; sub_968E+1C4p ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +var_1C = dword ptr -1Ch +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = dword ptr 8 +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h +arg_10 = word ptr 14h +arg_12 = word ptr 16h +arg_14 = word ptr 18h +arg_16 = word ptr 1Ah +arg_18 = word ptr 1Ch +arg_1A = word ptr 1Eh +arg_1C = word ptr 20h +arg_1E = word ptr 22h + + push bp + mov bp, sp + sub sp, 20h + push si + push di + mov [bp+var_8], 0 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + mov [bp+var_E], 0 + mov ax, [bp+arg_14] + or ax, [bp+arg_16] + jz short loc_96C9 + push word ptr [bp+arg_4+2] + push word ptr [bp+arg_4] + push [bp+arg_16] + push [bp+arg_14] + push cs + call near ptr sub_69A4 + add sp, 8 + or ax, ax + jnz short loc_96D3 + +loc_96C9: ; CODE XREF: sub_968E+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_96DA + +loc_96D3: ; CODE XREF: sub_968E+39j + xor dx, dx + xor ax, ax + jmp loc_98CE +; --------------------------------------------------------------------------- + +loc_96DA: ; CODE XREF: sub_968E+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_96EC: ; CODE XREF: sub_968E+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_96F2: ; CODE XREF: sub_968E+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_970D + jmp loc_9896 +; --------------------------------------------------------------------------- + +loc_970D: ; CODE XREF: sub_968E+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_971A + jmp loc_988F +; --------------------------------------------------------------------------- + +loc_971A: ; CODE XREF: sub_968E+87j + cmp [bp+arg_1A], 0 + jz short loc_9734 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_9734 + mov ax, 1 + jmp short loc_9736 +; --------------------------------------------------------------------------- + +loc_9734: ; CODE XREF: sub_968E+90j sub_968E+9Fj + xor ax, ax + +loc_9736: ; CODE XREF: sub_968E+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_977D + les bx, [bp+var_14] + mov ax, es:[bx] + mov dx, word ptr [bp+var_14+2] + mov word ptr [bp+var_14+2], dx + mov word ptr [bp+var_14], ax + mov dx, word ptr [bp+var_1C+2] + mov ax, word ptr [bp+var_1C] + mov [bp+var_16], dx + mov [bp+var_18], ax + +loc_977D: ; CODE XREF: sub_968E+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_69A4 + add sp, 8 + or ax, ax + jnz short loc_97FF + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_97A1 + jmp loc_988F +; --------------------------------------------------------------------------- + +loc_97A1: ; CODE XREF: sub_968E+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_968E + add sp, 20h + mov [bp+var_1E], dx + mov [bp+var_20], ax + mov ax, [bp+var_20] + or ax, [bp+var_1E] + jnz short loc_97E8 + jmp loc_988F +; --------------------------------------------------------------------------- + +loc_97E8: ; CODE XREF: sub_968E+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_985C +; --------------------------------------------------------------------------- + +loc_97FF: ; CODE XREF: sub_968E+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_9820 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_988F + cmp ax, word ptr [bp+var_14] + jnz short loc_988F + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_98CE +; --------------------------------------------------------------------------- + +loc_9820: ; CODE XREF: sub_968E+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_985C + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push [bp+arg_18] + xor ax, ax + push ax + push ax + xor ax, ax + push ax + push ax + push [bp+arg_16] + push [bp+arg_14] + push [bp+arg_12] + push [bp+arg_10] + push word ptr [bp+var_1C+2] + push word ptr [bp+var_1C] + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + call sub_968E + add sp, 20h + or ax, dx + jz short loc_988F + +loc_985C: ; CODE XREF: sub_968E+16Fj + ; sub_968E+198j + cmp [bp+var_E], 0 + jz short loc_987A + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_987A + cmp ax, [bp+var_C] + jnz short loc_987A + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_988F +; --------------------------------------------------------------------------- + +loc_987A: ; CODE XREF: sub_968E+1D2j + ; sub_968E+1DDj ... + inc [bp+var_E] + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + mov [bp+var_A], dx + mov [bp+var_C], ax + mov ax, [bp+var_10] + mov [bp+var_8], ax + +loc_988F: ; CODE XREF: sub_968E+89j + ; sub_968E+110j ... + add word ptr [bp+var_4], 8 + jmp loc_96F2 +; --------------------------------------------------------------------------- + +loc_9896: ; CODE XREF: sub_968E+7Cj + cmp [bp+var_6], 0 + jnz short loc_98AF + inc [bp+var_6] + les bx, [bp+arg_4] + mov dx, word ptr [bp+arg_4+2] + mov ax, word ptr [bp+arg_4] + add ax, es:[bx+0Ah] + jmp loc_96EC +; --------------------------------------------------------------------------- + +loc_98AF: ; CODE XREF: sub_968E+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_98C8 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_98C8: ; CODE XREF: sub_968E+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_98CE: ; CODE XREF: sub_968E+49j + ; sub_968E+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_968E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __fastcall __far __DynamicCast(int, int, int, int, int, __int32, int, int, int, int, int) +@__DynamicCast$qnvt1t1t1i proc far + +var_16 = word ptr -16h +var_14 = word ptr -14h +var_12 = word ptr -12h +var_10 = word ptr -10h +var_E = word ptr -0Eh +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h +arg_C = word ptr 12h +arg_E = word ptr 14h +arg_10 = word ptr 16h + + push bp + mov bp, sp + sub sp, 16h + push si + push di + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_E] + mov ax, [bp+arg_C] + mov [bp+var_6], dx + mov [bp+var_8], ax + mov ax, [bp+arg_0] + or ax, [bp+arg_2] + jnz short loc_98FF + jmp loc_9A03 +; --------------------------------------------------------------------------- + +loc_98FF: ; 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_9955 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_69A4 + add sp, 8 + or ax, ax + jz short loc_995E + +loc_9955: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_9A33 +; --------------------------------------------------------------------------- + +loc_995E: ; 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_69A4 + add sp, 8 + or ax, ax + jnz short loc_99B7 + xor ax, ax + push ax + push ax + mov ax, 1 + push ax + lea ax, [bp+var_16] + push ax + push [bp+var_2] + push [bp+var_4] + push [bp+arg_2] + push [bp+arg_0] + push [bp+var_6] + push [bp+var_8] + xor ax, ax + push ax + push ax + push [bp+var_A] + push [bp+var_C] + push [bp+var_E] + push [bp+var_10] + call sub_968E + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jnz short loc_99FB + +loc_99B7: ; 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_968E + add sp, 20h + mov [bp+var_12], dx + mov [bp+var_14], ax + mov ax, [bp+var_14] + or ax, [bp+var_12] + jz short loc_9A03 + cmp [bp+var_16], 0 + jz short loc_9A03 + +loc_99FB: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_9A33 +; --------------------------------------------------------------------------- + +loc_9A03: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_9A2F + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + push ds + mov ax, 401Bh + push ax ; src + push cs ; int + mov ax, 9A39h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_9A2F: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_9A33: ; 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, 85h, 9Ah + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 85h, 9Ah + dw seg seg000 + db 4 dup(0), 0FEh, 94h + dw seg seg000 + db 8 ; Method + db 0 + db 3 ; Destructor/SafeFunction + db 0 + db 26h, 3 dup(0), 73h, 10h, 30h, 0, 34h, 0Dh dup(0), 1 + db 0, 1, 0, 0FEh, 94h + dw seg seg000 + db 5, 0, 38h, 0, 74h, 79h, 70h, 65h, 69h, 6Eh, 66h, 6Fh + db 0Eh dup(0) + +; =============== 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_A4F2:loc_A65Dp + +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_9AEA + 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_9AEA: ; 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_9B14 +; --------------------------------------------------------------------------- + +loc_9AF8: ; 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_9B14: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_9AF8 + push [bp+var_2] + nop + push cs + call near ptr sub_4DEE + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_9B3A + xor dx, dx + xor ax, ax + jmp loc_9BF0 +; --------------------------------------------------------------------------- + +loc_9B3A: ; 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_9B7D + 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_9B7D: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_9BCB + 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_9BBF +; --------------------------------------------------------------------------- + +loc_9B93: ; 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_9BBF: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_9B93 + +loc_9BCB: ; 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_9BF0: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_9C87 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_9CD9 db 0 ; DATA XREF: __exec+50w +byte_9CDA 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_9D58 db 0FFh, 0 ; DATA XREF: __exec+22Dr +word_9D5A dw 0 ; DATA XREF: __exec+1D0w +word_9D5C dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_9F58r ... +byte_9D5E 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_F3B6 + mov cs:word_9D5C, 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_9D83 + jmp loc_9F91 +; --------------------------------------------------------------------------- + +loc_9D83: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_9C87, 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_9CD9, al + +loc_9DB3: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_9DC4 + cmp al, 9 + jz short loc_9DC4 + cmp al, 0Dh + jz short loc_9DC4 + inc si + jmp short loc_9DB3 +; --------------------------------------------------------------------------- + +loc_9DC4: ; 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_9CDA, 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_F3BC, 3 + jnb short loc_9DE3 + sub bx, 280h + +loc_9DE3: ; 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_9DF8 + xor ax, ax + mov di, ax + jmp short loc_9E15 +; --------------------------------------------------------------------------- + +loc_9DF8: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_9E02: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_9E02 + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_9E15: ; 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_F3B6 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_9E3D + dec cs:byte_9D5E + inc ax + sub [bp+var_4], ax + +loc_9E3D: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 9C89h + +loc_9E45: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_9E45 + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 9BF8h + 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_9E87 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_9E93 + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_9E84 + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_9E84 + jmp short loc_9ECF +; --------------------------------------------------------------------------- + +loc_9E84: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_9E87: ; 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_9F91 +; --------------------------------------------------------------------------- + +loc_9E93: ; 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_9EAD: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_9EAD + 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_9EF9 +; --------------------------------------------------------------------------- + +loc_9ECF: ; 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_9EDB: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_9EDB + 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_9EF9: ; 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_9F0F + jmp loc_9E87 +; --------------------------------------------------------------------------- + +loc_9F0F: ; 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_9F26 + jmp loc_9E87 +; --------------------------------------------------------------------------- + +loc_9F26: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_9D5A, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 9BF8h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_9D5E, 0 + jnz short loc_9F58 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_9F91 + jmp short loc_9F5C +; --------------------------------------------------------------------------- + +loc_9F58: ; CODE XREF: __exec+1EDj + mov ax, cs:word_9D5C + +loc_9F5C: ; 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_9D5E, 0 + jnz short loc_9F8B + mov es, cs:word_9D5C + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_9F8B: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:byte_9D58 +; --------------------------------------------------------------------------- + +loc_9F91: ; 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_A8F1:loc_A962P + ; sub_A96C+53P ... + +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, 9D5Fh + push ax ; int + call sub_A4F2 + 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_4FD6+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_9FD6 + mov ax, 0FFFFh + jmp short loc_9FDC +; --------------------------------------------------------------------------- + +loc_9FD6: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_9FDC: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_F3B6 + xor di, di + push es + push word_F3B8 + nop + push cs + call near ptr sub_4DEE + pop bx + mov bx, ax + pop es + mov word ptr dword_10CEC, ax + mov word ptr dword_10CEC+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_A009 + nop + nop + jmp near ptr sub_3EC8 +; --------------------------------------------------------------------------- + +loc_A009: ; CODE XREF: seg000:A002j + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_A023 + +loc_A014: ; CODE XREF: seg000:A021j + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_A014 + +loc_A023: ; CODE XREF: seg000:A012j + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_10CEC+2 + mov word_F3B2, ax + mov ax, word ptr dword_10CEC + 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_E762 + db 4 dup(0), 3Dh, 0A0h + 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_A092 + 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_A090 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A094 +; --------------------------------------------------------------------------- + +loc_A090: ; CODE XREF: seg000:A07Fj + jmp short loc_A094 +; --------------------------------------------------------------------------- + +loc_A092: ; CODE XREF: seg000:A056j + xor ax, ax + +loc_A094: ; CODE XREF: seg000:A08Ej + ; seg000:loc_A090j + 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_E90A + dd byte_E8BC + db 4 dup(0), 0B5h, 1 + dw seg seg003 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 9Dh, 0A0h + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 0A9h, 0A0h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_A114 + 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_A112 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A116 +; --------------------------------------------------------------------------- + +loc_A112: ; CODE XREF: seg000:A101j + jmp short loc_A116 +; --------------------------------------------------------------------------- + +loc_A114: ; CODE XREF: seg000:A0D8j + xor ax, ax + +loc_A116: ; CODE XREF: seg000:A110j + ; seg000:loc_A112j + 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_A161 + 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_A15F + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A163 +; --------------------------------------------------------------------------- + +loc_A15F: ; CODE XREF: seg000:A14Ej + jmp short loc_A163 +; --------------------------------------------------------------------------- + +loc_A161: ; CODE XREF: seg000:A125j + xor ax, ax + +loc_A163: ; CODE XREF: seg000:A15Dj + ; seg000:loc_A15Fj + 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 +; --------------------------------------------------------------------------- +unk_A16C db 0 ; DATA XREF: seg000:A170o + db 0 + db 0 + db 0 + dd unk_A16C + db 0E2h, 0FFh, 0FDh, 0Bh + dw seg seg003 + db 4 dup(0), 0C3h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 76h, 0A1h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 7Eh, 0A1h, 6, 0 + db 5, 0, 1, 0, 96h, 0A1h, 0FDh, 0Bh + dw seg seg003 + db 4 dup(0), 0C3h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 0BAh, 0A1h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0C2h, 0A1h, 6, 0 + db 5, 0, 1, 0, 0DAh, 0A1h, 0FDh, 0Bh + dw seg seg003 + db 4 dup(0), 0C3h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FDh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Bh, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 0FEh, 0A1h + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 6, 0A2h, 6, 0, 5 + db 0, 1, 0, 1Eh, 0A2h, 4 dup(0), 42h, 0A2h + dw seg seg000 +byte_A24A db 0E2h, 0FFh, 49h, 0Bh ; DATA XREF: seg000:A258o + dw seg seg003 + dd byte_F2ED + dd 0 + dd byte_A24A+2 + db 0E2h, 0FFh, 4 dup(0), 5Eh, 0A2h + dw seg seg000 + db 0E2h, 0FFh, 49h, 0Bh + dw seg seg003 + dd byte_F1EB + db 4 dup(0), 68h, 0A2h + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 7Ah, 0A2h + dw seg seg000 +byte_A282 db 0E2h, 0FFh, 49h, 0Bh ; DATA XREF: seg000:A290o + dw seg seg003 + dd byte_F1EB + dd 0 + dd byte_A282+2 + 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_A312 + 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_A310 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A314 +; --------------------------------------------------------------------------- + +loc_A310: ; CODE XREF: seg000:A2FFj + jmp short loc_A314 +; --------------------------------------------------------------------------- + +loc_A312: ; CODE XREF: seg000:A2D6j + xor ax, ax + +loc_A314: ; CODE XREF: seg000:A30Ej + ; seg000:loc_A310j + 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_A35F + 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_A35D + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A361 +; --------------------------------------------------------------------------- + +loc_A35D: ; CODE XREF: seg000:A34Cj + jmp short loc_A361 +; --------------------------------------------------------------------------- + +loc_A35F: ; CODE XREF: seg000:A323j + xor ax, ax + +loc_A361: ; CODE XREF: seg000:A35Bj + ; seg000:loc_A35Dj + 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_A3AC + 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_A3AA + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_A3AE +; --------------------------------------------------------------------------- + +loc_A3AA: ; CODE XREF: seg000:A399j + jmp short loc_A3AE +; --------------------------------------------------------------------------- + +loc_A3AC: ; CODE XREF: seg000:A370j + xor ax, ax + +loc_A3AE: ; CODE XREF: seg000:A3A8j + ; seg000:loc_A3AAj + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_A3B2 proc far ; CODE XREF: _main+2FP + push si + push di + cmp byte_10D56, 0 + jz short loc_A3C5 + mov byte_10D56, 0 + mov al, byte_10D57 + jmp short loc_A3CA +; --------------------------------------------------------------------------- + +loc_A3C5: ; CODE XREF: sub_A3B2+7j + mov ax, 700h + int 21h ; DOS - DIRECT STDIN INPUT, NO ECHO + +loc_A3CA: ; CODE XREF: sub_A3B2+11j + mov ah, 0 + pop di + pop si + retf +sub_A3B2 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_10D56, 0 + jz short loc_A3DD + mov ax, 1 + jmp short loc_A3E2 +; --------------------------------------------------------------------------- + +loc_A3DD: ; 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_A3E2: ; 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_A3E5 proc far ; CODE XREF: sub_A4F2+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_A456 +; --------------------------------------------------------------------------- + +loc_A3FB: ; CODE XREF: sub_A3E5+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_54BB + pop cx + or ax, ax + jz short loc_A41A + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_A453 + jmp short loc_A45F +; --------------------------------------------------------------------------- + +loc_A41A: ; CODE XREF: sub_A3E5+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_A439 +; --------------------------------------------------------------------------- + +loc_A428: ; CODE XREF: sub_A3E5+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_A442 + inc word ptr [bp+var_8] + +loc_A439: ; CODE XREF: sub_A3E5+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_A428 + +loc_A442: ; CODE XREF: sub_A3E5+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_A453 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_A463 +; --------------------------------------------------------------------------- + +loc_A453: ; CODE XREF: sub_A3E5+31j sub_A3E5+64j + inc word ptr [bp+var_4] + +loc_A456: ; CODE XREF: sub_A3E5+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_A3FB + +loc_A45F: ; CODE XREF: sub_A3E5+33j + xor dx, dx + xor ax, ax + +loc_A463: ; CODE XREF: sub_A3E5+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_A3E5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_A469(int, int, char *pathname, char *src, int) +sub_A469 proc far ; CODE XREF: sub_A4F2+7Fp sub_A4F2+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_A4BD + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 1A18h + 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_A4EA + jmp short loc_A4E5 +; --------------------------------------------------------------------------- + +loc_A4BD: ; CODE XREF: sub_A469+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_A4EA + +loc_A4E5: ; CODE XREF: sub_A469+52j + mov ax, 1 + jmp short loc_A4EC +; --------------------------------------------------------------------------- + +loc_A4EA: ; CODE XREF: sub_A469+50j sub_A469+7Aj + xor ax, ax + +loc_A4EC: ; CODE XREF: sub_A469+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_A469 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_A4F2(int, char *s, int, int, int, int, int) +sub_A4F2 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_A50C + sub dx, 20h ; ' ' + +loc_A50C: ; CODE XREF: sub_A4F2+15j + cmp dx, 41h ; 'A' + jb short loc_A520 + cmp dx, 5Ah ; 'Z' + ja short loc_A520 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_A536 + +loc_A520: ; CODE XREF: sub_A4F2+1Dj sub_A4F2+22j + push ds + mov ax, 1A1Dh + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_A3E5 + add sp, 8 + or ax, dx + jz short loc_A53B + +loc_A536: ; CODE XREF: sub_A4F2+2Cj + mov [bp+arg_E], 0 + +loc_A53B: ; CODE XREF: sub_A4F2+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_616A + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_A59A + push [bp+arg_E] ; int + push ds + mov ax, 1A20h + 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_A469 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A581 + jmp loc_A605 +; --------------------------------------------------------------------------- + +loc_A581: ; CODE XREF: sub_A4F2+8Aj + push ds + mov ax, 1A21h + 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_A605 + jmp short loc_A600 +; --------------------------------------------------------------------------- + +loc_A59A: ; CODE XREF: sub_A4F2+68j + push [bp+arg_E] ; int + push ds + mov ax, 1A26h + 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_A469 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A605 + push [bp+arg_E] ; int + push ds + mov ax, 1A2Bh + 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_A469 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A605 + push [bp+arg_E] ; int + push ds + mov ax, 1A30h + 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_A469 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_A605 + +loc_A600: ; CODE XREF: sub_A4F2+A6j + mov [bp+var_1A], 1 + +loc_A605: ; CODE XREF: sub_A4F2+8Cj sub_A4F2+A4j ... + cmp [bp+var_18], 0 + jz short loc_A627 + cmp [bp+var_1A], 0 + jz short loc_A630 + push ds + mov ax, 1A35h + 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_A630 + +loc_A627: ; CODE XREF: sub_A4F2+117j + mov word_F3BE, 2 + jmp loc_A6F6 +; --------------------------------------------------------------------------- + +loc_A630: ; CODE XREF: sub_A4F2+11Dj + ; sub_A4F2+133j + cmp [bp+var_1A], 0 + jz short loc_A649 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 1A3Dh + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_A65D +; --------------------------------------------------------------------------- + +loc_A649: ; CODE XREF: sub_A4F2+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_A65D: ; CODE XREF: sub_A4F2+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_A677 + mov word_F3BE, 8 + jmp loc_A6F6 +; --------------------------------------------------------------------------- + +loc_A677: ; CODE XREF: sub_A4F2+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_A6A0 + mov word_F3BE, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + jmp short loc_A6F6 +; --------------------------------------------------------------------------- + +loc_A6A0: ; CODE XREF: sub_A4F2+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_A6B5 + mov dx, word ptr dword_10CEC+2 + mov ax, word ptr dword_10CEC + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_A6B5: ; CODE XREF: sub_A4F2+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_A6C9 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_A6CF +; --------------------------------------------------------------------------- + +loc_A6C9: ; CODE XREF: sub_A4F2+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_A6CF: ; CODE XREF: sub_A4F2+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_A6FB + mov word_F3BE, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4CBB + pop cx + pop cx + +loc_A6F6: ; CODE XREF: sub_A4F2+13Bj + ; sub_A4F2+182j ... + mov ax, 0FFFFh + jmp short loc_A746 +; --------------------------------------------------------------------------- + +loc_A6FB: ; CODE XREF: sub_A4F2+1EFj + call off_10830 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_A719 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_A71F +; --------------------------------------------------------------------------- + +loc_A719: ; CODE XREF: sub_A4F2+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_A71F: ; CODE XREF: sub_A4F2+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_4CBB + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_4CBB + add sp, 8 + mov ax, [bp+var_16] + +loc_A746: ; CODE XREF: sub_A4F2+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_A4F2 endp + +seg000 ends + +; =========================================================================== + +; Segment type: Pure code +seg001 segment byte public 'CODE' use16 + assume cs:seg001 + ;org 0Ch + 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_A74C proc near ; CODE XREF: _main+42p + +var_C = word ptr -0Ch +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = word ptr -4 + + enter 0Ch, 0 + push ds + push offset aMiko_cfg ; "MIKO.CFG" + call sub_A7A + push ss + lea ax, [bp+var_A] + push ax + push 0Ah + call sub_9C6 + call sub_95A + mov ax, [bp+var_4] + mov [bp+var_C], ax + mov word ptr dword_10DA4+2, ax + mov word ptr dword_10DA4, 0 + les bx, dword_10DA4 + mov al, [bp+var_A] + mov es:[bx+0Fh], al + mov al, [bp+var_9] + mov es:[bx+3Ah], al + mov al, [bp+var_8] + mov es:[bx+3Bh], al + mov al, [bp+var_7] + mov es:[bx+10h], al + mov al, [bp+var_6] + mov es:[bx+18h], al + mov al, [bp+var_5] + mov es:[bx+49h], al + cmp byte ptr es:[bx+3Ah], 6 + ja short loc_A7B5 + cmp byte ptr es:[bx+3Ah], 0 + jnz short loc_A7BE + +loc_A7B5: ; CODE XREF: sub_A74C+60j + les bx, dword_10DA4 + mov byte ptr es:[bx+3Ah], 3 + +loc_A7BE: ; CODE XREF: sub_A74C+67j + les bx, dword_10DA4 + cmp byte ptr es:[bx+3Bh], 2 + jbe short loc_A7CE + mov byte ptr es:[bx+3Bh], 2 + +loc_A7CE: ; CODE XREF: sub_A74C+7Bj + les bx, dword_10DA4 + cmp byte ptr es:[bx+10h], 3 + jb short loc_A7DE + mov byte ptr es:[bx+10h], 0 + +loc_A7DE: ; CODE XREF: sub_A74C+8Bj + les bx, dword_10DA4 + cmp byte ptr es:[bx+18h], 3 + jb short locret_A7EE + mov byte ptr es:[bx+18h], 0 + +locret_A7EE: ; CODE XREF: sub_A74C+9Bj + leave + retn +sub_A74C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A7F0 proc near ; CODE XREF: sub_A8F1+39p sub_A96C+33p ... + +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = byte ptr -2 + + enter 8, 0 + push ds + push offset aMiko_cfg ; "MIKO.CFG" + call sub_89A + push large 0 + push 0 + call sub_AB6 + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov [bp+var_8], al + mov al, es:[bx+3Ah] + mov [bp+var_7], al + mov al, es:[bx+3Bh] + mov [bp+var_6], al + mov al, es:[bx+10h] + mov [bp+var_5], al + mov al, es:[bx+18h] + mov [bp+var_4], al + mov al, es:[bx+49h] + mov [bp+var_3], al + push ss + lea ax, [bp+var_8] + push ax + push 6 + call sub_AF8 + push large 9 + push 0 + call sub_AB6 + mov al, [bp+var_8] + add al, [bp+var_7] + add al, [bp+var_6] + add al, [bp+var_5] + add al, [bp+var_4] + add al, [bp+var_3] + mov [bp+var_2], al + push ss + lea ax, [bp+var_2] + push ax + push 1 + call sub_AF8 + call sub_95A + leave + retn +sub_A7F0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A873 proc near ; CODE XREF: _main+10Ep + +var_A = byte ptr -0Ah +var_9 = byte ptr -9 +var_8 = byte ptr -8 +var_7 = byte ptr -7 +var_6 = byte ptr -6 +var_5 = byte ptr -5 +var_1 = byte ptr -1 + + enter 0Ah, 0 + lea ax, [bp+var_A] + push ss + push ax + push ds + push offset unk_F3D1 + mov cx, 0Ah + call SCOPY@ + push ds + push offset aMiko_cfg ; "MIKO.CFG" + call sub_89A + push large 0 + push 0 + call sub_AB6 + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov [bp+var_A], al + mov al, es:[bx+3Ah] + mov [bp+var_9], al + mov al, es:[bx+3Bh] + mov [bp+var_8], al + mov al, es:[bx+10h] + mov [bp+var_7], al + mov al, es:[bx+18h] + mov [bp+var_6], al + mov al, es:[bx+49h] + mov [bp+var_5], al + mov al, [bp+var_A] + add al, [bp+var_9] + add al, [bp+var_8] + add al, [bp+var_7] + add al, [bp+var_6] + add al, [bp+var_5] + mov [bp+var_1], al + push ss + lea ax, [bp+var_A] + push ax + push 0Ah + call sub_AF8 + call sub_95A + leave + retn +sub_A873 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A8F1 proc near ; CODE XREF: sub_AE96:loc_AF51p + push bp + mov bp, sp + les bx, dword_10DA4 + mov byte ptr es:[bx+11h], 0 + mov al, es:[bx+3Ah] + mov es:[bx+0Ch], al + mov al, es:[bx+3Bh] + mov es:[bx+0Eh], al + mov byte ptr es:[bx+12h], 30h ; '0' + mov byte ptr es:[bx+13h], 30h ; '0' + call sub_D708 + or ax, ax + jnz short loc_A96A + les bx, dword_10DA4 + mov byte ptr es:[bx+3Eh], 0 + call sub_CCC8 + call sub_A7F0 + call sub_1356 + push 20Ah + call sub_DC74 + call sub_E0AC + les bx, dword_10DA4 + cmp byte ptr es:[bx+1Ah], 0 + jnz short loc_A957 + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + jmp short loc_A962 +; --------------------------------------------------------------------------- + +loc_A957: ; CODE XREF: sub_A8F1+57j + push large 0 + push ds + push offset path ; "deb" + push ds + push offset path ; "deb" + +loc_A962: ; CODE XREF: sub_A8F1+64j + call _execl + add sp, 0Ch + +loc_A96A: ; CODE XREF: sub_A8F1+2Bj + pop bp + retn +sub_A8F1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A96C proc near ; CODE XREF: sub_AE96:loc_AF56p + push bp + mov bp, sp + les bx, dword_10DA4 + mov byte ptr es:[bx+11h], 6 + mov byte ptr es:[bx+0Ch], 3 + mov byte ptr es:[bx+0Eh], 2 + mov byte ptr es:[bx+12h], 30h ; '0' + mov byte ptr es:[bx+13h], 36h ; '6' + call sub_D708 + or ax, ax + jnz short loc_A9C7 + les bx, dword_10DA4 + mov byte ptr es:[bx+3Eh], 0 + call sub_CCC8 + call sub_A7F0 + call sub_1356 + push 20Ah + call sub_DC74 + call sub_E0AC + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + call _execl + add sp, 0Ch + +loc_A9C7: ; CODE XREF: sub_A96C+25j + pop bp + retn +sub_A96C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A9C9 proc near ; CODE XREF: _main+E0p + push bp + mov bp, sp + les bx, dword_10DA4 + mov byte ptr es:[bx+11h], 0 + mov byte ptr es:[bx+0Ch], 3 + mov byte ptr es:[bx+0Eh], 3 + inc byte ptr es:[bx+3Eh] + cmp byte ptr es:[bx+3Eh], 4 + jbe short loc_A9EF + mov byte ptr es:[bx+3Eh], 1 + +loc_A9EF: ; CODE XREF: sub_A9C9+1Fj + les bx, dword_10DA4 + mov al, es:[bx+3Eh] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 3 + ja short loc_AA6E + add bx, bx + jmp cs:off_AAAD[bx] + +loc_AA08: ; DATA XREF: seg001:off_AAADo + les bx, dword_10DA4 + mov byte ptr es:[bx+12h], 30h ; '0' + mov byte ptr es:[bx+13h], 33h ; '3' + mov byte ptr es:[bx+19h], 0 + mov byte ptr es:[bx+3Ch], 3 + jmp short loc_AA6E +; --------------------------------------------------------------------------- + +loc_AA22: ; CODE XREF: sub_A9C9+3Aj + ; DATA XREF: seg001:036Fo + les bx, dword_10DA4 + mov byte ptr es:[bx+12h], 31h ; '1' + mov byte ptr es:[bx+13h], 30h ; '0' + mov byte ptr es:[bx+19h], 0 + mov byte ptr es:[bx+3Ch], 0 + jmp short loc_AA6E +; --------------------------------------------------------------------------- + +loc_AA3C: ; CODE XREF: sub_A9C9+3Aj + ; DATA XREF: seg001:0371o + les bx, dword_10DA4 + mov byte ptr es:[bx+12h], 30h ; '0' + mov byte ptr es:[bx+13h], 32h ; '2' + mov byte ptr es:[bx+19h], 1 + mov byte ptr es:[bx+3Ch], 2 + jmp short loc_AA6E +; --------------------------------------------------------------------------- + +loc_AA56: ; CODE XREF: sub_A9C9+3Aj + ; DATA XREF: seg001:0373o + les bx, dword_10DA4 + mov byte ptr es:[bx+12h], 31h ; '1' + mov byte ptr es:[bx+13h], 31h ; '1' + mov byte ptr es:[bx+19h], 1 + mov byte ptr es:[bx+3Ch], 1 + +loc_AA6E: ; CODE XREF: sub_A9C9+36j sub_A9C9+57j ... + push 1 + call sub_666 + call sub_2922 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + call sub_CCC8 + call sub_A7F0 + call sub_1356 + call sub_E0AC + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + call _execl + add sp, 0Ch + pop bp + retn +sub_A9C9 endp + +; --------------------------------------------------------------------------- +off_AAAD dw offset loc_AA08 ; DATA XREF: sub_A9C9+3Ar + dw offset loc_AA22 + dw offset loc_AA3C + dw offset loc_AA56 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AAB5 proc near ; CODE XREF: sub_AE96+3Cp + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+arg_2] + mov ax, si + imul ax, 14h + add ax, 0E0h ; 'à' + mov di, ax + push 100h + push ax + push large 800010h + call sub_E378 + push 0C0h ; 'À' + push [bp+arg_0] + call sub_10D2 + mov [bp+var_2], si + mov bx, si + cmp bx, 5 + ja short loc_AB59 + add bx, bx + jmp cs:off_ABCB[bx] + +loc_AAF3: ; DATA XREF: seg001:off_ABCBo + push large 11000E0h + push 0Ah + call far ptr loc_DC92 + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov ah, 0 + add ax, 16h + mov [bp+var_2], ax + jmp short loc_AB59 +; --------------------------------------------------------------------------- + +loc_AB12: ; CODE XREF: sub_AAB5+39j + ; DATA XREF: seg001:048Do + cmp byte_13286, 0 + jnz short loc_AB24 + push large 0C0000Ch + call sub_10D2 + +loc_AB24: ; CODE XREF: sub_AAB5+62j + push large 11000F4h + push 0Bh + jmp short loc_AB54 +; --------------------------------------------------------------------------- + +loc_AB2E: ; CODE XREF: sub_AAB5+39j + ; DATA XREF: seg001:048Fo + push large 1100108h + push 0Ch + jmp short loc_AB54 +; --------------------------------------------------------------------------- + +loc_AB38: ; CODE XREF: sub_AAB5+39j + ; DATA XREF: seg001:0491o + push large 110011Ch + push 0Dh + jmp short loc_AB54 +; --------------------------------------------------------------------------- + +loc_AB42: ; CODE XREF: sub_AAB5+39j + ; DATA XREF: seg001:0493o + push large 1100130h + push 0Eh + jmp short loc_AB54 +; --------------------------------------------------------------------------- + +loc_AB4C: ; CODE XREF: sub_AAB5+39j + ; DATA XREF: seg001:0495o + push large 1100144h + push 0Fh + +loc_AB54: ; CODE XREF: sub_AAB5+77j sub_AAB5+81j ... + call far ptr loc_DC92 + +loc_AB59: ; CODE XREF: sub_AAB5+35j sub_AAB5+5Bj + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + cmp [bp+arg_0], 8 + jnz short loc_ABC4 + push 100h + push di + push 23h ; '#' + call far ptr loc_E00E + push 160h + push di + push 24h ; '$' + call far ptr loc_E00E + push large 180h + push large 2800010h + call sub_E378 + mov word_FD7C, 2 + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+9Eh] ; s + call _strlen + add sp, 4 + shl ax, 3 + mov dx, 270h + sub dx, ax + push dx + push large 180000Fh + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+9Eh] + call far ptr loc_DEB4 + +loc_ABC4: ; CODE XREF: sub_AAB5+AEj + pop di + pop si + leave + retn 4 +sub_AAB5 endp + +; --------------------------------------------------------------------------- + db 0 +off_ABCB dw offset loc_AAF3 ; DATA XREF: sub_AAB5+39r + dw offset loc_AB12 + dw offset loc_AB2E + dw offset loc_AB38 + dw offset loc_AB42 + dw offset loc_AB4C + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ABD7 proc near ; CODE XREF: sub_B052+37p + ; sub_B052+1FBp ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + push di + mov di, 0E0h ; 'à' + mov ax, [bp+arg_2] + shl ax, 4 + add ax, 0E0h ; 'à' + mov [bp+var_4], ax + cmp [bp+arg_2], 7 + jnz short loc_ABF7 + mov [bp+var_4], 154h + +loc_ABF7: ; CODE XREF: sub_ABD7+19j + push 0E0h ; 'à' + push [bp+var_4] + push large 0C00010h + call sub_E378 + +loc_AC08: ; CODE XREF: sub_AAB5+39j + push 0C0h ; 'À' + push [bp+arg_0] + call sub_10D2 + mov bx, [bp+arg_2] + cmp bx, 7 + ja loc_AD9A + add bx, bx + jmp cs:off_AE18[bx] + +loc_AC24: ; DATA XREF: seg001:off_AE18o + push large 0E000E0h + push 10h + call far ptr loc_DC92 + push large 14000E0h + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov ah, 0 + add ax, 15h + push ax + call far ptr loc_DC92 + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov ah, 0 + add ax, 6 + +loc_AC57: ; CODE XREF: sub_ABD7+11Dj + ; sub_ABD7+16Aj ... + mov si, ax + jmp loc_AD9A +; --------------------------------------------------------------------------- + +loc_AC5C: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06DAo + push large 0E000F0h + push 11h + call far ptr loc_DC92 + push large 14000F0h + les bx, dword_10DA4 + mov al, es:[bx+3Ah] + mov ah, 0 + push ax + call far ptr loc_DC92 + mov si, 0Ah + jmp loc_AD9A +; --------------------------------------------------------------------------- + +loc_AC85: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06DCo + push large 0E00100h + push 12h + call far ptr loc_DC92 + push large 1400100h + les bx, dword_10DA4 + mov al, es:[bx+3Bh] + mov ah, 0 + push ax + call far ptr loc_DC92 + mov si, 0Bh + jmp loc_AD9A +; --------------------------------------------------------------------------- + +loc_ACAE: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06DEo + push large 0E00110h + push 13h + call far ptr loc_DC92 + les bx, dword_10DA4 + cmp byte ptr es:[bx+10h], 0 + jnz short loc_ACCB + mov ax, 1Ch + jmp short loc_ACD8 +; --------------------------------------------------------------------------- + +loc_ACCB: ; CODE XREF: sub_ABD7+EDj + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + add ax, 18h + +loc_ACD8: ; CODE XREF: sub_ABD7+F2j + mov [bp+var_2], ax + push large 1400110h + push ax + call far ptr loc_DC92 + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + add ax, 0Ch + jmp loc_AC57 +; --------------------------------------------------------------------------- + +loc_ACF7: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06E0o + push large 0E00120h + push 14h + call far ptr loc_DC92 + les bx, dword_10DA4 + cmp byte ptr es:[bx+18h], 0 + jnz short loc_AD14 + mov ax, 1Ch + jmp short loc_AD25 +; --------------------------------------------------------------------------- + +loc_AD14: ; CODE XREF: sub_ABD7+136j + les bx, dword_10DA4 + mov al, es:[bx+18h] + mov ah, 0 + push ax + mov ax, 1Fh + pop dx + sub ax, dx + +loc_AD25: ; CODE XREF: sub_ABD7+13Bj + mov [bp+var_2], ax + push large 1400120h + push ax + call far ptr loc_DC92 + les bx, dword_10DA4 + mov al, es:[bx+18h] + mov ah, 0 + add ax, 0Fh + jmp loc_AC57 +; --------------------------------------------------------------------------- + +loc_AD44: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06E2o + push large 1100130h + les bx, dword_10DA4 + mov al, es:[bx+49h] + mov ah, 0 + mov dx, 21h ; '!' + sub dx, ax + push dx + call far ptr loc_DC92 + mov di, 100h + les bx, dword_10DA4 + mov al, es:[bx+49h] + mov ah, 0 + add ax, 12h + jmp loc_AC57 +; --------------------------------------------------------------------------- + +loc_AD72: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06E4o + push large 1100140h + push 1Fh + call far ptr loc_DC92 + mov di, 100h + mov si, 14h + jmp short loc_AD9A +; --------------------------------------------------------------------------- + +loc_AD87: ; CODE XREF: sub_ABD7+48j + ; DATA XREF: seg001:06E6o + push large 1100154h + push 0Fh + call far ptr loc_DC92 + mov di, 100h + mov si, 15h + +loc_AD9A: ; CODE XREF: sub_ABD7+42j sub_ABD7+82j ... + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + cmp [bp+arg_0], 8 + jnz short loc_AE11 + push di + push [bp+var_4] + push 23h ; '#' + call far ptr loc_E00E + cmp di, 100h + jnz short loc_ADBD + lea ax, [di+60h] + push ax + jmp short loc_ADC0 +; --------------------------------------------------------------------------- + +loc_ADBD: ; CODE XREF: sub_ABD7+1DEj + push 180h + +loc_ADC0: ; CODE XREF: sub_ABD7+1E4j + push [bp+var_4] + push 24h ; '$' + call far ptr loc_E00E + push large 180h + push large 2800010h + call sub_E378 + mov word_FD7C, 2 + mov bx, si + shl bx, 2 + push large dword ptr [bx+9Eh] ; s + call _strlen + add sp, 4 + shl ax, 3 + mov dx, 270h + sub dx, ax + push dx + push large 180000Fh + mov bx, si + shl bx, 2 + push large dword ptr [bx+9Eh] + call far ptr loc_DEB4 + +loc_AE11: ; CODE XREF: sub_ABD7+1CDj + pop di + pop si + leave + retn 4 +sub_ABD7 endp + +; --------------------------------------------------------------------------- + db 0 +off_AE18 dw offset loc_AC24 ; DATA XREF: sub_ABD7+48r + dw offset loc_AC5C + dw offset loc_AC85 + dw offset loc_ACAE + dw offset loc_ACF7 + dw offset loc_AD44 + dw offset loc_AD72 + dw offset loc_AD87 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE28 proc near ; CODE XREF: sub_AE96+75p sub_AE96+83p ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + mov al, byte_F3DB + cbw + push ax + push 1 + call word_10DAA + mov al, [bp+arg_0] + add byte_F3DB, al + mov al, byte_F3DB + cbw + or ax, ax + jge short loc_AE4B + mov al, [bp+arg_2] + mov byte_F3DB, al + +loc_AE4B: ; CODE XREF: sub_AE28+1Bj + mov al, byte_F3DB + cmp al, [bp+arg_2] + jle short loc_AE58 + mov byte_F3DB, 0 + +loc_AE58: ; CODE XREF: sub_AE28+29j + cmp byte_13286, 0 + jnz short loc_AE76 + mov al, byte_F3DB + cbw + cmp ax, 1 + jnz short loc_AE76 + cmp byte_10DA8, 0 + jnz short loc_AE76 + mov al, [bp+arg_0] + add byte_F3DB, al + +loc_AE76: ; CODE XREF: sub_AE28+35j sub_AE28+3Ej ... + mov al, byte_F3DB + cbw + push ax + push 8 + call word_10DAA + call sub_E2E6 + push 1 + call sub_E2F2 + call sub_E32C + pop bp + retn 4 +sub_AE28 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AE96 proc near ; CODE XREF: _main:loc_B44Ep + push bp + mov bp, sp + push si + cmp byte_F446, 0 + jnz short loc_AEEB + mov byte_F3DD, 0 + mov byte_10DAC, 0 + push large 0C000E0h + push large 12000A0h + call sub_E378 + xor si, si + jmp short loc_AED6 +; --------------------------------------------------------------------------- + +loc_AEC0: ; CODE XREF: sub_AE96+43j + push si + mov al, byte_F3DB + cbw + cmp ax, si + jnz short loc_AECE + mov ax, 8 + jmp short loc_AED1 +; --------------------------------------------------------------------------- + +loc_AECE: ; CODE XREF: sub_AE96+31j + mov ax, 1 + +loc_AED1: ; CODE XREF: sub_AE96+36j + push ax + call sub_AAB5 + inc si + +loc_AED6: ; CODE XREF: sub_AE96+28j + cmp si, 6 + jl short loc_AEC0 + mov word_10DAA, 375h + mov byte_F446, 1 + mov byte_10DAC, 0 + +loc_AEEB: ; CODE XREF: sub_AE96+9j + cmp word_11A50, 0 + jnz short loc_AEF7 + mov byte_10DAC, 1 + +loc_AEF7: ; CODE XREF: sub_AE96+5Aj + cmp byte_10DAC, 0 + jz loc_B043 + test byte ptr word_11A50, 1 + jz short loc_AF0E + push 5 + push 0FFFFh + call sub_AE28 + +loc_AF0E: ; CODE XREF: sub_AE96+6Fj + test byte ptr word_11A50, 2 + jz short loc_AF1C + push 5 + push 1 + call sub_AE28 + +loc_AF1C: ; CODE XREF: sub_AE96+7Dj + test byte ptr word_11A50+1, 20h + jnz short loc_AF2C + test byte ptr word_11A50, 20h + jz loc_B02B + +loc_AF2C: ; CODE XREF: sub_AE96+8Bj + call sub_E2E6 + push 0Bh + call sub_E2F2 + call sub_E32C + mov al, byte_F3DB + cbw + mov bx, ax + cmp bx, 5 + ja loc_B02B + add bx, bx + jmp cs:off_B046[bx] + +loc_AF51: ; DATA XREF: seg001:off_B046o + call sub_A8F1 + jmp short loc_AFBD +; --------------------------------------------------------------------------- + +loc_AF56: ; CODE XREF: sub_AE96+B6j + ; DATA XREF: seg001:0908o + call sub_A96C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aOp1_pi ; "op1.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + mov word_F8C6, 64h ; 'd' + call far ptr loc_1DE0 + mov byte_F446, 0 + mov byte_10DA8, 0 + mov byte_F3DB, 1 + jmp loc_B043 +; --------------------------------------------------------------------------- + +loc_AFAD: ; CODE XREF: sub_AE96+B6j + ; DATA XREF: seg001:090Ao + call sub_CA94 + mov byte_F446, 0 + jmp short loc_B02B +; --------------------------------------------------------------------------- + +loc_AFB7: ; CODE XREF: sub_AE96+B6j + ; DATA XREF: seg001:090Co + call sub_C3B7 + call sub_CC97 + +loc_AFBD: ; CODE XREF: sub_AE96+BEj + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aOp1_pi ; "op1.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + mov word_F8C6, 64h ; 'd' + call far ptr loc_1DE0 + mov byte_F446, 0 + mov byte_10DA8, 0 + mov byte_F3DB, 0 + jmp short loc_B043 +; --------------------------------------------------------------------------- + +loc_B010: ; CODE XREF: sub_AE96+B6j + ; DATA XREF: seg001:090Eo + mov byte_F446, 0 + mov byte_10DA8, 1 + mov byte_F3DB, 0 + jmp short loc_B02B +; --------------------------------------------------------------------------- + +loc_B021: ; CODE XREF: sub_AE96+B6j + ; DATA XREF: seg001:0910o + mov byte_F446, 0 + mov byte_F3DC, 1 + +loc_B02B: ; CODE XREF: sub_AE96+92j sub_AE96+B0j ... + test byte ptr word_11A50+1, 10h + jz short loc_B037 + mov byte_F3DC, 1 + +loc_B037: ; CODE XREF: sub_AE96+19Aj + cmp word_11A50, 0 + jz short loc_B043 + mov byte_10DAC, 0 + +loc_B043: ; CODE XREF: sub_AE96+66j + ; sub_AE96+114j ... + pop si + pop bp + retn +sub_AE96 endp + +; --------------------------------------------------------------------------- +off_B046 dw offset loc_AF51 ; DATA XREF: sub_AE96+B6r + dw offset loc_AF56 + dw offset loc_AFAD + dw offset loc_AFB7 + dw offset loc_B010 + dw offset loc_B021 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B052 proc near ; CODE XREF: _main:loc_B45Cp + push bp + mov bp, sp + push si + cmp byte_F447, 0 + jnz short loc_B0A2 + mov byte_10DAD, 0 + push large 11000E0h + push large 0A00090h + call sub_E378 + xor si, si + jmp short loc_B08D +; --------------------------------------------------------------------------- + +loc_B077: ; CODE XREF: sub_B052+3Ej + push si + mov al, byte_F3DB + cbw + cmp ax, si + jnz short loc_B085 + mov ax, 8 + jmp short loc_B088 +; --------------------------------------------------------------------------- + +loc_B085: ; CODE XREF: sub_B052+2Cj + mov ax, 1 + +loc_B088: ; CODE XREF: sub_B052+31j + push ax + call sub_ABD7 + inc si + +loc_B08D: ; CODE XREF: sub_B052+23j + cmp si, 8 + jl short loc_B077 + mov word_10DAA, 497h + mov byte_F447, 1 + mov byte_10DAD, 0 + +loc_B0A2: ; CODE XREF: sub_B052+9j + cmp word_11A50, 0 + jnz short loc_B0AE + mov byte_10DAD, 1 + +loc_B0AE: ; CODE XREF: sub_B052+55j + cmp byte_10DAD, 0 + jz loc_B35B + test byte ptr word_11A50, 1 + jz short loc_B0C5 + push 7 + push 0FFFFh + call sub_AE28 + +loc_B0C5: ; CODE XREF: sub_B052+6Aj + test byte ptr word_11A50, 2 + jz short loc_B0D3 + push 7 + push 1 + call sub_AE28 + +loc_B0D3: ; CODE XREF: sub_B052+78j + test byte ptr word_11A50+1, 20h + jnz short loc_B0E3 + test byte ptr word_11A50, 20h + jz loc_B16F + +loc_B0E3: ; CODE XREF: sub_B052+86j + mov al, byte_F3DB + cbw + cmp ax, 6 + jz short loc_B0F4 + cmp ax, 7 + jz short loc_B14F + jmp loc_B178 +; --------------------------------------------------------------------------- + +loc_B0F4: ; CODE XREF: sub_B052+98j + les bx, dword_10DA4 + mov byte ptr es:[bx+0Fh], 1 + mov byte ptr es:[bx+3Ah], 3 + mov byte ptr es:[bx+3Bh], 2 + mov byte ptr es:[bx+10h], 2 + mov byte ptr es:[bx+18h], 1 + mov byte ptr es:[bx+49h], 1 + push 100h + call sub_DC74 + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + push ax + mov al, es:[bx+18h] + mov ah, 0 + push ax + call sub_DCE4 + push ds + push offset aOp ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + mov byte_F447, 0 + jmp short loc_B16F +; --------------------------------------------------------------------------- + +loc_B14F: ; CODE XREF: sub_B052+9Dj + call sub_E2E6 + push 0Bh + call sub_E2F2 + call sub_E32C + mov byte_F447, 0 + mov byte_F3DB, 4 + mov byte_10DA8, 0 + +loc_B16F: ; CODE XREF: sub_B052+8Dj sub_B052+FBj + test byte ptr word_11A50, 8 + jz loc_B250 + +loc_B178: ; CODE XREF: sub_B052+9Fj + mov al, byte_F3DB + cbw + mov bx, ax + cmp bx, 5 + ja loc_B246 + add bx, bx + jmp cs:off_B36B[bx] + +loc_B18C: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:off_B36Bo + les bx, dword_10DA4 + inc byte ptr es:[bx+0Fh] + cmp byte ptr es:[bx+0Fh], 3 + jbe loc_B246 + mov byte ptr es:[bx+0Fh], 0 + jmp loc_B246 +; --------------------------------------------------------------------------- + +loc_B1A5: ; CODE XREF: sub_B052+135j + ; sub_B052+216j + ; DATA XREF: ... + les bx, dword_10DA4 + inc byte ptr es:[bx+3Ah] + cmp byte ptr es:[bx+3Ah], 6 + jbe loc_B246 + mov byte ptr es:[bx+3Ah], 1 + jmp loc_B246 +; --------------------------------------------------------------------------- + +loc_B1BE: ; CODE XREF: sub_B052+135j + ; sub_B052+216j + ; DATA XREF: ... + les bx, dword_10DA4 + inc byte ptr es:[bx+3Bh] + cmp byte ptr es:[bx+3Bh], 2 + jbe short loc_B246 + mov byte ptr es:[bx+3Bh], 0 + jmp short loc_B246 +; --------------------------------------------------------------------------- + +loc_B1D4: ; CODE XREF: sub_B052+135j + ; sub_B052+216j + ; DATA XREF: ... + les bx, dword_10DA4 + inc byte ptr es:[bx+10h] + cmp byte ptr es:[bx+10h], 3 + jb short loc_B1E8 + mov byte ptr es:[bx+10h], 0 + +loc_B1E8: ; CODE XREF: sub_B052+18Fj + push 100h + call sub_DC74 + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + push ax + mov al, es:[bx+18h] + mov ah, 0 + push ax + call sub_DCE4 + push ds + push offset aOp ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + jmp short loc_B246 +; --------------------------------------------------------------------------- + +loc_B21C: ; CODE XREF: sub_B052+135j + ; sub_B052+216j + ; DATA XREF: ... + les bx, dword_10DA4 + cmp byte ptr es:[bx+18h], 0 + jnz short loc_B22E + mov byte ptr es:[bx+18h], 2 + jmp short loc_B246 +; --------------------------------------------------------------------------- + +loc_B22E: ; CODE XREF: sub_B052+1D3j + les bx, dword_10DA4 + dec byte ptr es:[bx+18h] + jmp short loc_B246 +; --------------------------------------------------------------------------- + +loc_B238: ; CODE XREF: sub_B052+135j + ; sub_B052+216j + ; DATA XREF: ... + les bx, dword_10DA4 + mov al, 1 + sub al, es:[bx+49h] + mov es:[bx+49h], al + +loc_B246: ; CODE XREF: sub_B052+12Fj + ; sub_B052+147j ... + mov al, byte_F3DB + cbw + push ax + push 8 + call sub_ABD7 + +loc_B250: ; CODE XREF: sub_B052+122j + test byte ptr word_11A50, 4 + jz loc_B339 + mov al, byte_F3DB + cbw + mov bx, ax + cmp bx, 5 + ja loc_B32F + add bx, bx + jmp cs:off_B35F[bx] + +loc_B26D: ; DATA XREF: seg001:off_B35Fo + les bx, dword_10DA4 + cmp byte ptr es:[bx+0Fh], 0 + jnz short loc_B27D + mov byte ptr es:[bx+0Fh], 4 + +loc_B27D: ; CODE XREF: sub_B052+224j + les bx, dword_10DA4 + dec byte ptr es:[bx+0Fh] + jmp loc_B32F +; --------------------------------------------------------------------------- + +loc_B288: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:0C21o + les bx, dword_10DA4 + cmp byte ptr es:[bx+3Ah], 1 + jnz short loc_B298 + mov byte ptr es:[bx+3Ah], 7 + +loc_B298: ; CODE XREF: sub_B052+23Fj + les bx, dword_10DA4 + dec byte ptr es:[bx+3Ah] + jmp loc_B32F +; --------------------------------------------------------------------------- + +loc_B2A3: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:0C23o + les bx, dword_10DA4 + cmp byte ptr es:[bx+3Bh], 0 + jnz short loc_B2B3 + mov byte ptr es:[bx+3Bh], 3 + +loc_B2B3: ; CODE XREF: sub_B052+25Aj + les bx, dword_10DA4 + dec byte ptr es:[bx+3Bh] + jmp short loc_B32F +; --------------------------------------------------------------------------- + +loc_B2BD: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:0C25o + les bx, dword_10DA4 + cmp byte ptr es:[bx+10h], 0 + jnz short loc_B2CF + mov byte ptr es:[bx+10h], 2 + jmp short loc_B2D7 +; --------------------------------------------------------------------------- + +loc_B2CF: ; CODE XREF: sub_B052+274j + les bx, dword_10DA4 + dec byte ptr es:[bx+10h] + +loc_B2D7: ; CODE XREF: sub_B052+27Bj + push 100h + call sub_DC74 + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + push ax + mov al, es:[bx+18h] + mov ah, 0 + push ax + call sub_DCE4 + push ds + push offset aOp ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + jmp short loc_B32F +; --------------------------------------------------------------------------- + +loc_B30B: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:0C27o + les bx, dword_10DA4 + inc byte ptr es:[bx+18h] + cmp byte ptr es:[bx+18h], 3 + jb short loc_B32F + mov byte ptr es:[bx+18h], 0 + jmp short loc_B32F +; --------------------------------------------------------------------------- + +loc_B321: ; CODE XREF: sub_B052+216j + ; DATA XREF: seg001:0C29o + les bx, dword_10DA4 + mov al, 1 + sub al, es:[bx+49h] + mov es:[bx+49h], al + +loc_B32F: ; CODE XREF: sub_B052+210j + ; sub_B052+233j ... + mov al, byte_F3DB + cbw + push ax + push 8 + call sub_ABD7 + +loc_B339: ; CODE XREF: sub_B052+203j + test byte ptr word_11A50+1, 10h + jz short loc_B34F + mov byte_F447, 0 + mov byte_F3DB, 4 + mov byte_10DA8, 0 + +loc_B34F: ; CODE XREF: sub_B052+2ECj + cmp word_11A50, 0 + jz short loc_B35B + mov byte_10DAD, 0 + +loc_B35B: ; CODE XREF: sub_B052+61j + ; sub_B052+302j + pop si + pop bp + retn +sub_B052 endp + +; --------------------------------------------------------------------------- + db 0 +off_B35F dw offset loc_B26D ; DATA XREF: sub_B052+216r + dw offset loc_B288 + dw offset loc_B2A3 + dw offset loc_B2BD + dw offset loc_B30B + dw offset loc_B321 +off_B36B dw offset loc_B18C ; DATA XREF: sub_B052+135r + dw offset loc_B1A5 + dw offset loc_B1BE + dw offset loc_B1D4 + dw offset loc_B21C + dw offset loc_B238 + +; =============== 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 + push si + xor si, si + call sub_24EE + call sub_2F48 + mov word_11A4E, 5208h + push ds + push offset aMSzlEd_dat ; "Œ¶‘z‹½ed.dat" + call sub_E0F4 + add sp, 4 + or ax, ax + jz short loc_B3AB + push ds + push offset asc_F7F7 ; "\n‹ó‚«ƒƒ‚ƒŠ•s‘«‚Å‚·Bƒƒ‚ƒŠ‹ó‚«‚ð‘‚₵"... + call sub_7B8 + call sub_A3B2 + +loc_B3AB: ; CODE XREF: _main+24j + call sub_1332 + push ds + push offset aGameft_bft ; "GAMEFT.bft" + call sub_1372 + call sub_A74C + les bx, dword_10DA4 + cmp byte ptr es:[bx+0Fh], 0FFh + jnz short loc_B3D3 + call sub_B9CE + les bx, dword_10DA4 + mov byte ptr es:[bx+0Fh], 1 + +loc_B3D3: ; CODE XREF: _main+4Ej + les bx, dword_10DA4 + mov al, es:[bx+10h] + mov ah, 0 + push ax + mov al, es:[bx+18h] + mov ah, 0 + push ax + call sub_DCE4 + push ds + push offset aMiko ; "miko" + push 0B00h + call sub_DDCA + les bx, dword_10DA4 + cmp byte ptr es:[bx+48h], 0 + jnz short loc_B40D + call sub_BC35 + les bx, dword_10DA4 + mov byte ptr es:[bx+48h], 1 + +loc_B40D: ; CODE XREF: _main+88j + les bx, dword_10DA4 + cmp byte ptr es:[bx+3Eh], 0 + jnz short loc_B420 + push 100h + call sub_DC74 + +loc_B420: ; CODE XREF: _main+9Fj + call sub_CCD2 + call sub_CBE3 + call sub_CC97 + mov byte_10DA8, 0 + mov byte_F3DC, 0 + mov byte_F3DB, 0 + jmp short loc_B47B +; --------------------------------------------------------------------------- + +loc_B43A: ; CODE XREF: _main+109j + call far ptr sub_E1DC + mov al, byte_10DA8 + cbw + or ax, ax + jz short loc_B44E + cmp ax, 1 + jz short loc_B45C + jmp short loc_B45F +; --------------------------------------------------------------------------- + +loc_B44E: ; CODE XREF: _main+CEj + call sub_AE96 + cmp si, 280h + jl short loc_B45F + call sub_A9C9 + jmp short loc_B45F +; --------------------------------------------------------------------------- + +loc_B45C: ; CODE XREF: _main+D3j + call sub_B052 + +loc_B45F: ; CODE XREF: _main+D5j _main+DEj ... + cmp word_11A50, 0 + jnz short loc_B469 + inc si + jmp short loc_B46B +; --------------------------------------------------------------------------- + +loc_B469: ; CODE XREF: _main+EDj + xor si, si + +loc_B46B: ; CODE XREF: _main+F0j + les bx, dword_10DA4 + inc dword ptr es:[bx+14h] + push 1 + call sub_DA3B + +loc_B47B: ; CODE XREF: _main+C1j + cmp byte_F3DC, 0 + jz short loc_B43A + call sub_CCC8 + call sub_A873 + call sub_1356 + call sub_24EE + call sub_DDB1 + call sub_2FBE + pop si + pop bp + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B49F proc near ; CODE XREF: sub_B572+50p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + push si + push di + mov ax, word_11E88 + shl ax, 4 + push ax + push 10h + call sub_E378 + push si + push di + push 2 + call sub_2D5A + push si + lea ax, [di+8] + push ax + push 6 + call sub_2D5A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B4F5 +; --------------------------------------------------------------------------- + +loc_B4DA: ; CODE XREF: sub_B49F+5Dj + push si + push di + push 0 + call sub_2D5A + push si + lea ax, [di+8] + push ax + push 3 + call sub_2D5A + inc [bp+var_2] + add si, 10h + +loc_B4F5: ; CODE XREF: sub_B49F+39j + mov ax, word_11E88 + dec ax + cmp ax, [bp+var_2] + jg short loc_B4DA + push si + push di + push 4 + call sub_2D5A + push si + lea ax, [di+8] + push ax + push 7 + call sub_2D5A + pop di + pop si + leave + retn 4 +sub_B49F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B519 proc near ; CODE XREF: sub_B65C+1Cp + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + push si + lea ax, [di+8] + push ax + mov ax, word_11E88 + shl ax, 4 + push ax + push 10h + call sub_E378 + push si + push di + push 6 + call sub_2D5A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B55A +; --------------------------------------------------------------------------- + +loc_B54B: ; CODE XREF: sub_B519+48j + push si + push di + push 3 + call sub_2D5A + inc [bp+var_2] + add si, 10h + +loc_B55A: ; CODE XREF: sub_B519+30j + mov ax, word_11E88 + dec ax + cmp ax, [bp+var_2] + jg short loc_B54B + push si + push di + push 7 + call sub_2D5A + pop di + pop si + leave + retn 4 +sub_B519 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B572 proc near ; CODE XREF: sub_B794+36p sub_B794+6Fp ... + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov ax, [bp+arg_2] + mov [bp+var_2], ax + mov si, [bp+arg_0] + push ax + push si + push 5 + call sub_2D5A + add [bp+var_2], 10h + mov di, 1 + jmp short loc_B5A3 +; --------------------------------------------------------------------------- + +loc_B593: ; CODE XREF: sub_B572+37j + push [bp+var_2] + push si + push 1 + call sub_2D5A + inc di + add [bp+var_2], 10h + +loc_B5A3: ; CODE XREF: sub_B572+1Fj + mov ax, word_11E88 + dec ax + cmp ax, di + jg short loc_B593 + push [bp+var_2] + push si + push 8 + call sub_2D5A + add si, 10h + mov di, 1 + jmp short loc_B5D0 +; --------------------------------------------------------------------------- + +loc_B5BE: ; CODE XREF: sub_B572+68j + push [bp+arg_2] + push si + call sub_B49F + push 1 + call sub_DA3B + inc di + add si, 8 + +loc_B5D0: ; CODE XREF: sub_B572+4Aj + mov ax, word_11E8A + add ax, ax + add ax, 0FFFDh + cmp ax, di + jg short loc_B5BE + pop di + pop si + leave + retn 4 +sub_B572 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B5E2 proc near ; CODE XREF: sub_B794+10p sub_B8B1+10p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + push si + push di + mov ax, word_11E88 + shl ax, 4 + push ax + push 20h ; ' ' + call sub_E378 + push si + push di + push 5 + call sub_2D5A + push si + lea ax, [di+10h] + push ax + push 6 + call sub_2D5A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B638 +; --------------------------------------------------------------------------- + +loc_B61D: ; CODE XREF: sub_B5E2+5Dj + push si + push di + push 1 + call sub_2D5A + push si + lea ax, [di+10h] + push ax + push 3 + call sub_2D5A + inc [bp+var_2] + add si, 10h + +loc_B638: ; CODE XREF: sub_B5E2+39j + mov ax, word_11E88 + dec ax + cmp ax, [bp+var_2] + jg short loc_B61D + push si + push di + push 8 + call sub_2D5A + push si + lea ax, [di+10h] + push ax + push 7 + call sub_2D5A + pop di + pop si + leave + retn 4 +sub_B5E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B65C proc near ; CODE XREF: sub_B794+F8p + ; sub_B794+10Dp ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + mov ax, word_11E8A + shl ax, 4 + add ax, 0FFF0h + add si, ax + mov di, 1 + jmp short loc_B686 +; --------------------------------------------------------------------------- + +loc_B674: ; CODE XREF: sub_B65C+34j + push [bp+arg_2] + push si + call sub_B519 + push 1 + call sub_DA3B + inc di + sub si, 8 + +loc_B686: ; CODE XREF: sub_B65C+16j + mov ax, word_11E8A + add ax, ax + add ax, 0FFFEh + cmp ax, di + jg short loc_B674 + pop di + pop si + pop bp + retn 4 +sub_B65C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B698 proc near ; CODE XREF: sub_B794+51p sub_B794+A2p ... + +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + mov si, 88h ; 'ˆ' + mov ax, [bp+arg_2] + or ax, ax + jz short loc_B6C8 + cmp ax, 1 + jz short loc_B6BB + cmp ax, 2 + jnz short loc_B6D3 + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0DB3h + jmp short loc_B6D3 +; --------------------------------------------------------------------------- + +loc_B6BB: ; CODE XREF: sub_B698+12j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0DC4h + add si, 10h + jmp short loc_B6D3 +; --------------------------------------------------------------------------- + +loc_B6C8: ; CODE XREF: sub_B698+Dj + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0DD5h + add si, 20h ; ' ' + +loc_B6D3: ; CODE XREF: sub_B698+17j sub_B698+21j ... + push 30h ; '0' + push si + push [bp+arg_0] + push large [bp+var_4] + call far ptr loc_DEB4 + pop si + leave + retn 4 +sub_B698 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B6E7 proc near ; CODE XREF: sub_B8B1+51p sub_B8B1+A2p ... + +var_4 = dword ptr -4 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + mov si, 88h ; 'ˆ' + mov ax, [bp+arg_2] + or ax, ax + jz short loc_B719 + cmp ax, 1 + jz short loc_B702 + cmp ax, 2 + jz short loc_B70C + jmp short loc_B724 +; --------------------------------------------------------------------------- + +loc_B702: ; CODE XREF: sub_B6E7+12j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0DE6h + jmp short loc_B724 +; --------------------------------------------------------------------------- + +loc_B70C: ; CODE XREF: sub_B6E7+17j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0DF7h + add si, 10h + jmp short loc_B724 +; --------------------------------------------------------------------------- + +loc_B719: ; CODE XREF: sub_B6E7+Dj + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E08h + add si, 20h ; ' ' + +loc_B724: ; CODE XREF: sub_B6E7+19j sub_B6E7+23j ... + push 30h ; '0' + push si + push [bp+arg_0] + push large [bp+var_4] + call far ptr loc_DEB4 + pop si + leave + retn 4 +sub_B6E7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B738 proc near ; CODE XREF: sub_B794+72p + push bp + mov bp, sp + push si + push di + mov di, 88h ; 'ˆ' + xor si, si + jmp short loc_B75D +; --------------------------------------------------------------------------- + +loc_B744: ; CODE XREF: sub_B738+28j + push 0D0h ; 'Ð' + push di + push 0Fh + mov bx, si + shl bx, 2 + push large dword ptr [bx+0A4Ch] + call far ptr loc_DEB4 + inc si + add di, 10h + +loc_B75D: ; CODE XREF: sub_B738+Aj + cmp si, 9 + jl short loc_B744 + pop di + pop si + pop bp + retn +sub_B738 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B766 proc near ; CODE XREF: sub_B8B1+72p + push bp + mov bp, sp + push si + push di + mov di, 88h ; 'ˆ' + xor si, si + jmp short loc_B78B +; --------------------------------------------------------------------------- + +loc_B772: ; CODE XREF: sub_B766+28j + push 0D0h ; 'Ð' + push di + push 0Fh + mov bx, si + shl bx, 2 + push large dword ptr [bx+0A70h] + call far ptr loc_DEB4 + inc si + add di, 10h + +loc_B78B: ; CODE XREF: sub_B766+Aj + cmp si, 9 + jl short loc_B772 + pop di + pop si + pop bp + retn +sub_B766 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B794 proc near ; CODE XREF: sub_B9CE+55p + +var_2 = word ptr -2 + + enter 2, 0 + mov word_11E88, 1Ch + push large 600050h + call sub_B5E2 + push large 700058h + push 0Fh + push ds + push offset aB@b@b@b@b@ogcp ; "@@@@@Žg—p‚·‚鉹Œ¹‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢‚"... + call far ptr loc_DEB4 + mov word_11E88, 0Ah + mov word_11E8A, 4 + push large 200080h + call sub_B572 + mov [bp+var_2], 0 + jmp short loc_B7EB +; --------------------------------------------------------------------------- + +loc_B7D4: ; CODE XREF: sub_B794+5Bj + push [bp+var_2] + cmp [bp+var_2], 2 + jnz short loc_B7E2 + mov ax, 0Fh + jmp short loc_B7E4 +; --------------------------------------------------------------------------- + +loc_B7E2: ; CODE XREF: sub_B794+47j + xor ax, ax + +loc_B7E4: ; CODE XREF: sub_B794+4Cj + push ax + call sub_B698 + inc [bp+var_2] + +loc_B7EB: ; CODE XREF: sub_B794+3Ej + cmp [bp+var_2], 3 + jl short loc_B7D4 + mov word_11E88, 19h + mov word_11E8A, 0Ah + push large 0C00080h + call sub_B572 + call sub_B738 + mov [bp+var_2], 2 + +loc_B80E: ; CODE XREF: sub_B794+C2j sub_B794+E4j + push 0 + call sub_DB62 + push 1 + call sub_DA3B + test byte ptr word_11A50+1, 20h + jnz short loc_B87A + test byte ptr word_11A50, 20h + jnz short loc_B87A + test byte ptr word_11A50, 1 + jz short loc_B851 + push [bp+var_2] + push 0 + call sub_B698 + cmp [bp+var_2], 2 + jnz short loc_B846 + mov [bp+var_2], 0 + jmp short loc_B849 +; --------------------------------------------------------------------------- + +loc_B846: ; CODE XREF: sub_B794+A9j + inc [bp+var_2] + +loc_B849: ; CODE XREF: sub_B794+B0j + push [bp+var_2] + push 0Fh + call sub_B698 + +loc_B851: ; CODE XREF: sub_B794+9Bj + test byte ptr word_11A50, 2 + jz short loc_B80E + push [bp+var_2] + push 0 + call sub_B698 + cmp [bp+var_2], 0 + jnz short loc_B86D + mov [bp+var_2], 2 + jmp short loc_B870 +; --------------------------------------------------------------------------- + +loc_B86D: ; CODE XREF: sub_B794+D0j + dec [bp+var_2] + +loc_B870: ; CODE XREF: sub_B794+D7j + push [bp+var_2] + push 0Fh + call sub_B698 + jmp short loc_B80E +; --------------------------------------------------------------------------- + +loc_B87A: ; CODE XREF: sub_B794+8Dj sub_B794+94j + mov word_11E88, 19h + mov word_11E8A, 0Ah + push large 0C00080h + call sub_B65C + mov word_11E88, 0Ah + mov word_11E8A, 4 + push large 200080h + call sub_B65C + les bx, dword_10DA4 + mov al, byte ptr [bp+var_2] + mov es:[bx+10h], al + leave + retn +sub_B794 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B8B1 proc near ; CODE XREF: sub_B9CE+66p + +var_2 = word ptr -2 + + enter 2, 0 + mov word_11E88, 1Ch + push large 600050h + call sub_B5E2 + push large 700058h + push 0Fh + push ds + push offset aB@b@b@b@m ; "@@@@Œø‰Ê‰¹‚ÉŽg—p‚·‚鉹Œ¹‚ð‘I‘ð‚µ‚Ä‚"... + call far ptr loc_DEB4 + mov word_11E88, 0Ah + mov word_11E8A, 4 + push large 200080h + call sub_B572 + mov [bp+var_2], 0 + jmp short loc_B908 +; --------------------------------------------------------------------------- + +loc_B8F1: ; CODE XREF: sub_B8B1+5Bj + push [bp+var_2] + cmp [bp+var_2], 1 + jnz short loc_B8FF + mov ax, 0Fh + jmp short loc_B901 +; --------------------------------------------------------------------------- + +loc_B8FF: ; CODE XREF: sub_B8B1+47j + xor ax, ax + +loc_B901: ; CODE XREF: sub_B8B1+4Cj + push ax + call sub_B6E7 + inc [bp+var_2] + +loc_B908: ; CODE XREF: sub_B8B1+3Ej + cmp [bp+var_2], 3 + jl short loc_B8F1 + mov word_11E88, 19h + mov word_11E8A, 0Ah + push large 0C00080h + call sub_B572 + call sub_B766 + mov [bp+var_2], 1 + +loc_B92B: ; CODE XREF: sub_B8B1+C2j sub_B8B1+E4j + push 0 + call sub_DB62 + push 1 + call sub_DA3B + test byte ptr word_11A50+1, 20h + jnz short loc_B997 + test byte ptr word_11A50, 20h + jnz short loc_B997 + test byte ptr word_11A50, 2 + jz short loc_B96E + push [bp+var_2] + push 0 + call sub_B6E7 + cmp [bp+var_2], 2 + jnz short loc_B963 + mov [bp+var_2], 0 + jmp short loc_B966 +; --------------------------------------------------------------------------- + +loc_B963: ; CODE XREF: sub_B8B1+A9j + inc [bp+var_2] + +loc_B966: ; CODE XREF: sub_B8B1+B0j + push [bp+var_2] + push 0Fh + call sub_B6E7 + +loc_B96E: ; CODE XREF: sub_B8B1+9Bj + test byte ptr word_11A50, 1 + jz short loc_B92B + push [bp+var_2] + push 0 + call sub_B6E7 + cmp [bp+var_2], 0 + jnz short loc_B98A + mov [bp+var_2], 2 + jmp short loc_B98D +; --------------------------------------------------------------------------- + +loc_B98A: ; CODE XREF: sub_B8B1+D0j + dec [bp+var_2] + +loc_B98D: ; CODE XREF: sub_B8B1+D7j + push [bp+var_2] + push 0Fh + call sub_B6E7 + jmp short loc_B92B +; --------------------------------------------------------------------------- + +loc_B997: ; CODE XREF: sub_B8B1+8Dj sub_B8B1+94j + mov word_11E88, 19h + mov word_11E8A, 0Ah + push large 0C00080h + call sub_B65C + mov word_11E88, 0Ah + mov word_11E8A, 4 + push large 200080h + call sub_B65C + les bx, dword_10DA4 + mov al, byte ptr [bp+var_2] + mov es:[bx+18h], al + leave + retn +sub_B8B1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B9CE proc near ; CODE XREF: _main+50p + push bp + mov bp, sp + mov word_F8C6, 0 + call far ptr loc_1DE0 + push ds + push offset aMswin_bft ; "mswin.bft" + call sub_2A86 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aMs_pi ; "ms.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + push 1 + call sub_622 + call sub_B794 + push 1 + call sub_DA3B + push 0 + call sub_156C + call sub_B8B1 + push 1 + call sub_666 + call sub_2922 + pop bp + retn +sub_B9CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA45 proc near ; CODE XREF: sub_BC35:loc_BE12p + +var_4 = word ptr -4 +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 + + enter 4, 0 + push si + push di + mov di, [bp+arg_6] + mov [bp+var_4], 0 + mov ax, 10h + imul [bp+arg_4] + mov [bp+arg_4], ax + mov ax, 10h + imul di + mov di, ax + mov si, 2B7Ch + mov [bp+var_2], 0 + jmp short loc_BABC +; --------------------------------------------------------------------------- + +loc_BA6D: ; CODE XREF: sub_BA45+7Cj + cmp byte ptr [si], 0 + jnz short loc_BAB6 + mov byte ptr [si], 1 + mov byte ptr [si+1], 0 + mov [si+2], di + mov ax, [bp+arg_4] + mov [si+4], ax + mov word ptr [si+8], 0 + mov word ptr [si+6], 0 + call sub_204E + mov bx, 0E0h ; 'à' + cwd + idiv bx + add dx, 40h ; '@' + mov [si+0Ah], dx + call sub_204E + mov [si+0Ch], al + mov al, [bp+arg_0] + mov [si+0Dh], al + inc [bp+var_4] + mov ax, [bp+var_4] + cmp ax, [bp+arg_2] + jge short loc_BAC3 + +loc_BAB6: ; CODE XREF: sub_BA45+2Bj + inc [bp+var_2] + add si, 0Eh + +loc_BABC: ; CODE XREF: sub_BA45+26j + cmp [bp+var_2], 100h + jl short loc_BA6D + +loc_BAC3: ; CODE XREF: sub_BA45+6Fj + pop di + pop si + leave + retn 8 +sub_BA45 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BAC9 proc near ; CODE XREF: sub_BC35+1E5p + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 8, 0 + push si + push di + mov si, 2B7Ch + xor di, di + jmp loc_BBE8 +; --------------------------------------------------------------------------- + +loc_BAD7: ; CODE XREF: sub_BAC9+123j + cmp byte ptr [si], 1 + jnz loc_BBE4 + inc byte ptr [si+1] + mov al, [si+1] + mov ah, 0 + mov bx, 4 + cwd + idiv bx + mov [bp+var_2], ax + mov al, [si+0Dh] + mov ah, 0 + add ax, [bp+var_2] + mov [bp+var_8], ax + cmp byte ptr [si+1], 28h ; '(' + jb short loc_BB0A + mov byte ptr [si], 0 + mov byte ptr [si+1], 0 + jmp loc_BBE4 +; --------------------------------------------------------------------------- + +loc_BB0A: ; CODE XREF: sub_BAC9+35j + cmp byte ptr [si+1], 10h + jnb short loc_BB29 + mov ax, [si+2] + mov bx, 10h + cwd + idiv bx + add ax, 0FFF8h + push ax + mov ax, [si+4] + cwd + idiv bx + add ax, 0FFF8h + jmp loc_BBDB +; --------------------------------------------------------------------------- + +loc_BB29: ; CODE XREF: sub_BAC9+45j + cmp byte ptr [si+1], 20h ; ' ' + jnb short loc_BB83 + cmp byte ptr [si+1], 10h + jnz short loc_BB3C + push 0Fh + call sub_E2F2 + +loc_BB3C: ; CODE XREF: sub_BAC9+6Aj + mov ax, [si+8] + mov [si+6], ax + mov ax, [si+0Ah] + add [si+8], ax + push word ptr [si+2] + push word ptr [si+8] + mov al, [si+0Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+648h] + call sub_DBB8 + add ax, 0FF80h + mov [bp+var_4], ax + push word ptr [si+4] + push word ptr [si+8] + mov al, [si+0Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+5C8h] + call sub_DBB8 + add ax, 0FF80h + jmp short loc_BBC8 +; --------------------------------------------------------------------------- + +loc_BB83: ; CODE XREF: sub_BAC9+64j + mov ax, [si+8] + mov [si+6], ax + mov ax, [si+0Ah] + add [si+8], ax + push word ptr [si+2] + push word ptr [si+8] + mov al, [si+0Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+648h] + call sub_DBB8 + add ax, 0FF00h + mov [bp+var_4], ax + push word ptr [si+4] + push word ptr [si+8] + mov al, [si+0Ch] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+5C8h] + call sub_DBB8 + add ax, 0FF00h + +loc_BBC8: ; CODE XREF: sub_BAC9+B8j + mov [bp+var_6], ax + mov ax, [bp+var_4] + mov bx, 10h + cwd + idiv bx + push ax + mov ax, [bp+var_6] + cwd + idiv bx + +loc_BBDB: ; CODE XREF: sub_BAC9+5Dj + push ax + push [bp+var_8] + call far ptr loc_2B66 + +loc_BBE4: ; CODE XREF: sub_BAC9+11j sub_BAC9+3Ej + inc di + add si, 0Eh + +loc_BBE8: ; CODE XREF: sub_BAC9+Bj + cmp di, 100h + jl loc_BAD7 + pop di + pop si + leave + retn +sub_BAC9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BBF4 proc near ; CODE XREF: sub_BC35+22Cp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + xor si, si + jmp short loc_BC25 +; --------------------------------------------------------------------------- + +loc_BBFD: ; CODE XREF: sub_BBF4+34j + xor di, di + jmp short loc_BC1F +; --------------------------------------------------------------------------- + +loc_BC01: ; CODE XREF: sub_BBF4+2Ej + mov bx, si + imul bx, 3 + mov al, [bx+di+2B4Ch] + mov ah, 0 + imul [bp+arg_0] + mov bx, 64h ; 'd' + cwd + idiv bx + mov bx, si + imul bx, 3 + mov [bx+di+1A96h], al + inc di + +loc_BC1F: ; CODE XREF: sub_BBF4+Bj + cmp di, 3 + jl short loc_BC01 + inc si + +loc_BC25: ; CODE XREF: sub_BBF4+7j + cmp si, 0Fh + jl short loc_BBFD + call far ptr loc_1DE0 + pop di + pop si + pop bp + retn 2 +sub_BBF4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC35 proc near ; CODE XREF: _main+8Ap + +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 8, 0 + push si + push di + mov [bp+var_2], 0 + mov [bp+var_3], 0 + mov [bp+var_4], 64h ; 'd' + mov word_F8C6, 0 + call far ptr loc_1DE0 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aZun00_pi ; "zun00.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + call sub_E428 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + xor si, si + jmp short loc_BCFD +; --------------------------------------------------------------------------- + +loc_BCA8: ; CODE XREF: sub_BC35+CBj + mov bx, si + imul bx, 3 + mov al, [bx+1A96h] + mov bx, si + imul bx, 3 + mov [bx+2B4Ch], al + mov bx, si + imul bx, 3 + mov al, [bx+1A97h] + mov bx, si + imul bx, 3 + mov [bx+2B4Dh], al + mov bx, si + imul bx, 3 + mov al, [bx+1A98h] + mov bx, si + imul bx, 3 + mov [bx+2B4Eh], al + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A96h], 0 + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A97h], 0 + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A98h], 0 + inc si + +loc_BCFD: ; CODE XREF: sub_BC35+71j + cmp si, 0Fh + jl short loc_BCA8 + push ds + push offset aLogo ; "logo" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + mov [bp+var_6], 2B7Ch + xor si, si + jmp short loc_BD2A +; --------------------------------------------------------------------------- + +loc_BD1E: ; CODE XREF: sub_BC35+F9j + mov bx, [bp+var_6] + mov word ptr [bx], 0 + inc si + add [bp+var_6], 0Eh + +loc_BD2A: ; CODE XREF: sub_BC35+E7j + cmp si, 100h + jl short loc_BD1E + push large 20000h + call sub_DD80 + mov word_F8C6, 64h ; 'd' + call far ptr loc_1DE0 + push ds + push offset aZun02_bft ; "zun02.bft" + call sub_2A86 + push ds + push offset aZun04_bft ; "zun04.bft" + call sub_2A86 + push ds + push offset aZun01_bft ; "zun01.bft" + call sub_2A86 + push ds + push offset aZun03_bft ; "zun03.bft" + call sub_2A86 + mov [bp+var_1], 0 + 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 far ptr sub_E1DC + xor di, di + jmp loc_BE87 +; --------------------------------------------------------------------------- + +loc_BD84: ; CODE XREF: sub_BC35+256j + call sub_E1E4 + cmp word_11A50, 0 + jz short loc_BD94 + mov [bp+var_2], 1 + +loc_BD94: ; CODE XREF: sub_BC35+159j + mov [bp+var_8], di + mov cx, 0Ch ; switch 12 cases + mov bx, offset word_BEA5 + +loc_BD9D: ; CODE XREF: sub_BC35+173j + mov ax, cs:[bx] + cmp ax, [bp+var_8] + jz short loc_BDAC + add bx, 2 + loop loc_BD9D + jmp short loc_BE15 ; default +; --------------------------------------------------------------------------- + +loc_BDAC: ; CODE XREF: sub_BC35+16Ej + jmp word ptr cs:[bx+18h] ; switch jump + +loc_BDB0: ; DATA XREF: seg001:177Do + push large 0B400B4h ; jumptable 0000BDAC case 0 + jmp short loc_BDEE +; --------------------------------------------------------------------------- + +loc_BDB8: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 1CC00DCh ; jumptable 0000BDAC case 16 + jmp short loc_BDF8 +; --------------------------------------------------------------------------- + +loc_BDC0: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 0DC00A0h ; jumptable 0000BDAC case 24 + jmp short loc_BDEE +; --------------------------------------------------------------------------- + +loc_BDC8: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 17C00F0h ; jumptable 0000BDAC case 32 + jmp short loc_BDF8 +; --------------------------------------------------------------------------- + +loc_BDD0: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 15400C8h ; jumptable 0000BDAC case 44 + jmp short loc_BDF8 +; --------------------------------------------------------------------------- + +loc_BDD8: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 11800AAh ; jumptable 0000BDAC case 48 + jmp short loc_BDEE +; --------------------------------------------------------------------------- + +loc_BDE0: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 17C0104h ; jumptable 0000BDAC case 52 + jmp short loc_BDF8 +; --------------------------------------------------------------------------- + +loc_BDE8: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 0C800BEh ; jumptable 0000BDAC cases 40,56 + +loc_BDEE: ; CODE XREF: sub_BC35+181j + ; sub_BC35+191j ... + push 14h + jmp short loc_BE04 +; --------------------------------------------------------------------------- + +loc_BDF2: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 1B800D2h ; jumptable 0000BDAC case 60 + +loc_BDF8: ; CODE XREF: sub_BC35+189j + ; sub_BC35+199j ... + push 14h + jmp short loc_BE10 +; --------------------------------------------------------------------------- + +loc_BDFC: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 14000C8h ; jumptable 0000BDAC case 64 + push 40h ; '@' + +loc_BE04: ; CODE XREF: sub_BC35+1BBj + push 0 + jmp short loc_BE12 +; --------------------------------------------------------------------------- + +loc_BE08: ; CODE XREF: sub_BC35:loc_BDACj + ; DATA XREF: seg001:177Do + push large 14000C8h ; jumptable 0000BDAC case 68 + push 40h ; '@' + +loc_BE10: ; CODE XREF: sub_BC35+1C5j + push 0Ah + +loc_BE12: ; CODE XREF: sub_BC35+1D1j + call sub_BA45 + +loc_BE15: ; CODE XREF: sub_BC35+175j + call sub_E490 ; default + call sub_BAC9 + call far ptr sub_E1DC + +loc_BE22: ; CODE XREF: sub_BC35+1F2j + cmp word_10E06, 2 + jb short loc_BE22 + mov word_10E06, 0 + mov dx, 0A6h ; '¦' + mov al, [bp+var_1] + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, [bp+var_1] + mov [bp+var_1], al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + cmp [bp+var_2], 0 + jnz short loc_BE66 + cmp di, 10h + jl short loc_BE5B + cmp [bp+var_3], 64h ; 'd' + jnb short loc_BE5B + mov al, [bp+var_3] + add al, 2 + mov [bp+var_3], al + +loc_BE5B: ; CODE XREF: sub_BC35+216j + ; sub_BC35+21Cj + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_BBF4 + jmp short loc_BE81 +; --------------------------------------------------------------------------- + +loc_BE66: ; CODE XREF: sub_BC35+211j + cmp [bp+var_4], 0 + jbe short loc_BE96 + mov al, [bp+var_4] + add al, 0FEh ; 'þ' + mov [bp+var_4], al + mov al, [bp+var_4] + mov ah, 0 + mov word_F8C6, ax + call far ptr loc_1DE0 + +loc_BE81: ; CODE XREF: sub_BC35+22Fj + call sub_E32C + inc di + +loc_BE87: ; CODE XREF: sub_BC35+14Cj + cmp di, 0AAh ; 'ª' + jl loc_BD84 + push 1 + call sub_666 + +loc_BE96: ; CODE XREF: sub_BC35+235j + call sub_2922 + call sub_E4C6 + pop di + pop si + leave + retn +sub_BC35 endp + +; --------------------------------------------------------------------------- + db 0 +word_BEA5 dw 0, 10h, 18h, 20h ; DATA XREF: sub_BC35+165o + dw 28h, 2Ch, 30h, 34h ; value table for switch statement + dw 38h, 3Ch, 40h, 44h + dw offset loc_BDB0 ; jump table for switch statement + dw offset loc_BDB8 + dw offset loc_BDC0 + dw offset loc_BDC8 + dw offset loc_BDE8 + dw offset loc_BDD0 + dw offset loc_BDD8 + dw offset loc_BDE0 + dw offset loc_BDE8 + dw offset loc_BDF2 + dw offset loc_BDFC + dw offset loc_BE08 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BED5 proc near ; CODE XREF: sub_BF41+19p sub_C3B7+C0p ... + +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_12DBC+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, 8 + push ax + mov al, [bp+arg_0] + mov ah, 0 + push ax + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+0EB6h] + call far ptr loc_DEB4 + mov dx, 0A6h ; '¦' + mov al, byte ptr word_12DBC+1 + out dx, al ; Interrupt Controller #2, 8259A + push 10h + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 4 + add ax, 8 + push ax + mov al, [bp+arg_0] + mov ah, 0 + push ax + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+0EB6h] + call far ptr loc_DEB4 + leave + retn 4 +sub_BED5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF41 proc near ; CODE XREF: sub_C3B7+6Bp + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + push si + xor si, si + jmp short loc_BF5E +; --------------------------------------------------------------------------- + +loc_BF49: ; CODE XREF: sub_BF41+20j + push si + mov al, [bp+arg_0] + mov ah, 0 + cmp ax, si + jnz short loc_BF57 + mov al, 3 + jmp short loc_BF59 +; --------------------------------------------------------------------------- + +loc_BF57: ; CODE XREF: sub_BF41+10j + mov al, 5 + +loc_BF59: ; CODE XREF: sub_BF41+14j + push ax + call sub_BED5 + inc si + +loc_BF5E: ; CODE XREF: sub_BF41+6j + cmp si, 18h + jl short loc_BF49 + pop si + pop bp + retn 2 +sub_BF41 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF68 proc near ; CODE XREF: sub_C3B7+86p + push bp + mov bp, sp + push si + push 7D00h + call sub_2752 + mov word_12DC0, ax + xor si, si + jmp short loc_BF90 +; --------------------------------------------------------------------------- + +loc_BF7B: ; CODE XREF: sub_BF68+2Cj + les bx, dword_1161A + add bx, si + mov eax, es:[bx] + mov es, word_12DC0 + mov es:[si], eax + add si, 4 + +loc_BF90: ; CODE XREF: sub_BF68+11j + cmp si, 7D00h + jl short loc_BF7B + pop si + pop bp + retn +sub_BF68 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF99 proc near ; CODE XREF: sub_C3B7+195p + push bp + mov bp, sp + push word_12DC0 + call sub_2856 + pop bp + retn +sub_BF99 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFA7 proc near ; CODE XREF: sub_C244+3p sub_C36F+13p ... + push bp + mov bp, sp + push si + push di + push ds + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ax, word_12DC0 + mov ds, ax + xor di, di + xor si, si + mov cx, 3E80h + rep movsw + pop ds + pop di + pop si + pop bp + retn +sub_BFA7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFC5 proc near ; CODE XREF: sub_C04E+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_C02A +; --------------------------------------------------------------------------- + +loc_BFD9: ; CODE XREF: sub_BFC5+6Bj + mov ax, [bp+var_2] + shl ax, 8 + cwd + idiv [bp+arg_2] + add al, [bp+arg_0] + mov [bp+var_3], al + push [bp+arg_8] + push [bp+arg_4] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+648h] + call sub_DBB8 + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di], ax + push [bp+arg_6] + push [bp+arg_4] + mov al, [bp+var_3] + mov ah, 0 + add ax, ax + mov bx, ax + push word ptr [bx+5C8h] + call sub_DBB8 + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di+2], ax + inc [bp+var_2] + +loc_C02A: ; CODE XREF: sub_BFC5+12j + mov ax, [bp+var_2] + cmp ax, [bp+arg_2] + jl short loc_BFD9 + 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_BFC5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C04E proc near ; CODE XREF: sub_C244+11p + push bp + mov bp, sp + push si + cmp byte_102AE, 0 + jnz loc_C0FD + xor si, si + jmp loc_C0F1 +; --------------------------------------------------------------------------- + +loc_C060: ; CODE XREF: sub_C04E+A6j + call sub_204E + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+39DCh], dx + call sub_204E + mov bx, 1900h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+39DEh], dx + call sub_204E + and ax, 7 + mov dx, 4 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+3A1Ch], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+3A1Ch], 0 + jnz short loc_C0B5 + mov bx, si + shl bx, 2 + mov word ptr [bx+3A1Ch], 1 + +loc_C0B5: ; CODE XREF: sub_C04E+5Aj + call sub_204E + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+3A1Eh], ax + call sub_204E + mov [si+3A5Ch], al + call sub_204E + and al, 7 + mov dl, 4 + sub dl, al + mov [si+3A6Ch], dl + cmp byte ptr [si+3A6Ch], 0 + jnz short loc_C0F0 + mov byte ptr [si+3A6Ch], 4 + +loc_C0F0: ; CODE XREF: sub_C04E+9Bj + inc si + +loc_C0F1: ; CODE XREF: sub_C04E+Fj + cmp si, 10h + jl loc_C060 + mov byte_102AE, 1 + +loc_C0FD: ; CODE XREF: sub_C04E+9j + xor si, si + jmp loc_C23A +; --------------------------------------------------------------------------- + +loc_C102: ; CODE XREF: sub_C04E+1EFj + push 39B4h + mov bx, si + shl bx, 2 + push word ptr [bx+39DCh] + mov bx, si + shl bx, 2 + push word ptr [bx+39DEh] + 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+3A5Ch] + push ax + call sub_BFC5 + mov bx, si + shl bx, 2 + mov ax, [bx+3A1Ch] + mov bx, si + shl bx, 2 + add [bx+39DCh], ax + mov bx, si + shl bx, 2 + mov ax, [bx+3A1Eh] + mov bx, si + shl bx, 2 + add [bx+39DEh], ax + mov al, [si+3A6Ch] + add [si+3A5Ch], al + mov bx, si + shl bx, 2 + cmp word ptr [bx+39DCh], 0 + jle short loc_C17C + mov bx, si + shl bx, 2 + cmp word ptr [bx+39DCh], 27Fh + jl short loc_C18E + +loc_C17C: ; CODE XREF: sub_C04E+11Fj + mov bx, si + shl bx, 2 + mov dx, 0FFFFh + mov ax, [bx+3A1Ch] + imul dx + mov [bx+3A1Ch], ax + +loc_C18E: ; CODE XREF: sub_C04E+12Cj + mov bx, si + shl bx, 2 + cmp word ptr [bx+39DEh], 1F40h + jl loc_C224 + call sub_204E + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+39DCh], dx + mov bx, si + shl bx, 2 + mov word ptr [bx+39DEh], 0F9C0h + call sub_204E + and ax, 0Fh + mov dx, 8 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+3A1Ch], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+3A1Ch], 0 + jnz short loc_C1E9 + mov bx, si + shl bx, 2 + mov word ptr [bx+3A1Ch], 1 + +loc_C1E9: ; CODE XREF: sub_C04E+18Ej + call sub_204E + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+3A1Eh], ax + call sub_204E + mov [si+3A5Ch], al + call sub_204E + and al, 7 + mov dl, 4 + sub dl, al + mov [si+3A6Ch], dl + cmp byte ptr [si+3A6Ch], 0 + jnz short loc_C224 + mov byte ptr [si+3A6Ch], 4 + +loc_C224: ; CODE XREF: sub_C04E+14Bj + ; sub_C04E+1CFj + push ds + push offset unk_12CF4 + mov ax, si + mov bx, 4 + cwd + idiv bx + add ax, 3 + push ax + call sub_DC2 + inc si + +loc_C23A: ; CODE XREF: sub_C04E+B1j + cmp si, 10h + jl loc_C102 + pop si + pop bp + retn +sub_C04E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C244 proc near ; CODE XREF: sub_C30E+10p sub_C30E+16p ... + push bp + mov bp, sp + call sub_BFA7 + push large 0CE000Fh + call sub_10D2 + call sub_C04E + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + mov dx, 0A4h ; '¤' + mov al, byte ptr word_12DBC+1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte ptr word_12DBC+1 + mov byte ptr word_12DBC+1, al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_E6DE + pop bp + retn +sub_C244 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C27B proc near ; CODE XREF: sub_C36F+10p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push ds + push offset a_music_txt ; "_MUSIC.TXT" + call sub_A7A + mov ax, [bp+arg_0] + imul ax, 320h + cwde + push eax + push 0 + call sub_AB6 + push ds + push offset unk_12DD2 + push 320h + call sub_9C6 + call sub_95A + xor si, si + jmp short loc_C2BA +; --------------------------------------------------------------------------- + +loc_C2AF: ; CODE XREF: sub_C27B+42j + mov bx, si + imul bx, 28h + mov byte ptr [bx+3AB8h], 0 + inc si + +loc_C2BA: ; CODE XREF: sub_C27B+32j + cmp si, 14h + jl short loc_C2AF + pop si + pop bp + retn 2 +sub_C27B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C2C4 proc near ; CODE XREF: sub_C30E+Dp sub_C30E+13p ... + push bp + mov bp, sp + push si + push large 1400040h + push 7 + push ds + push offset unk_12DD2 + call far ptr loc_DEB4 + mov si, 1 + jmp short loc_C306 +; --------------------------------------------------------------------------- + +loc_C2DE: ; CODE XREF: sub_C2C4+45j + mov bx, si + imul bx, 28h + cmp byte ptr [bx+3A92h], 3Bh ; ';' + jz short loc_C305 + push 140h + lea ax, [si+4] + shl ax, 4 + push ax + push 7 + push ds + mov ax, si + imul ax, 28h + add ax, 3A92h + push ax + call far ptr loc_DEB4 + +loc_C305: ; CODE XREF: sub_C2C4+24j + inc si + +loc_C306: ; CODE XREF: sub_C2C4+18j + cmp si, 14h + jl short loc_C2DE + pop si + pop bp + retn +sub_C2C4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C30E proc near ; CODE XREF: sub_C36F+2Ep + push bp + mov bp, sp + push si + mov si, 4 + jmp short loc_C328 +; --------------------------------------------------------------------------- + +loc_C317: ; CODE XREF: sub_C30E+1Dj + mov word_FD7C, si + call sub_C2C4 + call sub_C244 + call sub_C2C4 + call sub_C244 + inc si + +loc_C328: ; CODE XREF: sub_C30E+7j + cmp si, 8 + jl short loc_C317 + mov word_FD7C, 2 + call sub_C2C4 + call sub_C244 + call sub_C2C4 + pop si + pop bp + retn +sub_C30E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C33F proc near ; CODE XREF: sub_C36F+Ap + push bp + mov bp, sp + mov word_FD7C, 2 + push large 1400040h + push large 1400140h + call far ptr loc_E4F8 + call sub_C244 + push large 1400040h + push large 1400140h + call far ptr loc_E4F8 + pop bp + retn +sub_C33F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C36F proc near ; CODE XREF: sub_C3B7+8Fp + ; sub_C3B7+145p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + cmp byte_12DBE, 0 + jz short loc_C37C + call sub_C33F + +loc_C37C: ; CODE XREF: sub_C36F+8j + push [bp+arg_0] + call sub_C27B + call sub_BFA7 + push large 1400040h + push large 1400140h + call far ptr loc_E4F8 + cmp byte_12DBE, 0 + jz short loc_C3A2 + call sub_C30E + jmp short loc_C3B0 +; --------------------------------------------------------------------------- + +loc_C3A2: ; CODE XREF: sub_C36F+2Cj + mov byte_12DBE, 1 + call sub_C2C4 + call sub_C244 + call sub_C2C4 + +loc_C3B0: ; CODE XREF: sub_C36F+31j + call sub_BFA7 + pop bp + retn 2 +sub_C36F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C3B7 proc near ; CODE XREF: sub_AE96:loc_AFB7p + push bp + mov bp, sp + mov byte_12DBE, 0 + call sub_E6D0 + call sub_24EE + mov byte ptr word_12DBC+1, 1 + mov word_F8C6, 0 + call far ptr loc_1DE0 + 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_1532 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aMusic_pi ; "music.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + mov al, byte_102AF + mov byte ptr word_12DBC, al + push word_12DBC + call sub_BF41 + push 0 + call sub_156C + call sub_E428 + 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_BF68 + mov al, byte_102AF + mov ah, 0 + push ax + call sub_C36F + mov word_F8C6, 64h ; 'd' + call far ptr loc_1DE0 + +loc_C454: ; CODE XREF: sub_C3B7+ACj + ; sub_C3B7+172j + call far ptr sub_E1DC + cmp word_11A50, 0 + jz short loc_C465 + call sub_C244 + jmp short loc_C454 +; --------------------------------------------------------------------------- + +loc_C465: ; CODE XREF: sub_C3B7+A7j + ; sub_C3B7+179j + call far ptr sub_E1DC + test byte ptr word_11A50, 1 + jz short loc_C4A0 + push word_12DBC + push 5 + call sub_BED5 + cmp byte ptr word_12DBC, 0 + jbe short loc_C487 + dec byte ptr word_12DBC + jmp short loc_C48C +; --------------------------------------------------------------------------- + +loc_C487: ; CODE XREF: sub_C3B7+C8j + mov byte ptr word_12DBC, 17h + +loc_C48C: ; CODE XREF: sub_C3B7+CEj + cmp byte ptr word_12DBC, 16h + jnz short loc_C497 + dec byte ptr word_12DBC + +loc_C497: ; CODE XREF: sub_C3B7+DAj + push word_12DBC + push 3 + call sub_BED5 + +loc_C4A0: ; CODE XREF: sub_C3B7+B8j + test byte ptr word_11A50, 2 + jz short loc_C4D6 + push word_12DBC + push 5 + call sub_BED5 + cmp byte ptr word_12DBC, 17h + jnb short loc_C4BD + inc byte ptr word_12DBC + jmp short loc_C4C2 +; --------------------------------------------------------------------------- + +loc_C4BD: ; CODE XREF: sub_C3B7+FEj + mov byte ptr word_12DBC, 0 + +loc_C4C2: ; CODE XREF: sub_C3B7+104j + cmp byte ptr word_12DBC, 16h + jnz short loc_C4CD + inc byte ptr word_12DBC + +loc_C4CD: ; CODE XREF: sub_C3B7+110j + push word_12DBC + push 3 + call sub_BED5 + +loc_C4D6: ; CODE XREF: sub_C3B7+EEj + test byte ptr word_11A50, 20h + jnz short loc_C4E4 + test byte ptr word_11A50+1, 20h + jz short loc_C51D + +loc_C4E4: ; CODE XREF: sub_C3B7+124j + cmp byte ptr word_12DBC, 17h + jz short loc_C533 + push 220h + call sub_DC74 + mov al, byte ptr word_12DBC + mov byte_102AF, al + mov ah, 0 + push ax + call sub_C36F + mov al, byte ptr word_12DBC + mov ah, 0 + shl ax, 2 + mov bx, ax + push large dword ptr [bx+0F16h] + push 600h + call sub_DDCA + push 0 + call sub_DC74 + +loc_C51D: ; CODE XREF: sub_C3B7+12Bj + test byte ptr word_11A50+1, 10h + jnz short loc_C533 + cmp word_11A50, 0 + jnz loc_C454 + call sub_C244 + jmp loc_C465 +; --------------------------------------------------------------------------- + +loc_C533: ; CODE XREF: sub_C3B7+132j + ; sub_C3B7+16Bj ... + call far ptr sub_E1DC + cmp word_11A50, 0 + jz short loc_C544 + call sub_C244 + jmp short loc_C533 +; --------------------------------------------------------------------------- + +loc_C544: ; CODE XREF: sub_C3B7+186j + push 210h + call sub_DC74 + call sub_BF99 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_666 + call sub_E4C6 + push ds + push offset aOp_2 ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + pop bp + retn +sub_C3B7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C57A proc near ; CODE XREF: sub_C68C+95p sub_C733+59p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov si, 4 + jmp short loc_C5A7 +; --------------------------------------------------------------------------- + +loc_C584: ; CODE XREF: sub_C57A+31j + mov al, [si+3DB3h] + mov [bp+var_1], al + mov al, byte_130F3 + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, [si+3DB2h] + mov dl, byte_130F2 + add dl, [bp+var_1] + add al, dl + mov [si+3DB2h], al + inc si + +loc_C5A7: ; CODE XREF: sub_C57A+8j + cmp si, 0C3h ; 'Ã' + jl short loc_C584 + mov al, byte_130F2 + add [si+3DB2h], al + xor cx, cx + mov si, 4 + jmp short loc_C5C4 +; --------------------------------------------------------------------------- + +loc_C5BB: ; CODE XREF: sub_C57A+4Ej + mov al, [si+3DB2h] + mov ah, 0 + add cx, ax + inc si + +loc_C5C4: ; CODE XREF: sub_C57A+3Fj + cmp si, 0C4h ; 'Ä' + jl short loc_C5BB + cmp word_130F4, cx + jz short loc_C5D4 + mov al, 1 + jmp short loc_C624 +; --------------------------------------------------------------------------- + +loc_C5D4: ; CODE XREF: sub_C57A+54j + mov si, 4 + jmp short loc_C5FC +; --------------------------------------------------------------------------- + +loc_C5D9: ; CODE XREF: sub_C57A+86j + mov al, [si+3E77h] + mov [bp+var_1], al + mov al, byte_131B7 + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, [si+3E76h] + mov dl, byte_131B6 + add dl, [bp+var_1] + add al, dl + mov [si+3E76h], al + inc si + +loc_C5FC: ; CODE XREF: sub_C57A+5Dj + cmp si, 0C3h ; 'Ã' + jl short loc_C5D9 + mov al, byte_131B6 + add [si+3E76h], al + xor cx, cx + mov si, 4 + jmp short loc_C619 +; --------------------------------------------------------------------------- + +loc_C610: ; CODE XREF: sub_C57A+A3j + mov al, [si+3E76h] + mov ah, 0 + add cx, ax + +loc_C618: + inc si + +loc_C619: ; CODE XREF: sub_C57A+94j + cmp si, 0C4h ; 'Ä' + jl short loc_C610 + mov al, byte_131B8 + sub al, cl + +loc_C624: ; CODE XREF: sub_C57A+58j + pop si + leave + retn +sub_C57A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C627 proc near ; CODE XREF: sub_C68C:loc_C712p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov word_130F4, 0 + mov si, 4 + jmp short loc_C642 +; --------------------------------------------------------------------------- + +loc_C637: ; CODE XREF: sub_C627+1Fj + mov al, [si+3DB2h] + mov ah, 0 + add word_130F4, ax + inc si + +loc_C642: ; CODE XREF: sub_C627+Ej + cmp si, 0C4h ; 'Ä' + jl short loc_C637 + call sub_204E + mov byte_130F2, al + call sub_204E + mov byte_130F3, al + mov [bp+var_1], 0 + mov si, 0C3h ; 'Ã' + jmp short loc_C684 +; --------------------------------------------------------------------------- + +loc_C661: ; CODE XREF: sub_C627+60j + mov al, [si+3DB2h] + mov dl, byte_130F2 + add dl, [bp+var_1] + sub al, dl + mov [si+3DB2h], al + mov al, [si+3DB2h] + mov [bp+var_1], al + mov al, byte_130F3 + ror [bp+var_1], 3 + xor [bp+var_1], al + dec si + +loc_C684: ; CODE XREF: sub_C627+38j + cmp si, 4 + jge short loc_C661 + pop si + leave + retn +sub_C627 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C68C proc near ; CODE XREF: sub_C733:loc_C793p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + mov [bp+var_1], 0A9h ; '©' + xor si, si + jmp short loc_C700 +; --------------------------------------------------------------------------- + +loc_C69A: ; CODE XREF: sub_C68C+77j + mov byte_131A0, 19h + xor di, di + jmp short loc_C6AE +; --------------------------------------------------------------------------- + +loc_C6A3: ; CODE XREF: sub_C68C+25j + mov bx, si + shl bx, 3 + mov byte ptr [bx+di+3E10h], 0A0h ; ' ' + inc di + +loc_C6AE: ; CODE XREF: sub_C68C+15j + cmp di, 8 + jl short loc_C6A3 + or si, si + jnz short loc_C6C3 + mov bx, si + shl bx, 3 + mov byte ptr [bx+3E15h], 0A1h ; '¡' + jmp short loc_C6D2 +; --------------------------------------------------------------------------- + +loc_C6C3: ; CODE XREF: sub_C68C+29j + mov bx, si + shl bx, 3 + mov al, [bp+var_1] + mov [bx+3E14h], al + dec [bp+var_1] + +loc_C6D2: ; CODE XREF: sub_C68C+35j + mov ax, si + cwd + sub ax, dx + sar ax, 1 + mov dl, 0A5h ; '¥' + sub dl, al + mov [si+3E62h], dl + xor di, di + jmp short loc_C6F0 +; --------------------------------------------------------------------------- + +loc_C6E5: ; CODE XREF: sub_C68C+67j + mov bx, si + imul bx, 9 + mov byte ptr [bx+di+3DB6h], 0C4h ; 'Ä' + inc di + +loc_C6F0: ; CODE XREF: sub_C68C+57j + cmp di, 8 + jl short loc_C6E5 + mov bx, si + imul bx, 9 + mov byte ptr [bx+3DBEh], 0 + inc si + +loc_C700: ; CODE XREF: sub_C68C+Cj + cmp si, 0Ah + jl short loc_C69A + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_96A + xor si, si + jmp short loc_C725 +; --------------------------------------------------------------------------- + +loc_C712: ; CODE XREF: sub_C68C+9Cj + call sub_C627 + push ds + push offset byte_130F2 + push 0C4h ; 'Ä' + call sub_AF8 + call sub_C57A + inc si + +loc_C725: ; CODE XREF: sub_C68C+84j + cmp si, 0Ah + jl short loc_C712 + call sub_95A + pop di + pop si + leave + retn +sub_C68C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C733 proc near ; CODE XREF: sub_CA94+38p sub_CA94+95p ... + push bp + mov bp, sp + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_9AA + or ax, ax + jz short loc_C793 + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_A7A + mov al, byte_1327B + mov ah, 0 + imul ax, 0C4h + movzx eax, ax + push eax + push 0 + call sub_AB6 + push ds + push offset byte_130F2 + push 0C4h ; 'Ä' + call sub_9C6 + push large 310h + push 1 + call sub_AB6 + push ds + push offset byte_131B6 + push 0C4h ; 'Ä' + call sub_9C6 + call sub_95A + call sub_C57A + or al, al + jz short loc_C79A + +loc_C793: ; CODE XREF: sub_C733+Ej + call sub_C68C + mov al, 1 + pop bp + retn +; --------------------------------------------------------------------------- + +loc_C79A: ; CODE XREF: sub_C733+5Ej + mov al, 0 + pop bp + retn +sub_C733 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C79E proc near ; CODE XREF: sub_C8F5+78p + ; sub_C8F5+100p + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 4, 0 + push si + push di + mov di, [bp+arg_2] + mov si, [bp+arg_0] + mov [bp+var_4], 10h + mov bx, si + shl bx, 3 + mov al, [bx+3E17h] + mov ah, 0 + add ax, 0FF60h + cmp ax, 0Ah + jl short loc_C7E0 + push 8Ch ; 'Œ' + push di + mov bx, si + shl bx, 3 + mov al, [bx+3E17h] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push ax + call sub_2D5A + +loc_C7E0: ; CODE XREF: sub_C79E+22j + mov bx, si + shl bx, 3 + mov al, [bx+3EDBh] + mov ah, 0 + add ax, 0FF60h + cmp ax, 0Ah + jl short loc_C811 + push 1C0h + push di + mov bx, si + shl bx, 3 + mov al, [bx+3EDBh] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push ax + call sub_2D5A + +loc_C811: ; CODE XREF: sub_C79E+53j + push 9Ch ; 'œ' + push di + mov bx, si + shl bx, 3 + mov al, [bx+3E17h] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push dx + call sub_2D5A + push 1D0h + push di + mov bx, si + shl bx, 3 + mov al, [bx+3EDBh] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push dx + call sub_2D5A + mov [bp+var_2], 6 + jmp short loc_C899 +; --------------------------------------------------------------------------- + +loc_C854: ; CODE XREF: sub_C79E+FFj + mov ax, [bp+var_4] + add ax, 9Ch ; 'œ' + push ax + push di + mov bx, si + shl bx, 3 + add bx, [bp+var_2] + mov al, [bx+3E10h] + mov ah, 0 + add ax, 0FF60h + push ax + call sub_2D5A + mov ax, [bp+var_4] + add ax, 1D0h + push ax + push di + mov bx, si + shl bx, 3 + add bx, [bp+var_2] + mov al, [bx+3ED4h] + mov ah, 0 + add ax, 0FF60h + push ax + call sub_2D5A + dec [bp+var_2] + add [bp+var_4], 10h + +loc_C899: ; CODE XREF: sub_C79E+B4j + cmp [bp+var_2], 0 + jge short loc_C854 + pop di + pop si + leave + retn 4 +sub_C79E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C8A5 proc near ; CODE XREF: sub_C8F5+88p + ; sub_C8F5+10Ep ... + +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_2] + cmp [bp+arg_0], 0FFh + jz short loc_C8D0 + lea ax, [si+2] + push ax + lea ax, [di+2] + push ax + push [bp+arg_0] + push 0Eh + call sub_3E34 + push si + push di + push [bp+arg_0] + jmp short loc_C8E8 +; --------------------------------------------------------------------------- + +loc_C8D0: ; CODE XREF: sub_C8A5+10j + lea ax, [si+2] + push ax + lea ax, [di+2] + push ax + push large 0EF000Eh + call sub_3E34 + push si + push di + push 0EFh ; 'ï' + +loc_C8E8: ; CODE XREF: sub_C8A5+29j + push 7 + call sub_3E34 + pop di + pop si + pop bp + retn 6 +sub_C8A5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C8F5 proc near ; CODE XREF: sub_CA1A+34p sub_CA1A+3Dp ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + or si, si + jnz loc_C989 + push large 0A0062h + push 10h + mov ax, si + imul ax, 9 + add ax, 3DB6h + push ds + push ax + push 0Eh + call sub_3D8A + push large 80060h + push 10h + mov ax, si + imul ax, 9 + add ax, 3DB6h + push ds + push ax + push 7 + call sub_3D8A + push large 1420062h + push 10h + mov ax, si + imul ax, 9 + add ax, 3E7Ah + push ds + push ax + push 0Eh + call sub_3D8A + push large 1400060h + push 10h + mov ax, si + imul ax, 9 + add ax, 3E7Ah + push ds + push ax + push 7 + call sub_3D8A + push large 600000h + call sub_C79E + push large 1240060h + mov al, [si+3E62h] + mov ah, 0 + push ax + call sub_C8A5 + push large 2580060h + jmp loc_CA0A +; --------------------------------------------------------------------------- + +loc_C989: ; CODE XREF: sub_C8F5+Aj + mov ax, si + shl ax, 4 + add ax, 70h ; 'p' + mov di, ax + push 0Ah + add ax, 2 + push ax + push 10h + mov ax, si + imul ax, 9 + add ax, 3DB6h + push ds + push ax + push 0Eh + call sub_3D8A + push 8 + push di + push 10h + mov ax, si + imul ax, 9 + add ax, 3DB6h + push ds + push ax + push 2 + call sub_3D8A + push 142h + lea ax, [di+2] + push ax + push 10h + mov ax, si + imul ax, 9 + add ax, 3E7Ah + push ds + push ax + push 0Eh + call sub_3D8A + push 140h + push di + push 10h + mov ax, si + imul ax, 9 + add ax, 3E7Ah + push ds + push ax + push 2 + call sub_3D8A + push di + push si + call sub_C79E + push 124h + push di + mov al, [si+3E62h] + mov ah, 0 + push ax + call sub_C8A5 + push 258h + push di + +loc_CA0A: ; CODE XREF: sub_C8F5+91j + mov al, [si+3F26h] + mov ah, 0 + push ax + call sub_C8A5 + pop di + pop si + pop bp + retn 2 +sub_C8F5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA1A proc near ; CODE XREF: sub_CA94:loc_CADAp + ; sub_CA94+98p + push bp + mov bp, sp + push si + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push 0 + call sub_C8F5 + mov si, 1 + jmp short loc_CA5B +; --------------------------------------------------------------------------- + +loc_CA56: ; CODE XREF: sub_CA1A+44j + push si + call sub_C8F5 + inc si + +loc_CA5B: ; CODE XREF: sub_CA1A+3Aj + cmp si, 9 + jl short loc_CA56 + push 9 + call sub_C8F5 + push large 1F00178h + mov al, byte_1327B + mov ah, 0 + add ax, ax + add ax, 0Ah + push ax + call sub_2D5A + push large 2300178h + mov al, byte_1327B + mov ah, 0 + add ax, ax + add ax, 0Bh + push ax + call sub_2D5A + pop si + pop bp + retn +sub_CA1A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA94 proc near ; CODE XREF: sub_AE96:loc_AFADp + push bp + mov bp, sp + push 100h + call sub_DC74 + push ds + push offset aName ; "name" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + push 280h + call sub_DC74 + push 1 + call sub_666 + les bx, dword_10DA4 + assume es:nothing + mov al, es:[bx+0Fh] + mov byte_1327B, al + call sub_C733 + push 0 + push ds + push offset aHi01_pi ; "hi01.pi" + call sub_DAFD + +loc_CADA: ; CODE XREF: sub_CA94+C2j + call sub_CA1A + push 1 + call sub_622 + +loc_CAE4: ; CODE XREF: sub_CA94+A7j sub_CA94+AEj + call far ptr sub_E1DC + push 1 + call sub_DA3B + test byte ptr word_11A50+1, 20h + jnz short loc_CB58 + test byte ptr word_11A50, 20h + jnz short loc_CB58 + test byte ptr word_11A50+1, 10h + jnz short loc_CB58 + test byte ptr word_11A50+1, 20h + jnz short loc_CB58 + test byte ptr word_11A50, 4 + jz short loc_CB36 + cmp byte_1327B, 0 + jz short loc_CB36 + dec byte_1327B + mov word_F8C6, 0 + call far ptr loc_1DE0 + call sub_C733 + call sub_CA1A + push 1 + call sub_622 + +loc_CB36: ; CODE XREF: sub_CA94+7Dj sub_CA94+84j + test byte ptr word_11A50, 8 + jz short loc_CAE4 + cmp byte_1327B, 4 + jnb short loc_CAE4 + inc byte_1327B + mov word_F8C6, 0 + call far ptr loc_1DE0 + call sub_C733 + jmp short loc_CADA +; --------------------------------------------------------------------------- + +loc_CB58: ; CODE XREF: sub_CA94+61j sub_CA94+68j ... + push 201h + call sub_DC74 + push 1 + call sub_666 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aOp1_pi_0 ; "op1.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + push 1 + call sub_622 + +loc_CBB3: ; CODE XREF: sub_CA94+130j + call far ptr sub_E1DC + push 1 + call sub_DA3B + cmp word_11A50, 0 + jnz short loc_CBB3 + push 100h + call sub_DC74 + push ds + push offset aOp_0 ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + pop bp + retn +sub_CA94 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CBE3 proc near ; CODE XREF: _main+ACp + push bp + mov bp, sp + mov byte_1327B, 0 + jmp loc_CC6F +; --------------------------------------------------------------------------- + +loc_CBEE: ; CODE XREF: sub_CBE3+91j + call sub_C733 + or al, al + jnz loc_CC78 + mov al, byte_1327B + mov ah, 0 + mov dl, byte_131A0 + mov bx, ax + mov [bx+3F3Ch], dl + mov al, byte_1327B + mov ah, 0 + mov dl, byte_13264 + mov bx, ax + mov [bx+3F41h], dl + mov al, byte_1327B + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3F3Ch], 3 + jbe short loc_CC2F + mov al, byte_1327B + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3F3Ch], 0 + +loc_CC2F: ; CODE XREF: sub_CBE3+3Ej + mov al, byte_1327B + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+3F41h], 3 + jbe short loc_CC49 + mov al, byte_1327B + mov ah, 0 + mov bx, ax + mov byte ptr [bx+3F41h], 0 + +loc_CC49: ; CODE XREF: sub_CBE3+58j + cmp byte_1327B, 0 + jz short loc_CC6B + mov al, byte_1327B + mov ah, 0 + mov bx, ax + mov al, [bx+3F3Ch] + mov dl, byte_1327B + mov dh, 0 + mov bx, dx + or al, [bx+3F41h] + or byte_13286, al + +loc_CC6B: ; CODE XREF: sub_CBE3+6Bj + inc byte_1327B + +loc_CC6F: ; CODE XREF: sub_CBE3+8j + cmp byte_1327B, 5 + jb loc_CBEE + +loc_CC78: ; CODE XREF: sub_CBE3+10j + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov byte_1327B, al + push ds + push offset aScnum_bft ; "scnum.bft" + call sub_2A86 + push ds + push offset aHi_m_bft ; "hi_m.bft" + call sub_2A86 + pop bp + retn +sub_CBE3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CC97 proc near ; CODE XREF: sub_AE96+124p _main+AFp + push bp + mov bp, sp + push 0 + push ds + push offset aSft1_cd2 ; "sft1.cd2" + call sub_E63E + push 0Ah + push ds + push offset aSft2_cd2 ; "sft2.cd2" + call sub_E63E + push 23h ; '#' + push ds + push offset aCar_cd2 ; "car.cd2" + call sub_E63E + push 28h ; '(' + push ds + push offset aSl_cd2 ; "sl.cd2" + call far ptr sub_E638 + pop bp + retn +sub_CC97 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CCC8 proc near ; CODE XREF: sub_A8F1+36p sub_A96C+30p ... + push bp + mov bp, sp + call sub_E6D0 + pop bp + retn +sub_CCC8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CCD2 proc near ; CODE XREF: _main:loc_B420p + +var_4 = byte ptr -4 +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + push di + mov word_F8C6, 0 + call far ptr loc_1DE0 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0C0000Fh + call sub_10D2 + push large 0 + push large 4F018Fh + call sub_CA4 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 0 + call sub_156C + push 0 + push ds + push offset aOp5b_pi ; "op5b.pi" + call sub_DAFD + push 1 + push ds + push offset aOp4b_pi ; "op4b.pi" + call sub_DAFD + push 2 + push ds + push offset aOp3b_pi ; "op3b.pi" + call sub_DAFD + push 3 + push ds + push offset aOp2b_pi ; "op2b.pi" + call sub_DAFD + push 4 + push ds + push offset aOp1b_pi ; "op1b.pi" + call sub_DAFD + push 5 + push ds + push offset aOp0b_pi ; "op0b.pi" + call sub_DAFD + push 0 + call sub_DA50 + push 4 + call sub_622 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + xor si, si + mov [bp+var_3], 0 + mov di, 64h ; 'd' + mov [bp+var_4], 0 + jmp short loc_CDC4 +; --------------------------------------------------------------------------- + +loc_CD7A: ; CODE XREF: sub_CCD2+F5j + mov ax, si + mov bx, 4 + cwd + idiv bx + or dx, dx + jnz short loc_CDB0 + cmp [bp+var_3], 6 + jnb short loc_CDB0 + push large 26h ; '&' + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_DA75 + inc [bp+var_3] + mov dx, 0A6h ; '¦' + mov al, [bp+var_4] + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, [bp+var_4] + mov [bp+var_4], al + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + +loc_CDB0: ; CODE XREF: sub_CCD2+B2j sub_CCD2+B8j + mov word_F8C6, di + call far ptr loc_1DE0 + add di, 2 + push 1 + call sub_DA3B + inc si + +loc_CDC4: ; CODE XREF: sub_CCD2+A6j + cmp si, 1Ch + jl short loc_CD7A + mov word_F8C6, 0C8h ; 'È' + call far ptr loc_1DE0 + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push ds + push offset unk_11710 + push large [dword_116B4] + call sub_1618 + push ds + push offset unk_11758 + push large [dword_116B8] + call sub_1618 + push ds + push offset unk_117A0 + push large [dword_116BC] + call sub_1618 + push ds + push offset unk_117E8 + push large [dword_116C0] + call sub_1618 + push ds + push offset unk_11830 + push large [dword_116C4] + call sub_1618 + les bx, dword_10DA4 + cmp byte ptr es:[bx+3Eh], 0 + jnz short loc_CE50 + push ds + push offset aOp_1 ; "op" + push 600h + call sub_DDCA + push 0 + call sub_DC74 + +loc_CE50: ; CODE XREF: sub_CCD2+169j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aOp1_pi_1 ; "op1.pi" + call sub_DAFD + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + push 0 + call sub_156C + xor si, si + jmp short loc_CEAA +; --------------------------------------------------------------------------- + +loc_CE8B: ; CODE XREF: sub_CCD2+1DBj + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A96h], 0FFh + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A97h], 0FFh + mov bx, si + imul bx, 3 + mov byte ptr [bx+1A98h], 0FFh + inc si + +loc_CEAA: ; CODE XREF: sub_CCD2+1B7j + cmp si, 10h + jl short loc_CE8B + call far ptr loc_1DE0 + mov word_F8C6, 64h ; 'd' + call far ptr loc_1DE0 + xor si, si + mov [bp+var_3], 0F0h ; 'ð' + jmp short loc_CEE8 +; --------------------------------------------------------------------------- + +loc_CEC7: ; CODE XREF: sub_CCD2+219j + mov al, [bp+var_3] + mov byte_10DD6, al + mov byte_10DD7, al + mov byte_10DD8, al + call far ptr loc_1DE0 + push 1 + call sub_DA3B + inc si + mov al, [bp+var_3] + add al, 0F0h ; 'ð' + mov [bp+var_3], al + +loc_CEE8: ; CODE XREF: sub_CCD2+1F3j + cmp si, 0Fh + jl short loc_CEC7 + xor si, si + mov [bp+var_3], 0FCh ; 'ü' + jmp short loc_CF4E +; --------------------------------------------------------------------------- + +loc_CEF5: ; CODE XREF: sub_CCD2+27Fj + mov di, 1 + jmp short loc_CF34 +; --------------------------------------------------------------------------- + +loc_CEFA: ; CODE XREF: sub_CCD2+265j + mov [bp+var_2], 0 + jmp short loc_CF2D +; --------------------------------------------------------------------------- + +loc_CF01: ; CODE XREF: sub_CCD2+25Fj + mov bx, di + imul bx, 3 + add bx, [bp+var_2] + mov al, [bx+23A0h] + mov bx, di + imul bx, 3 + add bx, [bp+var_2] + cmp al, [bx+1A96h] + jnb short loc_CF2A + mov bx, di + imul bx, 3 + add bx, [bp+var_2] + mov al, [bp+var_3] + mov [bx+1A96h], al + +loc_CF2A: ; CODE XREF: sub_CCD2+247j + inc [bp+var_2] + +loc_CF2D: ; CODE XREF: sub_CCD2+22Dj + cmp [bp+var_2], 3 + jl short loc_CF01 + inc di + +loc_CF34: ; CODE XREF: sub_CCD2+226j + cmp di, 10h + jl short loc_CEFA + call far ptr loc_1DE0 + push 1 + call sub_DA3B + inc si + mov al, [bp+var_3] + add al, 0FCh ; 'ü' + mov [bp+var_3], al + +loc_CF4E: ; CODE XREF: sub_CCD2+221j + cmp si, 3Fh ; '?' + jl short loc_CEF5 + push 0 + call sub_DA50 + pop di + pop si + leave + retn +sub_CCD2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CF5E proc near ; CODE XREF: sub_D6B2+36p + +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 + + enter 0Ah, 0 + push si + push di + push 7D0h + call sub_2752 + mov word ptr dword_132BA+2, ax + mov word ptr dword_132BA, 0 + push 7D0h + call sub_2752 + mov word ptr dword_132BE+2, ax + mov word ptr dword_132BE, 0 + mov di, 0DC5h + mov [bp+var_8], 0DE9h + mov [bp+var_2], 0 + xor si, si + jmp loc_D050 +; --------------------------------------------------------------------------- + +loc_CF98: ; CODE XREF: sub_CF5E+F6j + mov [bp+var_4], 0 + mov [bp+var_6], di + mov ax, [bp+var_8] + mov [bp+var_A], ax + jmp loc_D03E +; --------------------------------------------------------------------------- + +loc_CFA9: ; CODE XREF: sub_CF5E+E4j + les bx, dword_1161A + add bx, [bp+var_6] + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_1161A + add bx, [bp+var_A] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_1161E + add bx, [bp+var_6] + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_1161E + add bx, [bp+var_A] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_11622 + add bx, [bp+var_6] + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_11622 + add bx, [bp+var_A] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_11626 + add bx, [bp+var_6] + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_11626 + add bx, [bp+var_A] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + inc [bp+var_4] + inc [bp+var_6] + inc [bp+var_A] + +loc_D03E: ; CODE XREF: sub_CF5E+48j + cmp [bp+var_4], 20h ; ' ' + jl loc_CFA9 + inc [bp+var_2] + add di, 50h ; 'P' + add [bp+var_8], 50h ; 'P' + +loc_D050: ; CODE XREF: sub_CF5E+37j + cmp [bp+var_2], 8 + jl loc_CF98 + mov [bp+var_2], 0 + jmp loc_D0F2 +; --------------------------------------------------------------------------- + +loc_D060: ; CODE XREF: sub_CF5E+199j + les bx, dword_1161A + add bx, di + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_1161A + add bx, [bp+var_8] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_1161E + add bx, di + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_1161E + add bx, [bp+var_8] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_11622 + add bx, di + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_11622 + add bx, [bp+var_8] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + les bx, dword_11626 + add bx, di + mov al, es:[bx] + les bx, dword_132BA + mov es:[bx+si], al + les bx, dword_11626 + add bx, [bp+var_8] + mov al, es:[bx] + les bx, dword_132BE + mov es:[bx+si], al + inc si + inc [bp+var_2] + add di, 50h ; 'P' + add [bp+var_8], 50h ; 'P' + +loc_D0F2: ; CODE XREF: sub_CF5E+FFj + cmp [bp+var_2], 0F4h ; 'ô' + jl loc_D060 + pop di + pop si + leave + retn +sub_CF5E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D0FF proc near ; CODE XREF: sub_D3A2+19p sub_D3A2+74p + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = byte ptr 4 + + enter 6, 0 + push si + push di + cmp [bp+arg_0], 0 + jnz short loc_D114 + mov dx, 0DC5h + mov eax, dword_132BA + jmp short loc_D11B +; --------------------------------------------------------------------------- + +loc_D114: ; CODE XREF: sub_D0FF+Aj + mov dx, 0DE9h + mov eax, dword_132BE + +loc_D11B: ; CODE XREF: sub_D0FF+13j + mov [bp+var_6], eax + xor cx, cx + jmp short loc_D18A +; --------------------------------------------------------------------------- + +loc_D123: ; CODE XREF: sub_D0FF+8Ej + mov [bp+var_2], 0 + mov di, dx + jmp short loc_D180 +; --------------------------------------------------------------------------- + +loc_D12C: ; CODE XREF: sub_D0FF+85j + les bx, dword_1161A + add bx, di + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_1161E + add bx, di + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_11622 + add bx, di + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_11626 + add bx, di + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + inc [bp+var_2] + inc di + +loc_D180: ; CODE XREF: sub_D0FF+2Bj + cmp [bp+var_2], 20h ; ' ' + jl short loc_D12C + inc cx + add dx, 50h ; 'P' + +loc_D18A: ; CODE XREF: sub_D0FF+22j + cmp cx, 8 + jl short loc_D123 + xor cx, cx + jmp short loc_D1E7 +; --------------------------------------------------------------------------- + +loc_D193: ; CODE XREF: sub_D0FF+ECj + les bx, dword_1161A + add bx, dx + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_1161E + add bx, dx + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_11622 + add bx, dx + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + les bx, dword_11626 + add bx, dx + push es + les si, [bp+var_6] + mov al, es:[si] + pop es + mov es:[bx], al + inc word ptr [bp+var_6] + inc cx + add dx, 50h ; 'P' + +loc_D1E7: ; CODE XREF: sub_D0FF+92j + cmp cx, 0F4h ; 'ô' + jl short loc_D193 + pop di + pop si + leave + retn 2 +sub_D0FF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D1F3 proc near ; CODE XREF: sub_D708+1B8p + ; sub_D708+2B8p ... + push bp + mov bp, sp + push word ptr dword_132BA+2 + call sub_2856 + push word ptr dword_132BE+2 + call sub_2856 + pop bp + retn +sub_D1F3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D20A proc near ; CODE XREF: sub_D3A2+2Bp sub_D3A2+86p + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = byte ptr 4 + + enter 6, 0 + push si + push di + cmp [bp+arg_0], 0 + jnz short loc_D21B + mov si, 1046h + jmp short loc_D21E +; --------------------------------------------------------------------------- + +loc_D21B: ; CODE XREF: sub_D20A+Aj + mov si, 106Ah + +loc_D21E: ; CODE XREF: sub_D20A+Fj + push large 0C00001h + call sub_10D2 + mov [bp+var_6], 0AAAAAAAAh + xor di, di + jmp short loc_D273 +; --------------------------------------------------------------------------- + +loc_D235: ; CODE XREF: sub_D20A+6Dj + test di, 1 + jnz short loc_D243 + mov eax, 0AAAAAAAAh + jmp short loc_D249 +; --------------------------------------------------------------------------- + +loc_D243: ; CODE XREF: sub_D20A+2Fj + mov eax, 55555555h + +loc_D249: ; CODE XREF: sub_D20A+37j + mov [bp+var_6], eax + mov [bp+var_2], 0 + jmp short loc_D269 +; --------------------------------------------------------------------------- + +loc_D254: ; CODE XREF: sub_D20A+63j + les bx, dword_1161A + add bx, si + mov eax, [bp+var_6] + mov es:[bx], eax + add [bp+var_2], 4 + add si, 4 + +loc_D269: ; CODE XREF: sub_D20A+48j + cmp [bp+var_2], 20h ; ' ' + jl short loc_D254 + inc di + add si, 30h ; '0' + +loc_D273: ; CODE XREF: sub_D20A+29j + cmp di, 0F4h ; 'ô' + jl short loc_D235 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + pop di + pop si + leave + retn 2 +sub_D20A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D285 proc near ; CODE XREF: sub_D3A2:loc_D460p + +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 2, 0 + push si + push di + mov si, [bp+arg_0] + mov ax, si + or ax, ax + jz short loc_D29B + cmp ax, 1 + jz short loc_D2A0 + jmp short loc_D2A3 +; --------------------------------------------------------------------------- + +loc_D29B: ; CODE XREF: sub_D285+Dj + mov di, 50h ; 'P' + jmp short loc_D2A3 +; --------------------------------------------------------------------------- + +loc_D2A0: ; CODE XREF: sub_D285+12j + mov di, 170h + +loc_D2A3: ; CODE XREF: sub_D285+14j sub_D285+19j + mov [bp+var_2], 138h + lea ax, [di+8] + push ax + mov ax, [bp+var_2] + add ax, 8 + push ax + push 0Fh + mov bx, si + shl bx, 3 + push large dword ptr [bx+13D4h] + call far ptr loc_DEB4 + lea ax, [di+8] + push ax + mov ax, [bp+var_2] + add ax, 28h ; '(' + push ax + push 0Fh + mov bx, si + shl bx, 3 + push large dword ptr [bx+13D8h] + call far ptr loc_DEB4 + mov ax, 1 + sub ax, si + mov si, ax + or ax, ax + jz short loc_D2F2 + cmp ax, 1 + jz short loc_D2F7 + jmp short loc_D2FA +; --------------------------------------------------------------------------- + +loc_D2F2: ; CODE XREF: sub_D285+64j + mov di, 50h ; 'P' + jmp short loc_D2FA +; --------------------------------------------------------------------------- + +loc_D2F7: ; CODE XREF: sub_D285+69j + mov di, 170h + +loc_D2FA: ; CODE XREF: sub_D285+6Bj sub_D285+70j + lea ax, [di+8] + push ax + mov ax, [bp+var_2] + add ax, 8 + push ax + push 3 + mov bx, si + shl bx, 3 + push large dword ptr [bx+13D4h] + call far ptr loc_DEB4 + lea ax, [di+8] + push ax + mov ax, [bp+var_2] + add ax, 28h ; '(' + push ax + push 3 + mov bx, si + shl bx, 3 + push large dword ptr [bx+13D8h] + call far ptr loc_DEB4 + pop di + pop si + leave + retn 2 +sub_D285 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D338 proc near ; CODE XREF: sub_D6B2+3Bp sub_D6B2+40p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_0] + or ax, ax + jz short loc_D34B + cmp ax, 1 + jz short loc_D350 + jmp short loc_D353 +; --------------------------------------------------------------------------- + +loc_D34B: ; CODE XREF: sub_D338+Aj + mov si, 50h ; 'P' + jmp short loc_D353 +; --------------------------------------------------------------------------- + +loc_D350: ; CODE XREF: sub_D338+Fj + mov si, 170h + +loc_D353: ; CODE XREF: sub_D338+11j sub_D338+16j + mov di, 138h + push large 0C00001h + call sub_10D2 + lea ax, [si+8] + push ax + lea ax, [di+8] + push ax + lea ax, [si+0C8h] + push ax + lea ax, [di+48h] + push ax + push 8 + call sub_FF0 + push large 0C00002h + call sub_10D2 + push si + push di + lea ax, [si+0C0h] + push ax + lea ax, [di+40h] + push ax + push 8 + call sub_FF0 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + pop di + pop si + pop bp + retn 2 +sub_D338 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D3A2 proc near ; CODE XREF: sub_D6B2+43p + ; sub_D708+114p + push bp + mov bp, sp + cmp byte_132B8, 0 + jnz short loc_D407 + push large 28002Ch + push 28h ; '(' + call sub_E176 + push 1 + call sub_D0FF + push large 1500034h + push 29h ; ')' + call sub_E176 + push 1 + call sub_D20A + push large 0C00001h + call sub_10D2 + push large 250034h + push large 25011Fh + call sub_CA4 + push large 60120h + push large 250127h + call sub_CA4 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 0 + jmp short loc_D460 +; --------------------------------------------------------------------------- + +loc_D407: ; CODE XREF: sub_D3A2+8j + push large 148002Ch + push 29h ; ')' + call sub_E176 + push 0 + call sub_D0FF + push large 300034h + push 28h ; '(' + call sub_E176 + push 0 + call sub_D20A + push large 0C00001h + call sub_10D2 + push large 490034h + push large 49011Fh + call sub_CA4 + push large 2A0120h + push large 490127h + call sub_CA4 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 1 + +loc_D460: ; CODE XREF: sub_D3A2+63j + call sub_D285 + pop bp + retn +sub_D3A2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D465 proc near ; CODE XREF: sub_D650+5Dp + ; sub_D708+23Dp + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 6, 0 + push si + push di + mov di, [bp+arg_0] + les bx, dword_10DA4 + cmp byte ptr es:[bx+11h], 6 + jnz short loc_D47E + mov ax, 4 + jmp short loc_D488 +; --------------------------------------------------------------------------- + +loc_D47E: ; CODE XREF: sub_D465+12j + les bx, dword_10DA4 + mov al, es:[bx+0Fh] + mov ah, 0 + +loc_D488: ; CODE XREF: sub_D465+17j + mov [bp+var_4], ax + mov ax, di + or ax, ax + jz short loc_D498 + cmp ax, 1 + jz short loc_D4A1 + jmp short loc_D4A8 +; --------------------------------------------------------------------------- + +loc_D498: ; CODE XREF: sub_D465+2Aj + mov si, 138h + mov [bp+var_5], 1 + jmp short loc_D4A8 +; --------------------------------------------------------------------------- + +loc_D4A1: ; CODE XREF: sub_D465+2Fj + mov si, 150h + mov [bp+var_5], 2 + +loc_D4A8: ; CODE XREF: sub_D465+31j sub_D465+3Aj + mov [bp+var_2], 140h + mov al, byte_132B8 + mov ah, 0 + imul ax, 5 + add ax, [bp+var_4] + mov dl, [bp+var_5] + mov bx, ax + test [bx+3F3Ch], dl + jz short loc_D4E5 + mov word_FD7C, 0 + mov ax, [bp+var_2] + add ax, 0FFF8h + push ax + lea ax, [si+4] + push ax + push 0Fh + push ds + push offset aStar + call far ptr loc_DEB4 + mov word_FD7C, 2 + +loc_D4E5: ; CODE XREF: sub_D465+5Cj + mov ax, [bp+var_2] + add ax, 8 + push ax + lea ax, [si+4] + push ax + push 0Fh + mov al, byte_132B8 + mov ah, 0 + shl ax, 3 + mov dx, di + shl dx, 2 + add ax, dx + mov bx, ax + push large dword ptr [bx+13E4h] + call far ptr loc_DEB4 + mov ax, 1 + sub ax, di + mov di, ax + or ax, ax + jz short loc_D51F + cmp ax, 1 + jz short loc_D528 + jmp short loc_D52F +; --------------------------------------------------------------------------- + +loc_D51F: ; CODE XREF: sub_D465+B1j + mov si, 138h + mov [bp+var_5], 1 + jmp short loc_D52F +; --------------------------------------------------------------------------- + +loc_D528: ; CODE XREF: sub_D465+B6j + mov si, 150h + mov [bp+var_5], 2 + +loc_D52F: ; CODE XREF: sub_D465+B8j sub_D465+C1j + mov al, byte_132B8 + mov ah, 0 + imul ax, 5 + add ax, [bp+var_4] + mov dl, [bp+var_5] + mov bx, ax + test [bx+3F3Ch], dl + jz short loc_D567 + mov word_FD7C, 0 + mov ax, [bp+var_2] + add ax, 0FFF8h + push ax + lea ax, [si+4] + push ax + push 0Fh + push ds + push offset aStar + call far ptr loc_DEB4 + mov word_FD7C, 2 + +loc_D567: ; CODE XREF: sub_D465+DEj + mov ax, [bp+var_2] + add ax, 8 + push ax + lea ax, [si+4] + push ax + push 3 + mov al, byte_132B8 + mov ah, 0 + shl ax, 3 + mov dx, di + shl dx, 2 + add ax, dx + mov bx, ax + push large dword ptr [bx+13E4h] + call far ptr loc_DEB4 + pop di + pop si + leave + retn 2 +sub_D465 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D595 proc near ; CODE XREF: sub_D650+54p + push bp + mov bp, sp + push si + push di + mov si, 138h + mov di, 140h + push large 0C00001h + call sub_10D2 + lea ax, [di+8] + push ax + lea ax, [si+8] + push ax + lea ax, [di+0C7h] + push ax + lea ax, [si+1Fh] + push ax + push 8 + call sub_FF0 + lea ax, [di+8] + push ax + lea ax, [si+20h] + push ax + lea ax, [di+0C7h] + push ax + lea ax, [si+37h] + push ax + push 8 + call sub_FF0 + push 88h ; 'ˆ' + lea ax, [si+8] + push ax + push 147h + lea ax, [si+1Fh] + push ax + push 8 + call sub_FF0 + push large 0C00002h + call sub_10D2 + push di + push si + lea ax, [di+0C0h] + push ax + lea ax, [si+17h] + push ax + push 8 + call sub_FF0 + push di + lea ax, [si+18h] + push ax + lea ax, [di+0C0h] + push ax + lea ax, [si+2Fh] + push ax + push 8 + call sub_FF0 + push 80h ; '€' + push si + push 13Fh + lea ax, [si+17h] + push ax + push 8 + call sub_FF0 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 98h ; '˜' + lea ax, [si+4] + push ax + push 3 + push ds + push offset aGtgugegfgGuvSi ; "ƒTƒuƒEƒFƒ|ƒ“‚Ì‘I‘ð" + call far ptr loc_DEB4 + pop di + pop si + pop bp + retn +sub_D595 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D650 proc near ; CODE XREF: sub_D708+197p + push bp + mov bp, sp + cmp byte_132B8, 0 + jnz short loc_D664 + push large 0B8002Ch + push 28h ; '(' + jmp short loc_D66C +; --------------------------------------------------------------------------- + +loc_D664: ; CODE XREF: sub_D650+8j + push large 0B8002Ch + push 29h ; ')' + +loc_D66C: ; CODE XREF: sub_D650+12j + call sub_E176 + push large 0C00001h + call sub_10D2 + push large 370034h + push large 37011Fh + call sub_CA4 + push large 180120h + push large 370127h + call sub_CA4 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + call sub_D595 + mov al, byte_132B9 + mov ah, 0 + push ax + call sub_D465 + pop bp + retn +sub_D650 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D6B2 proc near ; CODE XREF: sub_D708:loc_D7B8p + push bp + mov bp, sp + mov word_F8C6, 0 + call far ptr loc_1DE0 + push 0 + push ds + push offset aSlb1_pi ; "slb1.pi" + call sub_DAFD + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_DA50 + push large 0 + push 0 + call sub_DA75 + call sub_CF5E + push 0 + call sub_D338 + push 1 + call sub_D338 + call sub_D3A2 + push 0 + call sub_156C + push 1 + call sub_622 + pop bp + retn +sub_D6B2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D708 proc near ; CODE XREF: sub_A8F1+26p sub_A96C+20p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + push di + les bx, dword_10DA4 + cmp byte ptr es:[bx+11h], 6 + jnz short loc_D78D + xor di, di + jmp short loc_D786 +; --------------------------------------------------------------------------- + +loc_D71D: ; CODE XREF: sub_D708+81j + mov [bp+var_2], 0 + mov si, 1 + jmp short loc_D735 +; --------------------------------------------------------------------------- + +loc_D726: ; CODE XREF: sub_D708+30j + mov bx, di + imul bx, 5 + mov al, [bx+si+3F3Ch] + and al, 1 + or [bp+var_2], al + inc si + +loc_D735: ; CODE XREF: sub_D708+1Cj + cmp si, 4 + jl short loc_D726 + mov bx, di + add bx, bx + push bx + cmp [bp+var_2], 0 + jz short loc_D74A + mov ax, 1 + jmp short loc_D74C +; --------------------------------------------------------------------------- + +loc_D74A: ; CODE XREF: sub_D708+3Bj + xor ax, ax + +loc_D74C: ; CODE XREF: sub_D708+40j + pop bx + mov [bx+3F82h], al + mov [bp+var_2], 0 + mov si, 1 + jmp short loc_D769 +; --------------------------------------------------------------------------- + +loc_D75A: ; CODE XREF: sub_D708+64j + mov bx, di + imul bx, 5 + mov al, [bx+si+3F3Ch] + and al, 2 + or [bp+var_2], al + inc si + +loc_D769: ; CODE XREF: sub_D708+50j + cmp si, 4 + jl short loc_D75A + mov bx, di + add bx, bx + push bx + cmp [bp+var_2], 0 + jz short loc_D77E + mov ax, 1 + jmp short loc_D780 +; --------------------------------------------------------------------------- + +loc_D77E: ; CODE XREF: sub_D708+6Fj + xor ax, ax + +loc_D780: ; CODE XREF: sub_D708+74j + pop bx + mov [bx+3F83h], al + inc di + +loc_D786: ; CODE XREF: sub_D708+13j + cmp di, 2 + jl short loc_D71D + jmp short loc_D7A1 +; --------------------------------------------------------------------------- + +loc_D78D: ; CODE XREF: sub_D708+Fj + mov byte_132C2, 1 + mov byte_132C3, 1 + mov byte_132C4, 1 + mov byte_132C5, 1 + +loc_D7A1: ; CODE XREF: sub_D708+83j + cmp byte_132C2, 0 + jnz short loc_D7AF + cmp byte_132C3, 0 + jz short loc_D7B3 + +loc_D7AF: ; CODE XREF: sub_D708+9Ej + mov al, 0 + jmp short loc_D7B5 +; --------------------------------------------------------------------------- + +loc_D7B3: ; CODE XREF: sub_D708+A5j + mov al, 1 + +loc_D7B5: ; CODE XREF: sub_D708+A9j + mov byte_132B8, al + +loc_D7B8: ; CODE XREF: sub_D708+2E5j + call sub_D6B2 + +loc_D7BB: ; CODE XREF: sub_D708+1E9j + call far ptr sub_E1DC + cmp [bp+var_1], 0 + jnz loc_D8DF + test byte ptr word_11A50, 4 + jnz short loc_D7D6 + test byte ptr word_11A50, 8 + jz short loc_D84C + +loc_D7D6: ; CODE XREF: sub_D708+C5j + call sub_E2E6 + push 1 + call sub_E2F2 + call sub_E32C + mov al, 1 + sub al, byte_132B8 + mov byte_132B8, al + mov ah, 0 + add ax, ax + mov bx, ax + cmp byte ptr [bx+3F82h], 0 + jnz short loc_D816 + mov al, byte_132B8 + mov ah, 0 + add ax, ax + mov bx, ax + cmp byte ptr [bx+3F83h], 0 + jnz short loc_D816 + mov al, 1 + sub al, byte_132B8 + mov byte_132B8, al + +loc_D816: ; CODE XREF: sub_D708+F3j + ; sub_D708+103j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_D3A2 + mov word_10E06, 0 + push 1 + call sub_DA3B + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_156C + mov word_10E06, 0 + push 1 + call sub_DA3B + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + +loc_D84C: ; CODE XREF: sub_D708+CCj + test byte ptr word_11A50+1, 20h + jnz short loc_D85A + test byte ptr word_11A50, 20h + jz short loc_D8B2 + +loc_D85A: ; CODE XREF: sub_D708+149j + call sub_E2E6 + push 0Bh + call sub_E2F2 + call sub_E32C + mov al, byte_132B8 + mov ah, 0 + add ax, ax + mov bx, ax + cmp byte ptr [bx+3F82h], 0 + jz short loc_D87F + mov al, 0 + jmp short loc_D881 +; --------------------------------------------------------------------------- + +loc_D87F: ; CODE XREF: sub_D708+171j + mov al, 1 + +loc_D881: ; CODE XREF: sub_D708+175j + mov byte_132B9, al + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov word_F8C6, 0C8h ; 'È' + call far ptr loc_1DE0 + push large 0 + push 0 + call sub_DA75 + call sub_D650 + push 0 + call sub_156C + push 1 + call sub_266E + +loc_D8B0: ; CODE XREF: sub_D708+302j + jmp short loc_D8F4 +; --------------------------------------------------------------------------- + +loc_D8B2: ; CODE XREF: sub_D708+150j + test byte ptr word_11A50+1, 10h + jz short loc_D8D7 + push 1 + call sub_666 + call sub_D1F3 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + mov ax, 1 + jmp loc_DA0D +; --------------------------------------------------------------------------- + +loc_D8D7: ; CODE XREF: sub_D708+1AFj + mov al, byte ptr word_11A50 + mov [bp+var_1], al + jmp short loc_D8EA +; --------------------------------------------------------------------------- + +loc_D8DF: ; CODE XREF: sub_D708+BCj + cmp word_11A50, 0 + jnz short loc_D8EA + mov [bp+var_1], 0 + +loc_D8EA: ; CODE XREF: sub_D708+1D5j + ; sub_D708+1DCj + push 1 + call sub_DA3B + jmp loc_D7BB +; --------------------------------------------------------------------------- + +loc_D8F4: ; CODE XREF: sub_D708:loc_D8B0j + call far ptr sub_E1DC + cmp [bp+var_1], 0 + jnz loc_D9F8 + test byte ptr word_11A50, 1 + jnz short loc_D90F + test byte ptr word_11A50, 2 + jz short loc_D986 + +loc_D90F: ; CODE XREF: sub_D708+1FEj + mov al, 1 + sub al, byte_132B9 + mov byte_132B9, al + mov al, byte_132B8 + mov ah, 0 + add ax, ax + mov dl, byte_132B9 + mov dh, 0 + add ax, dx + mov bx, ax + cmp byte ptr [bx+3F82h], 0 + jnz short loc_D939 + mov al, 1 + sub al, byte_132B9 + mov byte_132B9, al + +loc_D939: ; CODE XREF: sub_D708+226j + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, byte_132B9 + mov ah, 0 + push ax + call sub_D465 + mov word_10E06, 0 + push 1 + call sub_DA3B + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_156C + mov word_10E06, 0 + push 1 + call sub_DA3B + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_E2E6 + push 1 + call sub_E2F2 + call sub_E32C + +loc_D986: ; CODE XREF: sub_D708+205j + test byte ptr word_11A50+1, 20h + jnz short loc_D994 + test byte ptr word_11A50, 20h + jz short loc_D9D5 + +loc_D994: ; CODE XREF: sub_D708+283j + call sub_E2E6 + push 0Bh + call sub_E2F2 + call sub_E32C + les bx, dword_10DA4 + mov al, byte_132B9 + mov es:[bx+19h], al + mov al, byte_132B8 + add al, 30h ; '0' + mov es:[bx+12h], al + push 1 + call sub_666 + call sub_D1F3 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + xor ax, ax + jmp short loc_DA0D +; --------------------------------------------------------------------------- + +loc_D9D5: ; CODE XREF: sub_D708+28Aj + test byte ptr word_11A50+1, 10h + jz short loc_D9F0 + call sub_D1F3 + push ds + push offset unk_116C8 + push large [dword_116B0] + call sub_1618 + jmp loc_D7B8 +; --------------------------------------------------------------------------- + +loc_D9F0: ; CODE XREF: sub_D708+2D2j + mov al, byte ptr word_11A50 + mov [bp+var_1], al + jmp short loc_DA03 +; --------------------------------------------------------------------------- + +loc_D9F8: ; CODE XREF: sub_D708+1F5j + cmp word_11A50, 0 + jnz short loc_DA03 + mov [bp+var_1], 0 + +loc_DA03: ; CODE XREF: sub_D708+2EEj + ; sub_D708+2F5j + push 1 + call sub_DA3B + jmp loc_D8B0 +; --------------------------------------------------------------------------- + +loc_DA0D: ; CODE XREF: sub_D708+1CCj + ; sub_D708+2CBj + pop di + pop si + leave + retn +sub_D708 endp + +seg001 ends + +; =========================================================================== + +; Segment type: Pure code +seg002 segment byte public 'CODE' use16 + assume cs:seg002 + ;org 1 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DA12 proc far ; CODE XREF: sub_E0F4+17p + push bp + mov bp, sp + mov dword_1161A, 0A8000000h + mov dword_1161E, 0B0000000h + mov dword_11622, 0B8000000h + mov dword_11626, 0E0000000h + pop bp + retf +sub_DA12 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DA3B proc far ; CODE XREF: _main+FFP sub_B572+55P ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_10E06, 0 + +loc_DA44: ; CODE XREF: sub_DA3B+Fj + mov ax, word_10E06 + cmp ax, [bp+arg_0] + jb short loc_DA44 + pop bp + retf 2 +sub_DA3B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DA50 proc far ; CODE XREF: sub_AE96+D6P + ; sub_AE96+13AP ... + +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, 23A0h + push ax ; src + push ds + push offset byte_10DD6 ; dest + call _memcpy + add sp, 0Ah + call far ptr loc_1DE0 + pop bp + retf 2 +sub_DA50 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DA75 proc far ; CODE XREF: sub_AE96+E0P + ; sub_AE96+144P ... + +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+2372h] + mov dx, [bx+2370h] + mov word ptr [bp+var_4+2], ax + mov word ptr [bp+var_4], dx + mov [bp+var_6], 0 + jmp short loc_DAE9 +; --------------------------------------------------------------------------- + +loc_DA9B: ; CODE XREF: sub_DA75+80j + push [bp+arg_4] + push si + push large [bp+var_4] + mov bx, di + imul bx, 48h + push word ptr [bx+239Ch] + call sub_1C5E + inc si + cmp si, 190h + jl short loc_DABC + sub si, 190h + +loc_DABC: ; CODE XREF: sub_DA75+41j + mov bx, di + imul bx, 48h + mov ax, [bx+239Ch] + 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_DAE9: ; CODE XREF: sub_DA75+24j + mov bx, di + imul bx, 48h + mov ax, [bx+239Eh] + cmp ax, [bp+var_6] + ja short loc_DA9B + pop di + pop si + leave + retf 6 +sub_DA75 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DAFD proc far ; CODE XREF: sub_AE96+CFP + ; sub_AE96+133P ... + +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, 2388h + push ds + push ax + mov bx, si + shl bx, 2 + push large dword ptr [bx+2370h] + call sub_1618 + push large [bp+arg_0] + mov ax, si + imul ax, 48h + add ax, 2388h + push ds + push ax + mov ax, si + shl ax, 2 + add ax, 2370h + push ds + push ax + call sub_1670 + mov [bp+var_2], ax + pop si + leave + retf 6 +sub_DAFD endp + +; --------------------------------------------------------------------------- + db 0 +; --------------------------------------------------------------------------- + push di + xor ax, ax + mov di, 2538h + xor dl, dl + jmp short loc_DB59 +; --------------------------------------------------------------------------- + +loc_DB4E: ; CODE XREF: seg002:014Ej + xor dl, dl + mov cx, 8 + +loc_DB53: ; CODE XREF: seg002:0147j + rol al, 1 + rcr dl, 1 + loop loc_DB53 + +loc_DB59: ; CODE XREF: seg002:013Cj + mov [di], dl + inc di + inc al + jnz short loc_DB4E + pop di + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DB62 proc far ; CODE XREF: sub_B794+7CP sub_B8B1+7CP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + xor di, di + +loc_DB6C: ; CODE XREF: sub_DB62+20j + nop + push cs + call sub_E1DC + push 1 + nop + push cs + call near ptr sub_DA3B + nop + push cs + call near ptr sub_E1E4 + cmp word_11A50, 0 + jnz short loc_DB6C + or si, si + jnz short loc_DBAE + mov si, 270Fh + jmp short loc_DBAE +; --------------------------------------------------------------------------- + +loc_DB8D: ; CODE XREF: sub_DB62+4Ej + nop + push cs + call sub_E1DC + push 1 + nop + push cs + call near ptr sub_DA3B + nop + push cs + call near ptr sub_E1E4 + cmp word_11A50, 0 + jnz short loc_DBB2 + inc di + cmp si, 270Fh + jnz short loc_DBAE + xor di, di + +loc_DBAE: ; CODE XREF: sub_DB62+24j sub_DB62+29j ... + cmp di, si + jl short loc_DB8D + +loc_DBB2: ; CODE XREF: sub_DB62+41j + pop di + pop si + pop bp + retf 2 +sub_DB62 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DBB8 proc far ; CODE XREF: sub_BAC9+92P sub_BAC9+B0P ... + +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_0] + imul eax, edx + sar eax, 8 + add ax, [bp+arg_4] + pop bp + retf 6 +sub_DBB8 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + mov si, [bp+0Eh] + mov bx, [bp+6] + add bx, bx + movsx eax, word ptr [bp+8] + movsx edx, word ptr [bx+648h] + imul eax, edx + sar eax, 8 + add ax, [bp+0Ch] + mov [si], ax + movsx eax, word ptr [bp+8] + movsx edx, word ptr [bx+5C8h] + imul eax, edx + sar eax, 8 + add ax, [bp+0Ah] + mov [si+2], ax + pop si + pop bp + retf 0Ah + +; =============== S U B R O U T I N E ======================================= + + +sub_DC16 proc far ; CODE XREF: sub_DCE4+Dp + xor ax, ax + mov byte_11978, 60h ; '`' + mov byte_FD22, al + mov byte_FD21, al + mov byte_FD20, al + 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 locret_DC43 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short locret_DC43 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short locret_DC43 + inc ax + +locret_DC43: ; CODE XREF: sub_DC16+1Cj sub_DC16+23j ... + retf +sub_DC16 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DC44 proc far ; CODE XREF: sub_DCE4+17p + xor ax, ax + mov es, ax + assume es:seg000 + les bx, dword ptr es:loc_182+2 + assume es:nothing + cmp byte ptr es:[bx+2], 4Dh ; 'M' + jnz short loc_DC70 + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_DC70 + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_DC70 + mov byte_11978, 61h ; 'a' + mov byte_FD22, 1 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_DC70: ; CODE XREF: sub_DC44+Ej sub_DC44+15j ... + xor ax, ax + retf +sub_DC44 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC74 proc far ; CODE XREF: sub_A8F1+44P sub_A96C+3EP ... + +arg_0 = word ptr 6 + + push bp + mov bp, sp + cmp byte_FD21, 0 + jz short loc_DC8E + mov ax, [bp+arg_0] + cmp byte_FD21, 3 + jz short loc_DC8C + int 60h + jmp short loc_DC8E +; --------------------------------------------------------------------------- + +loc_DC8C: ; CODE XREF: sub_DC74+12j + int 61h ; reserved for user interrupt + +loc_DC8E: ; CODE XREF: sub_DC74+8j sub_DC74+16j + pop bp + retf 2 +sub_DC74 endp + +; --------------------------------------------------------------------------- + +loc_DC92: ; CODE XREF: sub_AAB5+46P + ; sub_AAB5:loc_AB54P ... + push bp + mov bp, sp + push si + push di + mov si, [bp+6] + shl si, 4 + add si, 2716h + mov di, [bp+0Ah] + sar di, 3 + add di, [si+6] + mov ax, [si+8] + mov cs:word_DCD3, 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 ds, word ptr [si+0Ch] + xor si, si + cld + nop +; --------------------------------------------------------------------------- + db 0B9h +word_DCD3 dw 1234h ; DATA XREF: seg002:029Dw + db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 1Fh, 5Fh, 5Eh + db 5Dh, 0CAh, 6, 0, 90h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DCE4 proc far ; CODE XREF: sub_B052+DEP + ; sub_B052+1B0P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, [bp+arg_0] + nop + push cs + call near ptr sub_DC16 + cmp si, 3 + jnz short loc_DCFE + nop + push cs + call near ptr sub_DC44 + +loc_DCFE: ; CODE XREF: sub_DCE4+13j + mov ah, 9 + int 60h + cmp al, 0FFh + jnz short loc_DD0D + mov byte_FD21, 0 + jmp short loc_DD1D +; --------------------------------------------------------------------------- + +loc_DD0D: ; CODE XREF: sub_DCE4+20j + or al, al + jnz short loc_DD18 + mov byte_FD21, 1 + jmp short loc_DD1D +; --------------------------------------------------------------------------- + +loc_DD18: ; CODE XREF: sub_DCE4+2Bj + mov byte_FD21, 2 + +loc_DD1D: ; CODE XREF: sub_DCE4+27j sub_DCE4+32j + cmp di, 1 + jnz short loc_DD35 + cmp byte_FD21, 0 + jz short loc_DD2E + mov ax, 1 + jmp short loc_DD30 +; --------------------------------------------------------------------------- + +loc_DD2E: ; CODE XREF: sub_DCE4+43j + xor ax, ax + +loc_DD30: ; CODE XREF: sub_DCE4+48j + mov byte_FD20, al + jmp short loc_DD46 +; --------------------------------------------------------------------------- + +loc_DD35: ; CODE XREF: sub_DCE4+3Cj + cmp di, 2 + jnz short loc_DD41 + mov byte_FD20, 2 + jmp short loc_DD46 +; --------------------------------------------------------------------------- + +loc_DD41: ; CODE XREF: sub_DCE4+54j + mov byte_FD20, 0 + +loc_DD46: ; CODE XREF: sub_DCE4+4Fj sub_DCE4+5Bj + or si, si + jnz short loc_DD51 + mov byte_FD21, 0 + jmp short loc_DD75 +; --------------------------------------------------------------------------- + +loc_DD51: ; CODE XREF: sub_DCE4+64j + cmp si, 3 + jnz short loc_DD64 + cmp byte_FD22, 0 + jz short loc_DD64 + mov byte_FD21, 3 + jmp short loc_DD75 +; --------------------------------------------------------------------------- + +loc_DD64: ; CODE XREF: sub_DCE4+70j sub_DCE4+77j + cmp si, 1 + jnz short loc_DD75 + cmp byte_FD21, 0 + jz short loc_DD75 + mov byte_FD21, 1 + +loc_DD75: ; CODE XREF: sub_DCE4+6Bj sub_DCE4+7Ej ... + mov al, byte_FD21 + mov ah, 0 + pop di + pop si + pop bp + retf 4 +sub_DCE4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DD80 proc far ; CODE XREF: sub_BC35+101P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + cmp byte_FD21, 0 + jnz short loc_DD96 + push [bp+arg_0] + nop + push cs + call near ptr sub_DA3B + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_DD96: ; CODE XREF: sub_DD80+8j sub_DD80+2Bj + mov ah, 5 + cmp byte_FD21, 3 + jz short loc_DDA3 + int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE + ; BX = handle + ; Return: CF set on error, DH = error code + ; CF clear if successful + jmp short loc_DDA8 +; --------------------------------------------------------------------------- + +loc_DDA3: ; CODE XREF: sub_DD80+1Dj + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_DDA8: ; CODE XREF: sub_DD80+21j + cmp ax, [bp+arg_2] + jb short loc_DD96 + pop bp + retf 4 +sub_DD80 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DDB1 proc far ; CODE XREF: _main+11BP + push bp + mov bp, sp + nop + push cs + call near ptr sub_E0AC + call sub_1D6A + call sub_2532 + call sub_2526 + pop bp + retf +sub_DDB1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DDCA proc far ; CODE XREF: sub_B052+EAP + ; sub_B052+1BCP ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + xor si, si + jmp short loc_DDDF +; --------------------------------------------------------------------------- + +loc_DDD2: ; CODE XREF: sub_DDCA+18j + les bx, [bp+arg_2] + add bx, si + mov al, es:[bx] + mov [si+2700h], al + inc si + +loc_DDDF: ; CODE XREF: sub_DDCA+6j + cmp si, 0Dh + jl short loc_DDD2 + xor si, si + +loc_DDE6: ; CODE XREF: sub_DDCA+22j + inc si + cmp byte ptr [si+2700h], 0 + jnz short loc_DDE6 + mov byte ptr [si+2704h], 0 + mov byte ptr [si+2700h], 2Eh ; '.' + inc si + cmp [bp+arg_0], 0B00h + jnz short loc_DE32 + mov byte ptr [si+2700h], 65h ; 'e' + mov byte ptr [si+2701h], 66h ; 'f' + cmp byte_FD20, 0 + jz loc_DEAF + cmp byte_FD20, 2 + jnz short loc_DE2B + mov byte ptr [si+2702h], 73h ; 's' + push ds + push offset unk_11A40 + call sub_3632 + jmp loc_DEAF +; --------------------------------------------------------------------------- + +loc_DE2B: ; CODE XREF: sub_DDCA+4Ej + mov byte ptr [si+2702h], 63h ; 'c' + jmp short loc_DE82 +; --------------------------------------------------------------------------- + +loc_DE32: ; CODE XREF: sub_DDCA+34j + cmp byte_FD21, 0 + jz short loc_DEAF + push 100h + nop + push cs + call near ptr sub_DC74 + mov al, byte_FD21 + mov ah, 0 + shl ax, 2 + mov bx, ax + les bx, [bx+9E4h] + mov al, es:[bx] + mov [si+2700h], al + mov al, byte_FD21 + mov ah, 0 + shl ax, 2 + mov bx, ax + les bx, [bx+9E4h] + mov al, es:[bx+1] + mov [si+2701h], al + mov al, byte_FD21 + mov ah, 0 + shl ax, 2 + mov bx, ax + les bx, [bx+9E4h] + mov al, es:[bx+2] + mov [si+2702h], al + +loc_DE82: ; CODE XREF: sub_DDCA+66j + push ds + mov dx, 2700h + 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_0] + cmp ah, 6 + jnz short loc_DEA0 + cmp byte_FD21, 3 + jnz short loc_DEA0 + int 61h ; reserved for user interrupt + jmp short loc_DEA2 +; --------------------------------------------------------------------------- + +loc_DEA0: ; CODE XREF: sub_DDCA+C9j sub_DDCA+D0j + int 60h + +loc_DEA2: ; CODE XREF: sub_DDCA+D4j + 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 + +loc_DEAF: ; CODE XREF: sub_DDCA+45j sub_DDCA+5Ej ... + pop si + pop bp + retf 6 +sub_DDCA endp + +; --------------------------------------------------------------------------- + +loc_DEB4: ; CODE XREF: sub_AAB5+10AP + ; sub_ABD7+235P ... + push bp + mov bp, sp + push si + push di + push ds + mov dx, [bp+0Ah] + 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 ax, 0A800h + mov es, ax + assume es:nothing + mov dx, [bp+0Ch] + shl dx, 6 + mov di, dx + shr dx, 2 + add di, dx + mov cx, [bp+0Eh] + mov al, 0Bh + out 68h, al + mov bx, word_FD7C + add bx, bx + cmp bx, 8 + jb short loc_DF10 + cmp bx, 10h + jnb short loc_DF10 + mov ax, [bx+0A0Ch] + mov cs:word_E00B, ax + mov bx, 8 + +loc_DF10: ; CODE XREF: seg002:04EEj seg002:04F3j + mov ax, [bx+0A00h] + mov cs:word_DF73, ax + mov ax, [bx+0A0Ah] + mov cs:word_DFC5, ax + mov ax, word_FD7E + mov cs:word_DF92, ax + mov cs:word_DFD9, ax + push ds + pop fs + assume fs:dseg + lds si, [bp+6] + lodsb + or al, al + jz short loc_DF9D + +loc_DF36: ; CODE XREF: seg002:058Bj + mov dx, cx + shr dx, 3 + add di, dx + and cx, 7 + mov ah, 9 + test al, 0E0h + jns short loc_DFAF + jp short loc_DFAC + mov ah, al + lodsb + shl ah, 1 + cmp al, 9Fh ; 'Ÿ' + jnb short loc_DF56 + cmp al, 80h ; '€' + adc ax, 0FEDFh + +loc_DF56: ; CODE XREF: seg002:053Fj + sbb al, 0FEh ; 'þ' + and ax, 7F7Fh + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + nop + 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 +; --------------------------------------------------------------------------- + db 0E8h +word_DF73 dw 78h ; DATA XREF: seg002:0504w + db 8Ah, 0F8h, 0B3h, 0, 0D3h, 0E8h, 0D3h, 0EBh, 86h, 0E0h + db 0ABh, 26h, 88h, 1Dh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h + db 0FDh, 10h, 72h, 0D5h, 81h, 0EFh, 0, 5, 0BAh +word_DF92 dw 1234h ; DATA XREF: seg002:0513w +; --------------------------------------------------------------------------- + +loc_DF94: ; CODE XREF: seg002:05CDj + xor ch, ch + add cx, dx + lodsb + or al, al + jnz short loc_DF36 + +loc_DF9D: ; CODE XREF: seg002:0524j + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ah +; --------------------------------------------------------------------------- + +loc_DFAC: ; CODE XREF: seg002:0536j + add ax, 80h ; '€' + +loc_DFAF: ; CODE XREF: seg002:0534j + cmp al, 20h ; ' ' + jz short near ptr byte_DFD8 + out 0A1h, al ; Interrupt Controller #2, 8259A + mov al, ah + out 0A3h, al ; Interrupt Controller #2, 8259A + nop + mov al, ch + or al, 20h + out 0A5h, al ; Interrupt Controller #2, 8259A + in al, 0A9h ; Interrupt Controller #2, 8259A + xor ah, ah +; --------------------------------------------------------------------------- + db 0E8h +word_DFC5 dw 26h ; DATA XREF: seg002:050Cw + db 0D3h, 0C8h, 0ABh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h, 0FDh + db 10h, 72h, 0E6h, 81h, 0EFh, 0, 5 +byte_DFD8 db 0BAh ; CODE XREF: seg002:05A1j +word_DFD9 dw 1234h ; DATA XREF: seg002:0517w +; --------------------------------------------------------------------------- + shr dx, 1 + jmp short loc_DF94 +; --------------------------------------------------------------------------- + nop + mov dx, ax + add dx, dx + or ax, dx + retn +; --------------------------------------------------------------------------- + mov dx, ax + shl dx, 1 + or ax, dx + +; =============== S U B R O U T I N E ======================================= + + +sub_DFED proc near + mov dx, ax + mov bp, ax + add bp, bp + or ax, bp + xor dx, ax + add dx, dx + not dx + and ax, dx + retn +sub_DFED endp + +; --------------------------------------------------------------------------- + db 0E8h, 0ECh, 0FFh, 8Ah, 0DDh, 83h, 0E3h, 2 dup(3), 0DBh + db 64h, 23h, 87h +word_E00B dw 1234h ; DATA XREF: seg002:04F9w +; --------------------------------------------------------------------------- + retn +; --------------------------------------------------------------------------- + +loc_E00E: ; CODE XREF: sub_AAB5+B6P sub_AAB5+C1P ... + push bp + mov bp, sp + push si + push di + push ds + cli + mov al, 0C0h ; 'À' + out 7Ch, al + mov dx, 7Eh ; '~' + xor al, al + out dx, al + out dx, al + out dx, al + out dx, al + sti + mov si, [bp+6] + shl si, 4 + add si, 2716h + mov ax, [si+0Eh] + mov cs:word_E086, ax + jmp short $+2 + mov ax, [bp+8] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + assume es:nothing + push 0 + add ax, 3800h + push ax + sub ax, 2800h + push ax + sub ax, 800h + push ax + mov ax, [bp+0Ah] + shr ax, 3 + add ax, [si+6] + mov di, ax + mov bx, ax + mov ax, [si+8] + mov bp, ax + shl ax, 2 + add ax, 50h ; 'P' + mov dx, ax + mov ax, [si+0Ch] + mov ds, ax + xor si, si + cld + nop + +loc_E076: ; CODE XREF: seg002:066Dj + mov cx, bp + rep movsd + sub di, dx + jns short loc_E076 + xor al, al + out 7Ch, al + xor si, si +; --------------------------------------------------------------------------- + db 0B8h +word_E086 dw 1234h ; DATA XREF: seg002:0620w +; --------------------------------------------------------------------------- + mov ds, ax + +loc_E08A: ; CODE XREF: seg002:0692j + mov di, bx + +loc_E08C: ; CODE XREF: seg002:068Bj + mov cx, bp + +loc_E08E: ; CODE XREF: seg002:0687j + lodsd + or es:[di], eax + add di, 4 + loop loc_E08E + sub di, dx + jns short loc_E08C + pop ax + mov es, ax + or ax, ax + jnz short loc_E08A + pop ds + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0AC proc far ; CODE XREF: sub_A8F1+49P sub_A96C+43P ... + push bp + mov bp, sp + call sub_309E + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + 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_28FE + call sub_2600 + call sub_24EE + call sub_1D58 + call sub_86E + call sub_3D12 + pop bp + retf +sub_E0AC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0F4 proc far ; CODE XREF: _main+1AP + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push word_11A4E + call sub_26E2 + or ax, ax + jz short loc_E109 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_E109: ; CODE XREF: sub_E0F4+Ej + nop + push cs + call near ptr sub_DA12 + call sub_1D32 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1532 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + mov word_F8FE, 2000h + call sub_2552 + call sub_1D5E + call sub_252C + call sub_2520 + call sub_86E + call sub_323A + les bx, [bp+arg_0] + cmp byte ptr es:[bx], 0 + jz short loc_E169 + push word ptr [bp+arg_0+2] + push bx + call sub_2FE2 + +loc_E169: ; CODE XREF: sub_E0F4+6Aj + push 400h + call sub_3B6E + xor ax, ax + pop bp + retf +sub_E0F4 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E176 proc far ; CODE XREF: sub_D3A2+12P sub_D3A2+24P ... + +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 ds + mov ax, [bp+arg_2] + mov bx, ax + shl ax, 2 + add ax, bx + add ax, 0A800h + mov es, ax + add ax, 3800h + push ax + sub ax, 2800h + push ax + sub ax, 800h + push ax + mov si, [bp+arg_0] + shl si, 4 + add si, 2716h + mov bx, [bp+arg_4] + sar bx, 3 + add bx, [si+6] + mov ax, [si+8] + mov bp, ax + shl ax, 2 + add ax, 50h ; 'P' + mov dx, ax + mov ax, [si+0Eh] + mov ds, ax + xor si, si + mov al, 4 + cld + nop + +loc_E1C2: ; CODE XREF: sub_E176+5Cj + mov di, bx + +loc_E1C4: ; CODE XREF: sub_E176+55j + mov cx, bp + rep movsd + sub di, dx + jns short loc_E1C4 + dec al + jz short loc_E1D4 + pop es + jmp short loc_E1C2 +; --------------------------------------------------------------------------- + +loc_E1D4: ; CODE XREF: sub_E176+59j + pop ds + pop di + pop si + pop bp + retf 6 +sub_E176 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E1DC proc near ; CODE XREF: _main:loc_B43AP + ; sub_BC35+145P ... + xor ax, ax + mov word_11A50, ax + mov word_10DD2, ax +sub_E1DC endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_E1E4 proc far ; CODE XREF: sub_BC35:loc_BD84P + ; sub_DB62+18p ... + xor ax, ax + mov es, ax + assume es:seg000 + mov ah, es:byte_531 + test ah, 4 + jz short loc_E1F7 + or word_11A50, 1 + +loc_E1F7: ; CODE XREF: sub_E1E4+Cj + test ah, 20h + jz short loc_E201 + or word_11A50, 2 + +loc_E201: ; CODE XREF: sub_E1E4+16j + test ah, 8 + jz short loc_E20B + or word_11A50, 4 + +loc_E20B: ; CODE XREF: sub_E1E4+20j + test ah, 10h + jz short loc_E215 + or word_11A50, 8 + +loc_E215: ; CODE XREF: sub_E1E4+2Aj + mov ah, es:byte_533 + test ah, 1 + jz short loc_E224 + or word_11A50, 8 + +loc_E224: ; CODE XREF: sub_E1E4+39j + test ah, 4 + jz short loc_E22F + or word_11A50, 400h + +loc_E22F: ; CODE XREF: sub_E1E4+43j + test ah, 8 + jz short loc_E239 + or word_11A50, 2 + +loc_E239: ; CODE XREF: sub_E1E4+4Ej + test ah, 10h + jz short loc_E244 + or word_11A50, 800h + +loc_E244: ; CODE XREF: sub_E1E4+58j + mov ah, es:byte_532 + test ah, 40h + jz short loc_E253 + or word_11A50, 4 + +loc_E253: ; CODE XREF: sub_E1E4+68j + test ah, 4 + jz short loc_E25E + or word_11A50, 100h + +loc_E25E: ; CODE XREF: sub_E1E4+72j + test ah, 8 + jz short loc_E268 + or word_11A50, 1 + +loc_E268: ; CODE XREF: sub_E1E4+7Dj + test ah, 10h + jz short loc_E273 + or word_11A50, 200h + +loc_E273: ; CODE XREF: sub_E1E4+87j + mov ah, es:byte_52F + test ah, 2 + jz short loc_E282 + or word_11A50, 20h + +loc_E282: ; CODE XREF: sub_E1E4+97j + test ah, 4 + jz short loc_E28C + or word_11A50, 10h + +loc_E28C: ; CODE XREF: sub_E1E4+A1j + mov ah, es:byte_52C + test ah, 1 + jz short loc_E29C + or word_11A50, 4000h + +loc_E29C: ; CODE XREF: sub_E1E4+B0j + mov ah, es:byte_52A + test ah, 1 + jz short loc_E2AC + or word_11A50, 1000h + +loc_E2AC: ; CODE XREF: sub_E1E4+C0j + mov ah, es:byte_52D + test ah, 10h + jz short loc_E2BC + or word_11A50, 2000h + +loc_E2BC: ; CODE XREF: sub_E1E4+D0j + mov ah, es:byte_530 + test ah, 10h + jz short loc_E2CB + or word_11A50, 20h + +loc_E2CB: ; CODE XREF: sub_E1E4+E0j + mov ah, 2 + int 18h ; TRANSFER TO ROM BASIC + ; causes transfer to ROM-based BASIC (IBM-PC) + ; often reboots a compatible; often has no effect at all + and al, 1 + mov byte_11A52, al + cmp word_F8BC, 0 + jz short locret_E2E4 + call sub_349A + or word_11A50, ax + +locret_E2E4: ; CODE XREF: sub_E1E4+F5j + retf +sub_E1E4 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E2E6 proc far ; CODE XREF: sub_AE28+59P + ; sub_AE96:loc_AF2CP ... + mov byte_FD81, 0 + mov byte_FD80, 0FFh + retf +sub_E2E6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E2F2 proc far ; CODE XREF: sub_AE28+60P sub_AE96+9DP ... + mov bx, sp + mov dx, ss:[bx+4] + cmp byte_FD20, 0 + jz short locret_E328 + cmp byte_FD80, 0FFh + jnz short loc_E30D + mov byte_FD80, dl + retf 2 +; --------------------------------------------------------------------------- + +loc_E30D: ; CODE XREF: sub_E2F2+12j + mov bl, byte_FD80 + xor bh, bh + mov al, [bx+9BEh] + mov bx, dx + cmp al, [bx+9BEh] + ja short locret_E328 + mov byte_FD80, dl + mov byte_FD81, 0 + +locret_E328: ; CODE XREF: sub_E2F2+Bj sub_E2F2+2Bj + retf 2 +sub_E2F2 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E32C proc far ; CODE XREF: sub_AE28+65P sub_AE96+A2P ... + cmp byte_FD20, 0 + jz short locret_E377 + cmp byte_FD80, 0FFh + jz short locret_E377 + cmp byte_FD81, 0 + jnz short loc_E359 + mov al, byte_FD80 + cmp byte_FD20, 2 + jz short loc_E351 + mov ah, 0Ch + int 60h ; - Banyan VINES, 3com - GET STATION ADDRESS + ; Return: AL = status, 00h successful, ES:SI -> 6-byte station address + ; 02h semaphore service is unavailable + jmp short loc_E359 +; --------------------------------------------------------------------------- + +loc_E351: ; CODE XREF: sub_E32C+1Dj + xor ah, ah + push ax + call sub_3A64 + +loc_E359: ; CODE XREF: sub_E32C+13j sub_E32C+23j + inc byte_FD81 + mov bl, byte_FD80 + xor bh, bh + mov al, [bx+9CFh] + cmp al, byte_FD81 + jnb short locret_E377 + mov byte_FD81, 0 + mov byte_FD80, 0FFh + +locret_E377: ; CODE XREF: sub_E32C+5j sub_E32C+Cj ... + retf +sub_E32C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E378 proc far ; CODE XREF: sub_AAB5+1DP sub_AAB5+D2P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push di + cld + call sub_E3E8 + mov dx, 4A4h + mov ax, 29F0h + out dx, ax + mov ax, [bp+arg_6] + mov dx, [bp+arg_4] + mov bx, ax + sar bx, 4 + shl bx, 1 + shl dx, 6 + add bx, dx + shr dx, 2 + add bx, dx + mov di, bx + and ax, 0Fh + mov cx, ax + add ax, [bp+arg_2] + shr ax, 4 + or cx, cx + jz short loc_E3B0 + inc ax + +loc_E3B0: ; CODE XREF: sub_E378+35j + mov word_11A54, ax + mov cx, 28h ; '(' + sub cx, ax + shl cx, 1 + mov bx, [bp+arg_0] + mov bp, cx + mov ax, 0A800h + mov es, ax + assume es:nothing + +loc_E3C4: ; CODE XREF: sub_E378+63j + mov cx, word_11A54 + +loc_E3C8: ; CODE XREF: sub_E378+5Ej + mov al, 1 + out 0A6h, al ; Interrupt Controller #2, 8259A + mov dx, es:[di] + xor ax, ax + out 0A6h, al ; Interrupt Controller #2, 8259A + mov ax, dx + stosw + loop loc_E3C8 + add di, bp + dec bx + jns short loc_E3C4 + call sub_84E + pop di + pop bp + retf 8 +sub_E378 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E3E8 proc near ; CODE XREF: sub_E378+5p + push es + push 0 + pop es + assume es:seg000 + pushf + cli + mov al, 80h ; '€' + out 7Ch, al + mov byte ptr es:loc_493+2, al + popf + pop es + assume es:nothing + mov al, 7 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 5 + out 6Ah, al ; PC-98 GDC (6a): + ; + mov al, 6 + 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, 4A8h + mov ax, 0FFFFh + out dx, ax + mov dx, 4ACh + sub ax, ax + out dx, ax + mov dx, 4AEh + mov ax, 0Fh + out dx, ax + retn +sub_E3E8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E428 proc far ; CODE XREF: sub_BC35+54P sub_C3B7+75P + push si + push di + cmp word_FD82, 0 + jnz short loc_E45D + push 7D00h + call sub_2752 + mov word_FD82, ax + push 7D00h + call sub_2752 + mov word_FD84, ax + push 7D00h + call sub_2752 + mov word_FD86, ax + push 7D00h + call sub_2752 + mov word_FD88, ax + +loc_E45D: ; CODE XREF: sub_E428+7j + mov dl, 4 + push ds + push 0E000h + push word_FD88 + push 0B800h + push word_FD86 + push 0B000h + push word_FD84 + push 0A800h + push word_FD82 + +loc_E47C: ; CODE XREF: sub_E428+62j + pop es + pop ds + xor si, si + xor di, di + mov cx, 1F40h + rep movsd + dec dl + jnz short loc_E47C + pop ds + pop di + pop si + retf +sub_E428 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_E490 proc far ; CODE XREF: sub_BC35:loc_BE15P + push si + push di + mov dl, 4 + push ds + push 0E000h + push word_FD88 + push 0B800h + push word_FD86 + push 0B000h + push word_FD84 + push 0A800h + push word_FD82 + +loc_E4B1: ; CODE XREF: sub_E490+2Fj + pop ds + pop es + xor si, si + xor di, di + mov cx, 1F40h + rep movsd + dec dl + jnz short loc_E4B1 + pop ds + pop di + pop si + retf +sub_E490 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E4C6 proc far ; CODE XREF: sub_BC35+266P + ; sub_C3B7+1A9P + cmp word_FD82, 0 + jz short locret_E4F7 + push word_FD82 + call sub_2856 + push word_FD84 + call sub_2856 + push word_FD86 + call sub_2856 + push word_FD88 + call sub_2856 + mov word_FD82, 0 + +locret_E4F7: ; CODE XREF: sub_E4C6+5j + retf +sub_E4C6 endp + +; --------------------------------------------------------------------------- + +loc_E4F8: ; CODE XREF: sub_C33F+15P sub_C33F+29P ... + push bp + mov bp, sp + push di + push si + push ds + cld + mov ax, [bp+0Ch] + mov dx, [bp+0Ah] + mov bx, ax + sar bx, 4 + shl bx, 1 + shl dx, 6 + add bx, dx + shr dx, 2 + add bx, dx + mov cs:word_E55E, bx + and ax, 0Fh + mov cx, ax + add ax, [bp+8] + shr ax, 4 + or cx, cx + jz short loc_E52B + inc ax + +loc_E52B: ; CODE XREF: seg002:0B18j + mov cs:word_E563, ax + jmp short $+2 + mov cx, 28h ; '(' + sub cx, ax + shl cx, 1 + mov ax, [bp+6] + mov bp, cx + push 0E000h + push word_FD88 + push 0B800h + push word_FD86 + push 0B000h + push word_FD84 + push 0A800h + push word_FD82 + mov dl, 4 + mov bx, ax +; --------------------------------------------------------------------------- + db 0BFh +word_E55E dw 1234h ; DATA XREF: seg002:0B06w + db 1Fh, 7, 0B9h +word_E563 dw 1234h ; DATA XREF: seg002:loc_E52Bw + db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 79h, 0F4h, 0FEh + db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h + db 0C6h, 6, 4Ah, 0Ah, 1, 90h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ch] + push di + nop + push cs + call near ptr sub_E69A + shl di, 4 + add di, 2716h + push large dword ptr [bp+8] + call sub_A7A + push ds + push di + push 10h + call sub_9C6 + mov ax, [di] + mov dx, ax + cmp byte ptr [di+0Bh], 0 + jz short loc_E5BC + shl ax, 2 + cmp byte ptr [di+0Bh], 2 + jz short loc_E5BC + add ax, dx + +loc_E5BC: ; CODE XREF: seg002:0B9Fj seg002:0BA8j + mul word ptr [bp+6] + movzx eax, ax + push eax + push 1 + call sub_AB6 + call sub_E5E0 + call sub_95A + mov byte_FD8A, 0 + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E5E0 proc near ; CODE XREF: seg002:0BBCp sub_E63E+3Fp + mov al, [di+0Bh] + or al, al + jz short loc_E615 + cmp al, 2 + jz short loc_E5F2 + cmp byte_FD8A, 0 + jnz short loc_E608 + +loc_E5F2: ; CODE XREF: sub_E5E0+9j + push word ptr [di] + call sub_2752 + mov [di+0Ch], ax + push ax + push 0 + push word ptr [di] + call sub_9C6 + jmp short loc_E615 +; --------------------------------------------------------------------------- + +loc_E608: ; CODE XREF: sub_E5E0+10j + movzx eax, word ptr [di] + push eax + push 1 + call sub_AB6 + +loc_E615: ; CODE XREF: sub_E5E0+5j sub_E5E0+26j + cmp byte ptr [di+0Bh], 2 + jz short locret_E637 + mov ax, [di] + shl ax, 2 + push ax + call sub_2752 + mov [di+0Eh], ax + push ax + push 0 + mov ax, [di] + shl ax, 2 + push ax + call sub_9C6 + +locret_E637: ; CODE XREF: sub_E5E0+39j + retn +sub_E5E0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_E638 proc near ; CODE XREF: sub_CC97+2AP + mov byte_FD8A, 1 + nop +sub_E638 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E63E proc far ; CODE XREF: sub_CC97+9P sub_CC97+14P ... + +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + push large [bp+arg_0] + call sub_A7A + mov di, [bp+arg_4] + shl di, 4 + add di, 2716h + push ds + push di + push 10h + call sub_9C6 + mov si, di + mov bp, [bp+arg_4] + mov al, [si+0Ah] + mov byte_11E56, al + push ds + pop es + assume es:dseg + +loc_E66C: ; CODE XREF: sub_E63E+4Aj + push bp + push cs + call near ptr sub_E69A + mov cx, 3 + rep movsd + sub si, 0Ch + sub di, 0Ch + call sub_E5E0 + inc bp + add di, 10h + dec byte_11E56 + jnz short loc_E66C + call sub_95A + mov byte_FD8A, 0 + pop di + pop si + pop bp + retf 6 +sub_E63E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_E69A proc far ; CODE XREF: seg002:0B7Bp sub_E63E+30p ... + mov bx, sp + push di + mov di, ss:[bx+4] + shl di, 4 + add di, 2722h + cmp word ptr [di], 0 + jz short loc_E6B8 + push word ptr [di] + call sub_2856 + mov word ptr [di], 0 + +loc_E6B8: ; CODE XREF: sub_E69A+11j + add di, 2 + cmp word ptr [di], 0 + jz short loc_E6CB + push word ptr [di] + call sub_2856 + mov word ptr [di], 0 + +loc_E6CB: ; CODE XREF: sub_E69A+24j + pop di + retf 2 +sub_E69A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E6D0 proc far ; CODE XREF: sub_C3B7+8P sub_CCC8+3P + push si + mov si, 3Fh ; '?' + +loc_E6D4: ; CODE XREF: sub_E6D0+Aj + push si + push cs + call near ptr sub_E69A + dec si + jge short loc_E6D4 + pop si + retf +sub_E6D0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E6DE proc far ; CODE XREF: sub_C244+30P + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov word_10E06, 0 + +loc_E6E7: ; CODE XREF: sub_E6DE+Fj + mov ax, word_10E06 + cmp ax, [bp+arg_0] + jb short loc_E6E7 + pop bp + retf 2 +sub_E6DE endp + +seg002 ends + +; =========================================================================== + +; Segment type: Pure code +seg003 segment byte public 'CODE' use16 + assume cs:seg003 + ;org 3 + assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; string::string(string const &) +@string@$bctr$qmx6string proc far ; CODE XREF: xmsg::xmsg(string &)+52P + ; xmsg::xmsg(xmsg &)+56P ... + +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 0A045h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_E722 + 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_E73C + +loc_E722: ; 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_E73C: ; 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_E762 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:A03Do + db 0Dh dup(0), 2, 0, 2, 0, 4Bh, 0A0h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0B4h, 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, 52h, 67h + 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, 0A0B7h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_E80B + 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_E87F + +loc_E80B: ; 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_E86F + 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_E841 + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_E843 +; --------------------------------------------------------------------------- + +loc_E841: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_E843: ; 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_E86F: ; 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_E87F: ; CODE XREF: string::string(char *)+2Dj + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + push [bp+var_22] + call ___ExitExceptBlocks + mov dx, word ptr [bp+arg_0+2] + mov ax, word ptr [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +@string@$bctr$qnxc endp + +; --------------------------------------------------------------------------- + db 4, 0, 90h, 20h, 0Ah, 0, 94h, 2 + dw seg seg003 +aTstringref db 'TStringRef *',0 +byte_E8BC db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:A0A1o + db 0Dh dup(0), 2, 0, 2, 0, 0CDh, 0A0h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_E94C + dw 0 + db 3, 0Dh dup(0) +byte_E90A db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:A09Do + db 0Dh dup(0), 2, 0, 2, 0, 1Ah, 0A1h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Ch, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_E94C db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0206o + db 0Dh dup(0), 1, 0, 1, 0, 52h, 67h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 0Ch, 0 + db 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 32h, 0, 3Eh, 0Dh dup(0) + db 1, 0, 1, 0, 0ABh, 6 + dw seg seg003 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0DAh, 2 + dw seg seg003 + dw 0 + db 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh), 1, 0 + db 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h, 72h + db 65h, 6Eh, 63h, 65h, 0Ah dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string___string(void (*driver)(void), char) +@string@$bdtr$qv proc far ; CODE XREF: string::contains(char *)+45P + ; xmsg::~xmsg(void)+3FP ... + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 0A170h + 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_EA70 + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_EA5D + 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_ED9B + add sp, 6 + +loc_EA5D: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_EA70 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_EA70: ; 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, 0A1A4h + 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_EAAB + mov ax, 1 + jmp short loc_EAAD +; --------------------------------------------------------------------------- + +loc_EAAB: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_EAAD: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_EB2E + 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, 0A296h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 19BCh + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_EB2E: ; 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, 0A1E8h + 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_EB69 + mov ax, 1 + jmp short loc_EB6B +; --------------------------------------------------------------------------- + +loc_EB69: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_EB6B: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_EBEC + 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, 0A296h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 19DAh + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_EBEC: ; 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, 0A22Ch + 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_EC24 + mov ax, 1 + jmp short loc_EC26 +; --------------------------------------------------------------------------- + +loc_EC24: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_EC26: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_ECA7 + 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, 0A296h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 19F8h + push ax ; s + push ss + lea ax, [bp+driver] + push ax ; __int32 + nop + push cs + call near ptr @string@$bctr$qnxc ; string::string(char *) + add sp, 8 + lea ax, [bp+driver] + push ss + push ax + push ss + lea ax, [bp+src] + push ax + call @xmsg@$bctr$qmx6string ; xmsg::xmsg(string &) + add sp, 8 + mov [bp+var_1A], 0Eh + mov ax, 2 + push ax ; char + push ss + lea ax, [bp+driver] + push ax ; driver + push cs + call near ptr @string@$bdtr$qv ; string::~string(void) + add sp, 6 + mov [bp+var_1A], 6 + call @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + lea ax, [bp+src] + push ss + push ax ; src + push cs ; int + mov ax, 0BFDh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_ECA7: ; 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_ECD9 + 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_ECD9 + jmp loc_ED7F +; --------------------------------------------------------------------------- + +loc_ECD9: ; 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_EF33 + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_4DEE + 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_ED33 + push ds + mov ax, 1712h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_ED33: ; 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_ED7F: ; 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_ED9B(void (*driver)(void), char) +sub_ED9B 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, 0A246h + 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_EDED + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4CBB + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_EDED + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_EDED: ; CODE XREF: sub_ED9B+2Bj sub_ED9B+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_ED9B 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, 0A258h + 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_EF33 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_10CFA + jbe short loc_EE5B + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4F55 + 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_EE5B: ; CODE XREF: seg003:0742j + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; TStringRef::check_freeboard(void) +@TStringRef@check_freeboard$qv: + sub sp, 20h + push si + push di + mov ax, seg seg000 + mov bx, 0A262h + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_EF33 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_10CFA + jbe short loc_EEC3 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4F55 + 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_EEC3: ; CODE XREF: seg003:07AAj + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_EED1 proc far ; CODE XREF: seg003:08C2p + +var_1E = word ptr -1Eh +arg_0 = dword ptr 6 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + +; TStringRef::grow_to(unsigned int) +@TStringRef@grow_to$qui: + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 0A274h + 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_4F55 + 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_EF25 + push ds + mov ax, 1712h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_EF25: ; CODE XREF: sub_EED1+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_EED1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_EF33 proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg003:072Dp ... + +var_20 = word ptr -20h +var_1E = word ptr -1Eh +arg_0 = word ptr 6 + + push bp + mov bp, sp + +; TStringRef::round_capacity(unsigned int) +@TStringRef@round_capacity$qui: + sub sp, 20h + push si + push di + mov ax, seg seg000 + mov bx, 0A27Eh + call ___InitExceptBlocks + mov ax, word_10CF6 + mov [bp+var_20], ax + mov cx, word_10CF8 + 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_EF33 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, 0A290h + 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_EF33 + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_EFBA + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_EED1 + add sp, 6 + jmp short loc_F029 +; --------------------------------------------------------------------------- + +loc_EFBA: ; CODE XREF: seg003:08B8j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_10CFA + jbe short loc_F029 + test byte ptr es:[bx+0Ah], 1 + jnz short loc_F029 + mov ax, [bp-26h] + inc ax + push ax + call sub_4DEE + 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_EFFB + push ds + mov ax, 1712h + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_EFFB: ; CODE XREF: seg003:08FDj + cmp word ptr [bp+0Ah], 0 + jz short loc_F01D + 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_F01D: ; CODE XREF: seg003:090Fj + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_F03A +; --------------------------------------------------------------------------- + +loc_F029: ; CODE XREF: seg003:08C8j seg003:08D8j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_F03A: ; CODE XREF: seg003:0937j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_F057 + cmp ax, [bp-22h] + jnz short loc_F057 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_F089 + +loc_F057: ; CODE XREF: seg003:0958j seg003:095Dj + les bx, [bp+6] + mov ax, es:[bx+6] + sub ax, [bp+0Ah] + sub ax, [bp+0Ch] + push ax + mov ax, es:[bx+2] + add ax, [bp+0Ah] + add ax, [bp+0Ch] + push word ptr es:[bx+4] + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + add ax, [bp+12h] + push word ptr [bp-20h] + push ax + call _memmove + add sp, 0Ah + +loc_F089: ; CODE XREF: seg003:0965j + cmp word ptr [bp+12h], 0 + jz short loc_F0CD + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_F0B4 + 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_F0CD +; --------------------------------------------------------------------------- + +loc_F0B4: ; CODE XREF: seg003:09A5j + push word ptr [bp+12h] + mov ax, 20h ; ' ' + push ax + mov ax, [bp-22h] + add ax, [bp+0Ah] + push word ptr [bp-20h] + push ax + call _memset + add sp, 8 + +loc_F0CD: ; CODE XREF: seg003:099Dj seg003:09C2j + les bx, [bp+6] + mov ax, [bp-24h] + mov es:[bx+6], ax + push es + les ax, [bp-22h] + mov dx, es + pop es + add ax, es:[bx+6] + mov bx, ax + mov es, dx + mov byte ptr es:[bx], 0 + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_F0FF + cmp ax, [bp-22h] + jz short loc_F122 + +loc_F0FF: ; CODE XREF: seg003:0A08j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4CBB + 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_F122: ; CODE XREF: seg003:0A0Dj + push word ptr [bp-1Eh] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::set_case_sensitive(int) +@string@set_case_sensitive$qi: + sub sp, 2 + push si + push di + mov ax, word_10CF0 + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CF0, 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_10CF2 + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CF2, 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_10CF4 + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CF4, 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_10CF6 + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CF6, 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_10CF8 + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CF8, ax + cmp word_10CF8, 0 + jnz short loc_F1C5 + mov word_10CF8, 1 + +loc_F1C5: ; CODE XREF: seg003:0ACDj + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- + push bp + mov bp, sp + +; string::max_waste(unsigned int) +@string@max_waste$qui: + sub sp, 2 + push si + push di + mov ax, word_10CFA + mov [bp-2], ax + mov ax, [bp+6] + mov word_10CFA, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_F1EB db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:A26Co seg000:A288o + db 0Dh dup(0), 2, 0, 2, 0, 0CBh, 0A2h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_F27B + db 2 dup(0), 3, 0Dh dup(0), 6, 0, 3, 0, 26h, 0, 2 dup(0FFh) + db 7, 0, 2Eh, 0, 3Ah, 0Dh dup(0), 2, 0, 2, 0, 18h, 0A3h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 8Bh, 0Bh + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_F27B db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0B35o + db 0Dh dup(0), 1, 0, 1, 0, 52h, 67h + 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, 8, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_F2ED db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:A250o + db 0Dh dup(0), 2, 0, 2, 0, 65h, 0A3h + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0, 8Bh, 0Bh + dw seg seg003 + db 2 dup(0), 3, 12h dup(0) +seg003 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment para public 'DATA' use16 + assume cs:dseg +word_F340 dw 0 ; DATA XREF: sub_576+7r sub_4BEA+20r ... +word_F342 dw 0 ; DATA XREF: sub_576+1Dw sub_576+32w ... +word_F344 dw 554Eh ; DATA XREF: sub_576+20w sub_4C5B+Cr ... +word_F346 dw 4C4Ch ; DATA XREF: sub_576+Br sub_4C5B+2r ... +off_F348 dw offset sub_4320 ; DATA XREF: sub_576+26r sub_4B87+24r ... + dw offset sub_4548 +off_F34C dw offset sub_4B43 ; DATA XREF: sub_6EA2+77r sub_6EA2+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_F39A dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_F39E dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_F3A2 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_F3A6 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_F3AE dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:A034w +word_F3B2 dw 0 ; DATA XREF: start+127r seg000:A02Ew +word_F3B4 dw 0 ; DATA XREF: start+46w +word_F3B6 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_F3B8 dw 0 ; DATA XREF: start+55w seg000:9FE9r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_F3BC dw 0 ; DATA XREF: start+16w start+C7r ... +word_F3BE dw 0 ; DATA XREF: __IOERROR:loc_43A6w + ; seg000:52EEw ... + db 0FFh + db 0FFh + db 1Ch + db 40h ; @ +word_F3C4 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_F3C6 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_F3C8 dw 0 ; DATA XREF: sub_4FD6+6Ew __sbrk+12r ... +word_F3CA dw 0 ; DATA XREF: start+8Bw sub_4FD6+6Aw ... +word_F3CC dw 0 ; DATA XREF: sub_4FD6+7Ew __brk+1Cr ... +word_F3CE dw 0 ; DATA XREF: start+21w start+F5w ... + db 0 +unk_F3D1 db 0 ; DATA XREF: sub_A873+Ao + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_F3DB db 0 ; DATA XREF: sub_AE28+3r sub_AE28+11w ... +byte_F3DC db 0 ; DATA XREF: sub_AE96+190w + ; sub_AE96+19Cw ... +byte_F3DD db 1 ; DATA XREF: sub_AE96+Bw + dd aGqbGav ; "ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·" + dd aGgglgxgggigxge ; "ƒGƒLƒXƒgƒ‰ƒXƒe[ƒW‚ðŠJŽn‚µ‚Ü‚·" + dd aMNVGngcgxgrgav ; "Œ»Ý‚̃nƒCƒXƒRƒA‚ð•\\Ž¦‚µ‚Ü‚·" + dd aIKyoVU ; "‰¹ŠyŽº‚É“ü‚è‚Ü‚·" + dd aKeoarTsv ; "ŠeŽíÝ’è‚ð•ÏXo—ˆ‚Ü‚·" + dd aVcvnvrvCVsvV ; "‚c‚n‚r‚É–ß‚è‚Ü‚·" + dd aUqiUxv ; "“ïˆÕ“x‚ð‚₳‚µ‚­‚µ‚Ü‚·@i‰SŽÒŒü‚¯A‚"... + dd aUqiUxv_1 ; "“ïˆÕ“x‚ð•W€‚É‚µ‚Ü‚·@@@iˆê”ÊŒü‚¯A‘"... + dd aUqiUxv_0 ; "“ïˆÕ“x‚ð“‚­‚µ‚Ü‚·@@@iƒA[ƒP[ƒ_"... + dd aUqiUxv_2 ; "“ïˆÕ“x‚ð”ñí‚ɓ‚­‚µ‚Ü‚·@iƒVƒ…[ƒ^"... + dd aGqbGagxgBGgouv ; "ƒQ[ƒ€ƒXƒ^[ƒgŽž‚Ìl”‚ð•ÏXo—ˆ‚Ü‚·i"... + dd aGGavOgcpi ; "ƒ{ƒ€‚ÌŽg—p‰ñ”‚ð•ÏXo—ˆ‚Ü‚·iœ‚­ƒGƒLƒ"... + dd aVavfvlvCmvVVV ; "‚a‚f‚l‚Í—¬‚ê‚Ü‚¹‚ñ" + dd aVavfvlvVqvuvji ; "‚a‚f‚l‚É‚Q‚U‚j‰¹Œ¹ŒÝŠ·‚ðŽg—p‚µ‚Ü‚·" + dd aVavfvlvVwvuiMM ; "‚a‚f‚l‚É‚W‚U‰¹Œ¹ŒÝŠ·‚ðŽg—p‚µ‚Ü‚·" + dd aM_0 ; "Œø‰Ê‰¹‚Í—¬‚ê‚Ü‚¹‚ñ" + dd aM_2 ; "Œø‰Ê‰¹‚É‚e‚l‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·" + dd aM_1 ; "Œø‰Ê‰¹‚É‚a‚…‚…‚‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·" + dd aUgtevSVvpPkvBa ; "“G’e‚Ì‘½‚¢êŠ‚ÅA‚í‚´‚ƈ——Ž‚¿iƒXƒ"... + dd aPicacovV ; "ˆ——Ž‚¿‚ðƒ}ƒVƒ“‚̃Xƒs[ƒh‚É”C‚¹‚Ü‚·i•"... + dd aVVGigvgvgzguv ; "‚±‚̃IƒvƒVƒ‡ƒ“‚ð‘S‚Ä•W€‚É–ß‚µ‚Ü‚·" + dd aGigvgvgzguv ; "ƒIƒvƒVƒ‡ƒ“‚ðI—¹‚µ‚Ü‚·" + dd aGqbGav_0 ; "ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒC[ƒW[j" + dd aGqbGav_1 ; "ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒm[ƒ}ƒ‹j" + dd aGqbGav_2 ; "ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒn[ƒhj" + dd aGqbGav_3 ; "ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒ‹ƒiƒeƒBƒbƒNj" +byte_F446 db 0 ; DATA XREF: sub_AE96+4r sub_AE96+4Bw ... +byte_F447 db 0 ; DATA XREF: sub_B052+4r sub_B052+46w ... +aMiko_cfg db 'MIKO.CFG',0 ; DATA XREF: sub_A74C+5o sub_A7F0+5o ... +; char aMain[] +aMain db 'main',0 ; DATA XREF: sub_A8F1+5Do sub_A8F1+61o ... +; char path[] +path db 'deb',0 ; DATA XREF: sub_A8F1+6Ao sub_A8F1+6Eo +aGqbGav db 'ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·',0 ; DATA XREF: dseg:009Eo +aGgglgxgggigxge db 'ƒGƒLƒXƒgƒ‰ƒXƒe[ƒW‚ðŠJŽn‚µ‚Ü‚·',0 ; DATA XREF: dseg:00A2o +aMNVGngcgxgrgav db 'Œ»Ý‚̃nƒCƒXƒRƒA‚ð•\Ž¦‚µ‚Ü‚·',0 ; DATA XREF: dseg:00A6o +aIKyoVU db '‰¹ŠyŽº‚É“ü‚è‚Ü‚·',0 ; DATA XREF: dseg:00AAo +aKeoarTsv db 'ŠeŽíÝ’è‚ð•ÏXo—ˆ‚Ü‚·',0 ; DATA XREF: dseg:00AEo +aVcvnvrvCVsvV db '‚c‚n‚r‚É–ß‚è‚Ü‚·',0 ; DATA XREF: dseg:00B2o +aUqiUxv db '“ïˆÕ“x‚ð‚₳‚µ‚­‚µ‚Ü‚·@i‰SŽÒŒü‚¯A‚T–ʃGƒ“ƒhj',0 + ; DATA XREF: dseg:00B6o +aUqiUxv_1 db '“ïˆÕ“x‚ð•W€‚É‚µ‚Ü‚·@@@iˆê”ÊŒü‚¯A‘S‚U–Êj@@',0 + ; DATA XREF: dseg:00BAo +aUqiUxv_0 db '“ïˆÕ“x‚ð“‚­‚µ‚Ü‚·@@@iƒA[ƒP[ƒ_[Œü‚¯j@@',0 + ; DATA XREF: dseg:00BEo +aUqiUxv_2 db '“ïˆÕ“x‚ð”ñí‚ɓ‚­‚µ‚Ü‚·@iƒVƒ…[ƒ^[Œü‚¯j@@',0 + ; DATA XREF: dseg:00C2o +aGqbGagxgBGgouv db 'ƒQ[ƒ€ƒXƒ^[ƒgŽž‚Ìl”‚ð•ÏXo—ˆ‚Ü‚·iœ‚­ƒGƒLƒXƒgƒ‰j',0 + ; DATA XREF: dseg:00C6o +aGGavOgcpi db 'ƒ{ƒ€‚ÌŽg—p‰ñ”‚ð•ÏXo—ˆ‚Ü‚·iœ‚­ƒGƒLƒXƒgƒ‰j',0 + ; DATA XREF: dseg:00CAo +aVavfvlvCmvVVV db '‚a‚f‚l‚Í—¬‚ê‚Ü‚¹‚ñ',0 ; DATA XREF: dseg:00CEo +aVavfvlvVqvuvji db '‚a‚f‚l‚É‚Q‚U‚j‰¹Œ¹ŒÝŠ·‚ðŽg—p‚µ‚Ü‚·',0 ; DATA XREF: dseg:00D2o +aVavfvlvVwvuiMM db '‚a‚f‚l‚É‚W‚U‰¹Œ¹ŒÝŠ·‚ðŽg—p‚µ‚Ü‚·',0 ; DATA XREF: dseg:00D6o +aM_0 db 'Œø‰Ê‰¹‚Í—¬‚ê‚Ü‚¹‚ñ',0 ; DATA XREF: dseg:00DAo +aM_2 db 'Œø‰Ê‰¹‚É‚e‚l‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·',0 ; DATA XREF: dseg:00DEo +aM_1 db 'Œø‰Ê‰¹‚É‚a‚…‚…‚‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·',0 ; DATA XREF: dseg:00E2o +aUgtevSVvpPkvBa db '“G’e‚Ì‘½‚¢êŠ‚ÅA‚í‚´‚ƈ——Ž‚¿iƒXƒ[j‚³‚¹‚Ü‚·i‰SŽÒ—pj',0 + ; DATA XREF: dseg:00E6o +aPicacovV db 'ˆ——Ž‚¿‚ðƒ}ƒVƒ“‚̃Xƒs[ƒh‚É”C‚¹‚Ü‚·i•W€j',0 ; DATA XREF: dseg:00EAo +aVVGigvgvgzguv db '‚±‚̃IƒvƒVƒ‡ƒ“‚ð‘S‚Ä•W€‚É–ß‚µ‚Ü‚·',0 ; DATA XREF: dseg:00EEo +aGigvgvgzguv db 'ƒIƒvƒVƒ‡ƒ“‚ðI—¹‚µ‚Ü‚·',0 ; DATA XREF: dseg:00F2o +aGqbGav_0 db 'ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒC[ƒW[j',0 ; DATA XREF: dseg:00F6o +aGqbGav_1 db 'ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒm[ƒ}ƒ‹j',0 ; DATA XREF: dseg:00FAo +aGqbGav_2 db 'ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒn[ƒhj',0 ; DATA XREF: dseg:00FEo +aGqbGav_3 db 'ƒQ[ƒ€‚ðŠJŽn‚µ‚Ü‚·iƒ‹ƒiƒeƒBƒbƒNj',0 ; DATA XREF: dseg:0102o +aOp1_pi db 'op1.pi',0 ; DATA XREF: sub_AE96+CCo + ; sub_AE96+130o +aOp db 'op',0 ; DATA XREF: sub_B052+E4o + ; sub_B052+1B6o ... +aMSzlEd_dat db 'Œ¶‘z‹½ed.dat',0 ; DATA XREF: _main+17o +asc_F7F7 db 0Ah ; DATA XREF: _main+27o + db '‹ó‚«ƒƒ‚ƒŠ•s‘«‚Å‚·Bƒƒ‚ƒŠ‹ó‚«‚ð‘‚₵‚Ä‚©‚çŽÀs‚µ‚Ä‚Ë',0Ah,0 +aGameft_bft db 'GAMEFT.bft',0 ; DATA XREF: _main+3Ao +aMiko db 'miko',0 ; DATA XREF: _main+74o +word_F840 dw 0 ; DATA XREF: seg000:048Dr + ; seg000:loc_493w +word_F842 dw 0 ; DATA XREF: seg000:0481r +word_F844 dw 0 ; DATA XREF: seg000:0484r +byte_F846 db 0 ; DATA XREF: seg000:04B5r +byte_F847 db 0 ; DATA XREF: seg000:049Dr +aBfnt db 'BFNT' + db 1Ah + db 0 +word_F84E dw 0 ; DATA XREF: sub_BD4:loc_BE9r + ; sub_D3C+21r ... +word_F850 dw 27Fh ; DATA XREF: sub_BD4+19r sub_D3C+3Ar ... +word_F852 dw 27Fh ; DATA XREF: sub_DC2+75r sub_14E4+33w ... +word_F854 dw 0 ; DATA XREF: sub_BD4:loc_C12r + ; sub_CA4+3r ... +word_F856 dw 18Fh ; DATA XREF: sub_BD4+42r sub_CA4+1Fr ... +word_F858 dw 18Fh ; DATA XREF: sub_DC2+84r sub_DC2+93r ... +word_F85A dw 0A800h ; DATA XREF: sub_BD4+66r sub_CA4+19r ... +word_F85C dw 7CB0h ; DATA XREF: sub_14E4+46w + ; seg000:loc_3264r + dw 0 + db 80h ; € + db 0 + db 0C0h ; À + db 0 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 0 + db 0F8h ; ø + db 0 + db 0FCh ; ü + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 80h ; € + db 0FFh + db 0C0h ; À + db 0FFh + db 0E0h ; à + db 0FFh + db 0F0h ; ð + db 0FFh + db 0F8h ; ø + db 0FFh + db 0FCh ; ü + db 0FFh + db 0FEh ; þ + db 0FFh + db 0FFh +word_F880 dw 0 ; DATA XREF: sub_9C6+5r sub_9C6+26r ... +word_F882 dw 0FFFFh ; DATA XREF: sub_89A+6r sub_89A+1Fw ... +byte_F884 db 0 ; DATA XREF: sub_BB4+4r + db 0 + db 0Dh + db 16h + db 20h + db 22h ; " + db 27h ; ' + db 2Ah ; * + db 2Eh ; . + db 36h ; 6 + db 3Fh ; ? + db 0 +aIbmadsp db '$IBMADSP',0 +aIbmafnt db '$IBMAFNT',0 +dword_F8A2 dd 0 ; DATA XREF: sub_1316-8Cr +word_F8A6 dw 0 ; DATA XREF: sub_1332+2r sub_1332+15w ... + db 10h + db 0 + db 10h + db 0 + db 0 + db 0 + db 0FFh + db 0 +word_F8B0 dw 0A800h ; DATA XREF: sub_14E4+9w sub_1532+18r ... +word_F8B2 dw 3E80h ; DATA XREF: sub_14E4+Fw sub_1532+14r ... +word_F8B4 dw 190h ; DATA XREF: sub_14E4+3Cw + db 50h ; P + db 0 +word_F8B8 dw 0 ; DATA XREF: sub_14E4+2Dw + db 55h ; U + db 0 +word_F8BC dw 0 ; DATA XREF: sub_323A:loc_325Fw + ; sub_E1E4+F0r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_F8C4 dw 0 ; DATA XREF: sub_1316:loc_1179w + ; sub_1316:loc_12CCw ... +word_F8C6 dw 64h ; DATA XREF: sub_622+8w + ; sub_622:loc_649w ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0FFh + db 0FFh + db 0 + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 0FFh + db 0FFh + db 0FFh + db 0FFh + db 0 + db 0FFh + db 0FFh + db 0FFh + db 77h ; w + db 77h ; w + db 77h ; w + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0 + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª + db 0 + db 0AAh ; ª + db 0AAh ; ª + db 0AAh ; ª +word_F8F8 dw 0 ; DATA XREF: seg000:1E0Br +word_F8FA dw 0 ; DATA XREF: sub_2F0C+36w sub_2F48+46w ... + db 0 + db 0 +word_F8FE dw 200h ; DATA XREF: seg000:06ADr seg000:06D3r ... +byte_F900 db 0 ; DATA XREF: seg000:loc_6E0w + ; seg000:06ECw + db 0 + db 0 + db 0 +word_F904 dw 1 ; DATA XREF: sub_204E+Cr sub_204E+15r ... +word_F906 dw 0 ; DATA XREF: sub_204E+3r sub_204E+23w + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0 + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FEh ; þ + db 0 + db 0FDh ; ý + db 0 + db 0FCh ; ü + db 0 + db 0FBh ; û + db 0 + db 0FAh ; ú + db 0 + db 0F8h ; ø + db 0 + db 0F7h ; ÷ + db 0 + db 0F5h ; õ + db 0 + db 0F3h ; ó + db 0 + db 0F1h ; ñ + db 0 + db 0EFh ; ï + db 0 + db 0EDh ; í + db 0 + db 0EAh ; ê + db 0 + db 0E7h ; ç + db 0 + db 0E5h ; å + db 0 + db 0E2h ; â + db 0 + db 0DFh ; ß + db 0 + db 0DCh ; Ü + db 0 + db 0D8h ; Ø + db 0 + db 0D5h ; Õ + db 0 + db 0D1h ; Ñ + db 0 + db 0CEh ; Î + db 0 + db 0CAh ; Ê + db 0 + db 0C6h ; Æ + db 0 + db 0C2h ;  + db 0 + db 0BEh ; ¾ + db 0 + db 0B9h ; ¹ + db 0 + db 0B5h ; µ + db 0 + db 0B1h ; ± + db 0 + db 0ACh ; ¬ + db 0 + db 0A7h ; § + db 0 + db 0A2h ; ¢ + db 0 + db 9Dh ; + db 0 + db 98h ; ˜ + db 0 + db 93h ; “ + db 0 + db 8Eh ; Ž + db 0 + db 89h ; ‰ + db 0 + db 84h ; „ + db 0 + db 7Eh ; ~ + db 0 + db 79h ; y + db 0 + db 73h ; s + db 0 + db 6Dh ; m + db 0 + db 68h ; h + db 0 + db 62h ; b + db 0 + db 5Ch ; \ + db 0 + db 56h ; V + db 0 + db 50h ; P + db 0 + db 4Ah ; J + db 0 + db 44h ; D + db 0 + db 3Eh ; > + db 0 + db 38h ; 8 + db 0 + db 32h ; 2 + db 0 + db 2Ch ; , + db 0 + db 26h ; & + db 0 + db 1Fh + db 0 + db 19h + db 0 + db 13h + db 0 + db 0Dh + db 0 + db 6 + db 0 + db 0 + db 0 + db 0FAh ; ú + db 0FFh + db 0F3h ; ó + db 0FFh + db 0EDh ; í + db 0FFh + db 0E7h ; ç + db 0FFh + db 0E1h ; á + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0CEh ; Î + db 0FFh + db 0C8h ; È + db 0FFh + db 0C2h ;  + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0B0h ; ° + db 0FFh + db 0AAh ; ª + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 9Eh ; ž + db 0FFh + db 98h ; ˜ + db 0FFh + db 93h ; “ + db 0FFh + db 8Dh ; + db 0FFh + db 87h ; ‡ + db 0FFh + db 82h ; ‚ + db 0FFh + db 7Ch ; | + db 0FFh + db 77h ; w + db 0FFh + db 72h ; r + db 0FFh + db 6Dh ; m + db 0FFh + db 68h ; h + db 0FFh + db 63h ; c + db 0FFh + db 5Eh ; ^ + db 0FFh + db 59h ; Y + db 0FFh + db 54h ; T + db 0FFh + db 4Fh ; O + db 0FFh + db 4Bh ; K + db 0FFh + db 47h ; G + db 0FFh + db 42h ; B + db 0FFh + db 3Eh ; > + db 0FFh + db 3Ah ; : + db 0FFh + db 36h ; 6 + db 0FFh + db 32h ; 2 + db 0FFh + db 2Fh ; / + db 0FFh + db 2Bh ; + + db 0FFh + db 28h ; ( + db 0FFh + db 24h ; $ + db 0FFh + db 21h ; ! + db 0FFh + db 1Eh + db 0FFh + db 1Bh + db 0FFh + db 19h + db 0FFh + db 16h + db 0FFh + db 13h + db 0FFh + db 11h + db 0FFh + db 0Fh + db 0FFh + db 0Dh + db 0FFh + db 0Bh + db 0FFh + db 9 + db 0FFh + db 8 + db 0FFh + db 6 + db 0FFh + db 5 + db 0FFh + db 4 + db 0FFh + db 3 + db 0FFh + db 2 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0FFh + db 1 + db 0FFh + db 1 + db 0FFh + db 2 + db 0FFh + db 3 + db 0FFh + db 4 + db 0FFh + db 5 + db 0FFh + db 6 + db 0FFh + db 8 + db 0FFh + db 9 + db 0FFh + db 0Bh + db 0FFh + db 0Dh + db 0FFh + db 0Fh + db 0FFh + db 11h + db 0FFh + db 13h + db 0FFh + db 16h + db 0FFh + db 19h + db 0FFh + db 1Bh + db 0FFh + db 1Eh + db 0FFh + db 21h ; ! + db 0FFh + db 24h ; $ + db 0FFh + db 28h ; ( + db 0FFh + db 2Bh ; + + db 0FFh + db 2Fh ; / + db 0FFh + db 32h ; 2 + db 0FFh + db 36h ; 6 + db 0FFh + db 3Ah ; : + db 0FFh + db 3Eh ; > + db 0FFh + db 42h ; B + db 0FFh + db 47h ; G + db 0FFh + db 4Bh ; K + db 0FFh + db 4Fh ; O + db 0FFh + db 54h ; T + db 0FFh + db 59h ; Y + db 0FFh + db 5Eh ; ^ + db 0FFh + db 63h ; c + db 0FFh + db 68h ; h + db 0FFh + db 6Dh ; m + db 0FFh + db 72h ; r + db 0FFh + db 77h ; w + db 0FFh + db 7Ch ; | + db 0FFh + db 82h ; ‚ + db 0FFh + db 87h ; ‡ + db 0FFh + db 8Dh ; + db 0FFh + db 93h ; “ + db 0FFh + db 98h ; ˜ + db 0FFh + db 9Eh ; ž + db 0FFh + db 0A4h ; ¤ + db 0FFh + db 0AAh ; ª + db 0FFh + db 0B0h ; ° + db 0FFh + db 0B6h ; ¶ + db 0FFh + db 0BCh ; ¼ + db 0FFh + db 0C2h ;  + db 0FFh + db 0C8h ; È + db 0FFh + db 0CEh ; Î + db 0FFh + db 0D4h ; Ô + db 0FFh + db 0DAh ; Ú + db 0FFh + db 0E1h ; á + db 0FFh + db 0E7h ; ç + db 0FFh + db 0EDh ; í + db 0FFh + db 0F3h ; ó + db 0FFh + db 0FAh ; ú + db 0FFh + db 0 + db 0 + db 6 + db 0 + db 0Dh + db 0 + db 13h + db 0 + db 19h + db 0 + db 1Fh + db 0 + db 26h ; & + db 0 + db 2Ch ; , + db 0 + db 32h ; 2 + db 0 + db 38h ; 8 + db 0 + db 3Eh ; > + db 0 + db 44h ; D + db 0 + db 4Ah ; J + db 0 + db 50h ; P + db 0 + db 56h ; V + db 0 + db 5Ch ; \ + db 0 + db 62h ; b + db 0 + db 68h ; h + db 0 + db 6Dh ; m + db 0 + db 73h ; s + db 0 + db 79h ; y + db 0 + db 7Eh ; ~ + db 0 + db 84h ; „ + db 0 + db 89h ; ‰ + db 0 + db 8Eh ; Ž + db 0 + db 93h ; “ + db 0 + db 98h ; ˜ + db 0 + db 9Dh ; + db 0 + db 0A2h ; ¢ + db 0 + db 0A7h ; § + db 0 + db 0ACh ; ¬ + db 0 + db 0B1h ; ± + db 0 + db 0B5h ; µ + db 0 + db 0B9h ; ¹ + db 0 + db 0BEh ; ¾ + db 0 + db 0C2h ;  + db 0 + db 0C6h ; Æ + db 0 + db 0CAh ; Ê + db 0 + db 0CEh ; Î + db 0 + db 0D1h ; Ñ + db 0 + db 0D5h ; Õ + db 0 + db 0D8h ; Ø + db 0 + db 0DCh ; Ü + db 0 + db 0DFh ; ß + db 0 + db 0E2h ; â + db 0 + db 0E5h ; å + db 0 + db 0E7h ; ç + db 0 + db 0EAh ; ê + db 0 + db 0EDh ; í + db 0 + db 0EFh ; ï + db 0 + db 0F1h ; ñ + db 0 + db 0F3h ; ó + db 0 + db 0F5h ; õ + db 0 + db 0F7h ; ÷ + db 0 + db 0F8h ; ø + db 0 + db 0FAh ; ú + db 0 + db 0FBh ; û + db 0 + db 0FCh ; ü + db 0 + db 0FDh ; ý + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 0 + db 0 + db 1 + db 0 + db 1 + db 0 + db 0 + db 0 + db 0A0h ;   + db 50h ; P + db 0 +word_FB8E dw 1 ; DATA XREF: sub_15C2+2Er +unk_FB90 db 0 ; DATA XREF: seg000:25ECr + db 0 +word_FB92 dw 0 ; DATA XREF: seg000:25DEr +word_FB94 dw 0 ; DATA XREF: sub_2552+Ew sub_2552+16w ... +byte_FB96 db 0 ; DATA XREF: sub_2552+24r sub_2552+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_FBA0 dw 0 ; DATA XREF: sub_248Er sub_2704+6w ... +word_FBA2 dw 0 ; DATA XREF: sub_26E2+15w sub_2704+1Bw ... +word_FBA4 dw 0 ; DATA XREF: seg000:06A7w sub_1670+DFw ... +word_FBA6 dw 100h ; DATA XREF: sub_272A+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_FBAD db 0 ; DATA XREF: sub_2A86+24r + ; sub_2A86:loc_2ACCr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_FBB4 dw 0 ; DATA XREF: sub_2A86+6Er +word_FBB6 dw 0 ; DATA XREF: sub_2A86+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_FBC4 dw 0 ; DATA XREF: sub_2A86+32r + dw 0 +word_FBC8 dw 0 ; DATA XREF: sub_2922r sub_2922+7r ... +word_FBCA dw 0 ; DATA XREF: sub_2922:loc_293Fr + ; sub_2966+5r ... +word_FBCC dw 0 ; DATA XREF: sub_2922+24r sub_2922+2Br +aPal98Grb db 'pal98 grb',0 + dw 0FFFFh +a_exe db '.exe',0 + db 0 +word_FBE0 dw 1 ; DATA XREF: seg000:382Dr seg000:3837w ... + db 48h ; H + db 57h ; W + db 0C0h ; À + db 4Dh ; M + db 0D8h ; Ø + db 92h ; ’ + db 0D8h ; Ø + db 82h ; ‚ + db 88h ; ˆ + db 74h ; t + db 8 + db 6Eh ; n + db 0F8h ; ø + db 61h ; a + db 64h ; d + db 0 + db 68h ; h + db 52h ; R + db 64h ; d + db 0 + db 0A0h ;   + db 8Ah ; Š + db 78h ; x + db 7Bh ; { + db 64h ; d + db 0 + db 0C8h ; È + db 67h ; g + db 68h ; h + db 5Ch ; \ + db 64h ; d + db 0 + db 68h ; h + db 5Ch ; \ + db 68h ; h + db 52h ; R + db 64h ; d + db 0 + db 0A0h ;   + db 8Ah ; Š + db 78h ; x + db 7Bh ; { + db 64h ; d + db 0 + db 0C8h ; È + db 67h ; g + db 64h ; d + db 0 + db 40h ; @ + db 0 + db 20h + db 0 + db 20h + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 10h + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 8 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 4 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 2 + db 0 + db 1 + db 0 +word_FC92 dw 0 ; DATA XREF: sub_3772+Cw sub_3772+31r ... +word_FC94 dw 0 ; DATA XREF: sub_3772+28r seg000:3833r ... +word_FC96 dw 0 ; DATA XREF: sub_3B40+12w +word_FC98 dw 0 ; DATA XREF: seg000:3864r seg000:387Ew ... +word_FC9A dw 0 ; DATA XREF: sub_3B6E+ABw +word_FC9C dw 0 ; DATA XREF: sub_3936+6r + ; sub_3936:loc_39E0r ... +word_FC9E dw 0 ; DATA XREF: sub_3936+CAw sub_3936+E1r ... +word_FCA0 dw 0 ; DATA XREF: seg000:3877r sub_3B6E+BDw +word_FCA2 dw 0 ; DATA XREF: seg000:3854w seg000:3858r ... +word_FCA4 dw 0 ; DATA XREF: sub_3B6E+2Ew + ; sub_3B6E+139r +word_FCA6 dw 0 ; DATA XREF: sub_3B6E+C9w +word_FCA8 dw 0 ; DATA XREF: sub_3B6E+9Fw +word_FCAA dw 0 ; DATA XREF: sub_37E0+6r sub_3B6E+A5w + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_FCCC dw 0 ; DATA XREF: sub_3936+FFr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_FCEE dw 0 ; DATA XREF: seg000:3898r seg000:38A7w ... +word_FCF0 dw 0 ; DATA XREF: sub_3632+64r sub_3632+CCr ... +word_FCF2 dw 0 ; DATA XREF: sub_3A64+25w sub_3AAEr ... +word_FCF4 dw 0 ; DATA XREF: sub_3B6E+EFw +word_FCF6 dw 0 ; DATA XREF: sub_3A64:loc_3A7Dr + ; sub_3B6E+F5w +word_FCF8 dw 0 ; DATA XREF: sub_3B6E+Dr + ; sub_3B6E:loc_3D03w ... +word_FCFA dw 0 ; DATA XREF: sub_3B40+16r + ; sub_3B6E+126w +word_FCFC dw 0 ; DATA XREF: sub_3B40+19r + ; sub_3B6E+122w + db 0 + db 0 + db 20h + db 10h + db 2 + db 12h + db 12h + db 40h ; @ + db 10h + db 11h + db 2 + db 12h + db 20h + db 20h + db 20h + db 20h + db 0 + db 0 + db 0 + db 24h ; $ + db 10h + db 4 + db 10h + db 8 + db 30h ; 0 + db 50h ; P + db 11h + db 4 + db 0Bh + db 50h ; P + db 50h ; P + db 50h ; P + db 20h + db 0 +byte_FD20 db 0 ; DATA XREF: sub_DC16+Dw + ; sub_DCE4:loc_DD30w ... +byte_FD21 db 0 ; DATA XREF: sub_DC16+Aw sub_DC74+3r ... +byte_FD22 db 0 ; DATA XREF: sub_DC16+7w sub_DC44+23w ... + db 0 + dd aM26 ; "m26" + dd aM26 ; "m26" + dd aM86 ; "m86" + dd aMmd ; "mmd" +aM26 db 'm26',0 ; DATA XREF: dseg:09E4o dseg:09E8o +aM86 db 'm86',0 ; DATA XREF: dseg:09ECo +aMmd db 'mmd',0 ; DATA XREF: dseg:09F0o + db 71h ; q + db 0 + db 6Bh ; k + db 0 + db 78h ; x + db 0 + db 72h ; r + db 0 + db 89h ; ‰ + db 0 + db 1Fh + db 0 + db 19h + db 0 + db 26h ; & + db 0 + db 20h + db 0 + db 37h ; 7 + db 0 + db 1Ch + db 0Ah + db 24h ; $ + db 0Ah + db 2Ch ; , + db 0Ah + db 34h ; 4 + db 0Ah + db 88h ; ˆ + db 88h ; ˆ + db 0 + db 0 + db 22h ; " + db 22h ; " + db 0 + db 0 + db 88h ; ˆ + db 88h ; ˆ + db 44h ; D + db 44h ; D + db 22h ; " + db 22h ; " + db 11h + db 11h + db 0AAh ; ª + db 0AAh ; ª + db 44h ; D + db 44h ; D + db 0AAh ; ª + db 0AAh ; ª + db 11h + db 11h + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U +word_FD7C dw 2 ; DATA XREF: sub_AAB5+D7w + ; sub_ABD7+204w ... +word_FD7E dw 10h ; DATA XREF: seg002:0510r +byte_FD80 db 0FFh ; DATA XREF: sub_E2E6+5w sub_E2F2+Dr ... +byte_FD81 db 0 ; DATA XREF: sub_E2E6w sub_E2F2+31w ... +word_FD82 dw 0 ; DATA XREF: sub_E428+2r sub_E428+11w ... +word_FD84 dw 0 ; DATA XREF: sub_E428+1Cw sub_E428+49r ... +word_FD86 dw 0 ; DATA XREF: sub_E428+27w sub_E428+42r ... +word_FD88 dw 0 ; DATA XREF: sub_E428+32w sub_E428+3Br ... +byte_FD8A db 0 ; DATA XREF: seg002:0BC4w sub_E5E0+Br ... + db 0 + dd aGxgegmgivevliM ; "ƒXƒeƒŒƒI‚e‚l‰¹Œ¹FPC-9801-86(ŒÝŠ·)ƒ{[ƒ"... + dd aB@b@b@b@b@b@b@ ; "@@@@@@@@@CanBe“à‘ ‰¹Œ¹‚È‚ÇA "... + dd aB@b@b@b@b@b@_0 ; "@@@@@@@‚e‚l‚U‰¹{‚r‚r‚f‚R‰¹{ƒŠƒ"... + dd aB@xwpavevliMBf ; "@•W€‚e‚l‰¹Œ¹F PC-9801-26K(ŒÝŠ·)ƒ{["... + dd aPc9801dausvUrs ; " PC-9801DA“™‚É“à‘ ‚̉¹"... + dd aB@b@b@b@b@b@_1 ; "@@@@@@@@@‚e‚l‚R‰¹{‚r‚r‚f‚R‰¹ "... + dd aB@b@iKycVBfb@b ; "@@‰¹Šy–³‚µF@@‚e‚l‰¹Œ¹‚ª–³‚¢ê‡ "... + dd asc_FF1D ; " "... + dd aVVibavVVcvRTsv ; "‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰"... + dd aB@vevliMB@bfm ; "@‚e‚l‰¹Œ¹@FŒø‰Ê‰¹‚É‚e‚l‰¹Œ¹‚ðŽg—p‚µ‚"... + dd aB@b@b@b@b@b@_2 ; "@@@@@@@‚a‚f‚l‚ªƒXƒeƒŒƒI‚e‚l‰¹Œ¹Ž"... + dd aB@B@B@b@bixwpa ; "@ @ @@i•W€‚e‚l‰¹Œ¹‚Å‚ÍA3ch‚ðŽg—p"... + dd aB@B@b@b@b@VVBa ; "@ @@@@ ‚Ì‚ÅA‚a‚f‚l‚ª³í‚É‚«‚¯‚È‚"... + dd aVavevevriMBfm ; "‚a‚…‚…‚‰¹Œ¹FŒø‰Ê‰¹‚É‚a‚…‚…‚‰¹Œ¹‚ðŽg—"... + dd aVevliMVkcVvpNz ; " ‚e‚l‰¹Œ¹‚ª–³‚¢ê‡Žg—p‚µ‚"... + dd aM ; " Œø‰Ê‰¹–³‚µ F‰½‚ç‚©‚ÌŽ–î‚ÅŒø‰Ê‰¹‚ð–‚"... + dd aB@b@b@b@b@b@_3 ; "@@@@@@@–³‚¢ê‡ "... + dd aVVibavVVcvRTsv ; "‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰"... +aGxgegmgivevliM db 'ƒXƒeƒŒƒI‚e‚l‰¹Œ¹FPC-9801-86(ŒÝŠ·)ƒ{[ƒh@@@',0 + ; DATA XREF: dseg:0A4Co +aB@b@b@b@b@b@b@ db '@@@@@@@@@CanBe“à‘ ‰¹Œ¹‚È‚ÇA ',0 + ; DATA XREF: dseg:0A50o +aB@b@b@b@b@b@_0 db '@@@@@@@‚e‚l‚U‰¹{‚r‚r‚f‚R‰¹{ƒŠƒYƒ€‰¹Œ¹',0 + ; DATA XREF: dseg:0A54o +aB@xwpavevliMBf db '@•W€‚e‚l‰¹Œ¹F PC-9801-26K(ŒÝŠ·)ƒ{[ƒh ',0 + ; DATA XREF: dseg:0A58o +aPc9801dausvUrs db ' PC-9801DA“™‚É“à‘ ‚̉¹Œ¹‚È‚Ç ',0 + ; DATA XREF: dseg:0A5Co +aB@b@b@b@b@b@_1 db '@@@@@@@@@‚e‚l‚R‰¹{‚r‚r‚f‚R‰¹ ',0 + ; DATA XREF: dseg:0A60o +aB@b@iKycVBfb@b db '@@‰¹Šy–³‚µF@@‚e‚l‰¹Œ¹‚ª–³‚¢ê‡ ',0 + ; DATA XREF: dseg:0A64o +asc_FF1D db ' ',0 + ; DATA XREF: dseg:0A68o +aVVibavVVcvRTsv db '‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰Â”\‚Å‚·',0 + ; DATA XREF: dseg:0A6Co dseg:0A90o +aB@vevliMB@bfm db '@‚e‚l‰¹Œ¹@FŒø‰Ê‰¹‚É‚e‚l‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·@@',0 + ; DATA XREF: dseg:0A70o +aB@b@b@b@b@b@_2 db '@@@@@@@‚a‚f‚l‚ªƒXƒeƒŒƒI‚e‚l‰¹Œ¹Žž„§@',0 + ; DATA XREF: dseg:0A74o +aB@B@B@b@bixwpa db '@ @ @@i•W€‚e‚l‰¹Œ¹‚Å‚ÍA3ch‚ðŽg—p‚µ‚Ü‚· ',0 + ; DATA XREF: dseg:0A78o +aB@B@b@b@b@VVBa db '@ @@@@ ‚Ì‚ÅA‚a‚f‚l‚ª³í‚É‚«‚¯‚È‚¢‚©‚àj',0 + ; DATA XREF: dseg:0A7Co +aVavevevriMBfm db '‚a‚…‚…‚‰¹Œ¹FŒø‰Ê‰¹‚É‚a‚…‚…‚‰¹Œ¹‚ðŽg—p‚µ‚Ü‚·',0 + ; DATA XREF: dseg:0A80o +aVevliMVkcVvpNz db ' ‚e‚l‰¹Œ¹‚ª–³‚¢ê‡Žg—p‚µ‚Ü‚·@@',0 + ; DATA XREF: dseg:0A84o +aM db ' Œø‰Ê‰¹–³‚µ F‰½‚ç‚©‚ÌŽ–î‚ÅŒø‰Ê‰¹‚ð–‚炵‚½‚­',0 + ; DATA XREF: dseg:0A88o +aB@b@b@b@b@b@_3 db '@@@@@@@–³‚¢ê‡ ',0 + ; DATA XREF: dseg:0A8Co +aGxgegmgivevl_0 db 'ƒXƒeƒŒƒI‚e‚l‰¹Œ¹',0 +aB@xwpavevliMB@ db '@•W€‚e‚l‰¹Œ¹@',0 +aB@b@iKycVB@b@ db '@@‰¹Šy–³‚µ@@',0 +aB@b@vevliMB@b@ db '@@‚e‚l‰¹Œ¹@@',0 +aB@vavevevriMB@ db '@‚a‚…‚…‚‰¹Œ¹@',0 +aB@M db '@ Œø‰Ê‰¹–³‚µ @',0 +aB@b@b@b@b@ogcp db '@@@@@Žg—p‚·‚鉹Œ¹‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢‚Ë™',0 ; DATA XREF: sub_B794+1Co +aB@b@b@b@m db '@@@@Œø‰Ê‰¹‚ÉŽg—p‚·‚鉹Œ¹‚ð‘I‘ð‚µ‚Ä‚Ë™',0 ; DATA XREF: sub_B8B1+1Co +aMswin_bft db 'mswin.bft',0 ; DATA XREF: sub_B9CE+Fo +aMs_pi db 'ms.pi',0 ; DATA XREF: sub_B9CE+20o + db 0 +aZun00_pi db 'zun00.pi',0 ; DATA XREF: sub_BC35+26o +aLogo db 'logo',0 ; DATA XREF: sub_BC35+CEo +aZun02_bft db 'zun02.bft',0 ; DATA XREF: sub_BC35+112o +aZun04_bft db 'zun04.bft',0 ; DATA XREF: sub_BC35+11Bo +aZun01_bft db 'zun01.bft',0 ; DATA XREF: sub_BC35+124o +aZun03_bft db 'zun03.bft',0 ; DATA XREF: sub_BC35+12Do + dd aNo_1MSzlBLotus ; "No.1 Œ¶‘z‹½ ` Lotus Land Story" + dd aNo_2WitchingDr ; "No.2 Witching Dream " + dd aNo_3SeleneSLig ; "No.3 Selene's light " + dd aNo_4Sxp ; "No.4 ‘•üí@` Decoration Battle" + dd aNo_5BreakTheSa ; "No.5 Break the Sabbath " + dd aNo_6NglLBScarl ; "No.6 g‹¿‹È ` Scarlet Phoneme " + dd aNo_7BadApple ; "No.7 Bad Apple!! " + dd aNo_8CRab@bPerd ; "No.8 —ìí@` Perdition crisis " + dd aNo_9GagkgxgGgg ; "No.9 ƒAƒŠƒXƒ}ƒGƒXƒeƒ‰ " + dd aNo_10Pnpcuyszl ; "No.10 ­—ãY‘z‹È@` Capriccio " + dd aNo_11RpvKab@bC ; "No.11 ¯‚ÌŠí@` Casket of Star " + dd aNo_12LotusLove ; "No.12 Lotus Love " + dd aNo_13CVVslXBSl ; "No.13 –°‚ê‚é‹°•| `Sleeping Terror" + dd aNo_14DreamLand ; "No.14 Dream Land " + dd aNo_15ChcB@bIna ; "No.15 —H–²@` Inanimate Dream " + dd aNo_16LVVVsv ; "No.16 ‹Ö‚¶‚´‚é‚ð‚¦‚È‚¢—V‹Y " + dd aNo_17GbgcghmSz ; "No.17 ƒƒCƒhŒ¶‘z@` Icemilk Magic" + dd aNo_18Vivavvvvi ; "No.18 ‚©‚í‚¢‚¢ˆ«–‚@` Innocence " + dd aNo_19Days ; "No.19 Days " + dd aNo_20Peaceful ; "No.20 Peaceful " + dd aNo_21ArcadianD ; "No.21 Arcadian Dream " + dd aNo_22MSzvPzrl ; "No.22 Œ¶‘z‚ÌZl " + dd asc_105B2 ; " " + dd aB@b@vpvxvivf ; " @@‚p‚•‚‰‚” " + dd aOp_2 ; "op" + dd aSt00 ; "st00" + dd aSt10 ; "st10" + dd aSt00b ; "st00b" + dd aSt01 ; "st01" + dd aSt01b ; "st01b" + dd aSt02 ; "st02" + dd aSt02b ; "st02b" + dd aSt03 ; "st03" + dd aSt03c ; "st03c" + dd aSt03b ; "st03b" + dd aSt04 ; "st04" + dd aSt04b ; "st04b" + dd aSt05 ; "st05" + dd aSt05b ; "st05b" + dd aSt06 ; "st06" + dd aSt06b ; "st06b" + dd aSt06c ; "st06c" + dd aEnd1 ; "end1" + dd aEnd2 ; "end2" + dd aStaff ; "staff" + dd aName_0 ; "name" +byte_102AE db 0 ; DATA XREF: sub_C04E+4r sub_C04E+AAw +byte_102AF db 0 ; DATA XREF: sub_C3B7+61r sub_C3B7+89r ... +aNo_1MSzlBLotus db 'No.1 Œ¶‘z‹½ ` Lotus Land Story',0 ; DATA XREF: dseg:0EB6o +aNo_2WitchingDr db 'No.2 Witching Dream ',0 ; DATA XREF: dseg:0EBAo +aNo_3SeleneSLig db 'No.3 Selene',27h,'s light ',0 ; DATA XREF: dseg:0EBEo +aNo_4Sxp db 'No.4 ‘•üí@` Decoration Battle',0 ; DATA XREF: dseg:0EC2o +aNo_5BreakTheSa db 'No.5 Break the Sabbath ',0 ; DATA XREF: dseg:0EC6o +aNo_6NglLBScarl db 'No.6 g‹¿‹È ` Scarlet Phoneme ',0 ; DATA XREF: dseg:0ECAo +aNo_7BadApple db 'No.7 Bad Apple!! ',0 ; DATA XREF: dseg:0ECEo +aNo_8CRab@bPerd db 'No.8 —ìí@` Perdition crisis ',0 ; DATA XREF: dseg:0ED2o +aNo_9GagkgxgGgg db 'No.9 ƒAƒŠƒXƒ}ƒGƒXƒeƒ‰ ',0 ; DATA XREF: dseg:0ED6o +aNo_10Pnpcuyszl db 'No.10 ­—ãY‘z‹È@` Capriccio ',0 ; DATA XREF: dseg:0EDAo +aNo_11RpvKab@bC db 'No.11 ¯‚ÌŠí@` Casket of Star ',0 ; DATA XREF: dseg:0EDEo +aNo_12LotusLove db 'No.12 Lotus Love ',0 ; DATA XREF: dseg:0EE2o +aNo_13CVVslXBSl db 'No.13 –°‚ê‚é‹°•| `Sleeping Terror',0 ; DATA XREF: dseg:0EE6o +aNo_14DreamLand db 'No.14 Dream Land ',0 ; DATA XREF: dseg:0EEAo +aNo_15ChcB@bIna db 'No.15 —H–²@` Inanimate Dream ',0 ; DATA XREF: dseg:0EEEo +aNo_16LVVVsv db 'No.16 ‹Ö‚¶‚´‚é‚ð‚¦‚È‚¢—V‹Y ',0 ; DATA XREF: dseg:0EF2o +aNo_17GbgcghmSz db 'No.17 ƒƒCƒhŒ¶‘z@` Icemilk Magic',0 ; DATA XREF: dseg:0EF6o +aNo_18Vivavvvvi db 'No.18 ‚©‚í‚¢‚¢ˆ«–‚@` Innocence ',0 ; DATA XREF: dseg:0EFAo +aNo_19Days db 'No.19 Days ',0 ; DATA XREF: dseg:0EFEo +aNo_20Peaceful db 'No.20 Peaceful ',0 ; DATA XREF: dseg:0F02o +aNo_21ArcadianD db 'No.21 Arcadian Dream ',0 ; DATA XREF: dseg:0F06o +aNo_22MSzvPzrl db 'No.22 Œ¶‘z‚ÌZl ',0 ; DATA XREF: dseg:0F0Ao +asc_105B2 db ' ',0 ; DATA XREF: dseg:0F0Eo +aB@b@vpvxvivf db ' @@‚p‚•‚‰‚” ',0 ; DATA XREF: dseg:0F12o +aOp_2 db 'op',0 ; DATA XREF: sub_C3B7+1AFo dseg:0F16o +aSt00 db 'st00',0 ; DATA XREF: dseg:0F1Ao +aSt10 db 'st10',0 ; DATA XREF: dseg:0F1Eo +aSt00b db 'st00b',0 ; DATA XREF: dseg:0F22o +aSt01 db 'st01',0 ; DATA XREF: dseg:0F26o +aSt01b db 'st01b',0 ; DATA XREF: dseg:0F2Ao +aSt02 db 'st02',0 ; DATA XREF: dseg:0F2Eo +aSt02b db 'st02b',0 ; DATA XREF: dseg:0F32o +aSt03 db 'st03',0 ; DATA XREF: dseg:0F36o +aSt03c db 'st03c',0 ; DATA XREF: dseg:0F3Ao +aSt03b db 'st03b',0 ; DATA XREF: dseg:0F3Eo +aSt04 db 'st04',0 ; DATA XREF: dseg:0F42o +aSt04b db 'st04b',0 ; DATA XREF: dseg:0F46o +aSt05 db 'st05',0 ; DATA XREF: dseg:0F4Ao +aSt05b db 'st05b',0 ; DATA XREF: dseg:0F4Eo +aSt06 db 'st06',0 ; DATA XREF: dseg:0F52o +aSt06b db 'st06b',0 ; DATA XREF: dseg:0F56o +aSt06c db 'st06c',0 ; DATA XREF: dseg:0F5Ao +aEnd1 db 'end1',0 ; DATA XREF: dseg:0F5Eo +aEnd2 db 'end2',0 ; DATA XREF: dseg:0F62o +aStaff db 'staff',0 ; DATA XREF: dseg:0F66o +aName_0 db 'name',0 ; DATA XREF: dseg:0F6Ao +a_music_txt db '_MUSIC.TXT',0 ; DATA XREF: sub_C27B+5o +aMusic_pi db 'music.pi',0 ; DATA XREF: sub_C3B7+3Ao +aGensou_scr db 'GENSOU.SCR',0 ; DATA XREF: sub_C68C+7Ao sub_C733+4o ... +aName db 'name',0 ; DATA XREF: sub_CA94+Co +aHi01_pi db 'hi01.pi',0 ; DATA XREF: sub_CA94+3Eo +aOp1_pi_0 db 'op1.pi',0 ; DATA XREF: sub_CA94+EAo +aOp_0 db 'op',0 ; DATA XREF: sub_CA94+13Bo +aScnum_bft db 'scnum.bft',0 ; DATA XREF: sub_CBE3+A1o +aHi_m_bft db 'hi_m.bft',0 ; DATA XREF: sub_CBE3+AAo + db 0 +aSft1_cd2 db 'sft1.cd2',0 ; DATA XREF: sub_CC97+6o +aSft2_cd2 db 'sft2.cd2',0 ; DATA XREF: sub_CC97+11o +aCar_cd2 db 'car.cd2',0 ; DATA XREF: sub_CC97+1Co +aSl_cd2 db 'sl.cd2',0 ; DATA XREF: sub_CC97+27o +aOp5b_pi db 'op5b.pi',0 ; DATA XREF: sub_CCD2+40o +aOp4b_pi db 'op4b.pi',0 ; DATA XREF: sub_CCD2+4Bo +aOp3b_pi db 'op3b.pi',0 ; DATA XREF: sub_CCD2+56o +aOp2b_pi db 'op2b.pi',0 ; DATA XREF: sub_CCD2+61o +aOp1b_pi db 'op1b.pi',0 ; DATA XREF: sub_CCD2+6Co +aOp0b_pi db 'op0b.pi',0 ; DATA XREF: sub_CCD2+77o +aOp_1 db 'op',0 ; DATA XREF: sub_CCD2+16Co +aOp1_pi_1 db 'op1.pi',0 ; DATA XREF: sub_CCD2+187o + db 0 + dd aB@focasCBiiPcv ; "@”Ž—íèË–²i›Þ—‚³‚ñj " + dd aNlfINumvmB@ ; " L”͈ÍUŒ‚Œ^@ " + dd aCIjcvcanBicvc@ ; " –¶‰J–‚—¹i–‚–@Žg‚¢j" + dd aNumvcPdolm ; " UŒ‚—ÍdŽ‹Œ^ " + dd aB@GtbGGvgzgbgg ; "@ ƒT[ƒ`ƒVƒ‡ƒbƒg@ " + dd aGpgcghgvgzgbgg ; " ƒƒCƒhƒVƒ‡ƒbƒg " + dd aGcgkgebGwgzgug ; "ƒCƒŠƒ…[ƒWƒ‡ƒ“ƒŒ[ƒU[" + dd aGigsgbghgvgzgb ; " ƒ‰ƒsƒbƒhƒVƒ‡ƒbƒg " +aB@focasCBiiPcv db '@”Ž—íèË–²i›Þ—‚³‚ñj ',0 ; DATA XREF: dseg:13D4o +aNlfINumvmB@ db ' L”͈ÍUŒ‚Œ^@ ',0 ; DATA XREF: dseg:13D8o +aCIjcvcanBicvc@ db ' –¶‰J–‚—¹i–‚–@Žg‚¢j',0 ; DATA XREF: dseg:13DCo +aNumvcPdolm db ' UŒ‚—ÍdŽ‹Œ^ ',0 ; DATA XREF: dseg:13E0o +aB@GtbGGvgzgbgg db '@ ƒT[ƒ`ƒVƒ‡ƒbƒg@ ',0 ; DATA XREF: dseg:13E4o +aGpgcghgvgzgbgg db ' ƒƒCƒhƒVƒ‡ƒbƒg ',0 ; DATA XREF: dseg:13E8o +aGcgkgebGwgzgug db 'ƒCƒŠƒ…[ƒWƒ‡ƒ“ƒŒ[ƒU[',0 ; DATA XREF: dseg:13ECo +aGigsgbghgvgzgb db ' ƒ‰ƒsƒbƒhƒVƒ‡ƒbƒg ',0 ; DATA XREF: dseg:13F0o +aStar db '™',0 ; DATA XREF: sub_D465+72o sub_D465+F4o +aGtgugegfgGuvSi db 'ƒTƒuƒEƒFƒ|ƒ“‚Ì‘I‘ð',0 ; DATA XREF: sub_D595+AFo +aSlb1_pi db 'slb1.pi',0 ; DATA XREF: sub_D6B2+11o +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + db 0 +word_1082E dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_3F45r ... +off_10830 dd sub_4158 ; DATA XREF: sub_415D+29r _setvbuf+C0w ... +off_10834 dd sub_4158 ; DATA XREF: sub_415D+43r +off_10838 dd sub_4158 ; DATA XREF: sub_415D+47r + db 0 + db 0 +word_1083E dw 209h ; DATA XREF: seg000:4771w seg000:477Br +byte_10840 db 0 ; DATA XREF: seg000:4762r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0FCh ; ü + db 14h + db 0 + db 0 +word_10852 dw 20Ah ; DATA XREF: seg000:47AAw seg000:47B4r +byte_10854 db 1 ; DATA XREF: seg000:479Br + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 10h + db 15h + db 0 + db 0 + db 2 + db 2 +byte_10868 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 24h ; $ + db 15h + 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 38h ; 8 + db 15h + 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 4Ch ; L + db 15h + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_109CC 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_109F6 dw 0 ; DATA XREF: __IOERROR:loc_4389w + ; __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_10A52 db 0 ; DATA XREF: seg000:4558o + db 0 + db 0 + db 0 +word_10A56 dw 0 ; DATA XREF: seg000:4460r +word_10A58 dw 4425h ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_10A5A dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_10A6A 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_10B80 dw 0 ; DATA XREF: __ExceptInit+28w +word_10B82 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_10C96 dw 0 ; DATA XREF: seg000:4B30w sub_4B43w ... +word_10C98 dw 0 ; DATA XREF: sub_4FD6+22r sub_4FD6+61w +byte_10C9A db 0 ; DATA XREF: seg000:532Br seg000:5343w +byte_10C9B db 0 ; DATA XREF: seg000:52C6r seg000:52D9w +word_10C9C dw 0 ; DATA XREF: seg000:5233r seg000:5269w +word_10C9E dw 0 ; DATA XREF: seg000:522Fr + ; seg000:loc_5263w + db 0 + db 0 + db 0 + db 0 +word_10CA4 dw 0 ; DATA XREF: seg000:514Dr seg000:5183w ... +word_10CA6 dw 0 ; DATA XREF: seg000:5149r + ; seg000:loc_517Dw ... + db 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_10CC0 dd 0 ; DATA XREF: seg000:54A7w sub_54BB+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_10CD4 dw 0 ; DATA XREF: _setvbuf:loc_5F8Cr + ; _setvbuf+4Bw +word_10CD6 dw 0 ; DATA XREF: _setvbuf:loc_5F76r + ; _setvbuf+35w +word_10CD8 dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_10CEC dd 0 ; DATA XREF: _getenv+21r seg000:9FF6w ... +word_10CF0 dw 1 ; DATA XREF: seg003:0A48r seg003:0A51w +word_10CF2 dw 0 ; DATA XREF: seg003:0A65r seg003:0A6Ew +word_10CF4 dw 1 ; DATA XREF: seg003:0A82r seg003:0A8Bw +word_10CF6 dw 3Fh ; DATA XREF: sub_EF33+13r seg003:0A9Fr ... +word_10CF8 dw 40h ; DATA XREF: sub_EF33+19r seg003:0ABCr ... +word_10CFA dw 3Fh ; DATA XREF: seg003:073Er seg003:07A6r ... +aStringReferenc db 'String reference out of range',0 +aStringRefere_0 db 'String reference out of range',0 +aStringRefere_1 db 'String reference out of range',0 +byte_10D56 db 0 ; DATA XREF: sub_A3B2+2r sub_A3B2+9w ... +byte_10D57 db 0 ; DATA XREF: sub_A3B2+Er +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 + db 2Fh ; / + db 63h ; c + db 0 + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 33h ; 3 + db 47h ; G + db 0 + db 0 + db 0 + db 10h + db 1Fh + db 4Bh ; K + db 0 + db 0 + db 0 + db 0Fh + db 72h ; r + db 54h ; T + db 0 + db 0 + db 0 + db 10h + db 0E0h ; à + db 9Fh ; Ÿ + db 0 + db 0 + db 1 + db 20h + dd loc_45D3 +dword_10DA4 dd 0 ; DATA XREF: sub_A74C+27w sub_A74C+2Dr ... +byte_10DA8 db 0 ; DATA XREF: sub_AE28+40r + ; sub_AE96+10Aw ... + db 0 +word_10DAA dw 0 ; DATA XREF: sub_AE28+Ar sub_AE28+55r ... +byte_10DAC db 0 ; DATA XREF: sub_AE96+10w sub_AE96+50w ... +byte_10DAD db 0 ; DATA XREF: sub_B052+Bw sub_B052+4Bw ... +word_10DAE dw 0 ; DATA XREF: seg000:329Cr +word_10DB0 dw 0 ; DATA XREF: seg000:3279r + dw 0 +word_10DB4 dw 0 ; DATA XREF: seg000:326Br +word_10DB6 dw 0 ; DATA XREF: seg000:32A0r +word_10DB8 dw 0 ; DATA XREF: seg000:3280r + dw 0 +word_10DBC dw 0 ; DATA XREF: seg000:3272r + db 0 + db 0 + db 0 + db 0 +dword_10DC2 dd 0 ; DATA XREF: sub_8EE+17r sub_9C6+2Er ... +word_10DC6 dw 0 ; DATA XREF: sub_89A+32w sub_89A+46w ... +word_10DC8 dw 0 ; DATA XREF: sub_89A+35w sub_89A+49w ... +word_10DCA dw 0 ; DATA XREF: sub_89A+29w sub_8EE+9r ... +word_10DCC dw 0 ; DATA XREF: sub_89A+26w sub_8EE+Cr ... +word_10DCE dw 0 ; DATA XREF: sub_89A+2Cw sub_96A+2Dw ... +word_10DD0 dw 0 ; DATA XREF: sub_89A+2Fw + ; sub_8EE:loc_91Fw ... +word_10DD2 dw 0 ; DATA XREF: sub_E1DC+5w + db 0 + db 0 +byte_10DD6 db 0 ; DATA XREF: sub_CCD2+1F8w + ; sub_DA50+11o +byte_10DD7 db 0 ; DATA XREF: sub_CCD2+1FBw +byte_10DD8 db 0 ; DATA XREF: sub_CCD2+1FEw + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_10E06 dw 0 ; DATA XREF: sub_2552+1Ew seg000:25D6w ... +word_10E08 dw 0 ; DATA XREF: sub_2552+21w seg000:25DAw +word_10E0A dw 0 ; DATA XREF: sub_2552+37w sub_2600+2Br +word_10E0C dw 0 ; DATA XREF: sub_2552+3Aw sub_2600+27r +word_10E0E dw 0 ; DATA XREF: seg000:25D0w +word_10E10 dw 0 ; DATA XREF: sub_2704+Fw sub_2766+18r ... +word_10E12 dw 0 ; DATA XREF: sub_248E+20r sub_2704+12w ... +word_10E14 dw 0 ; DATA XREF: sub_2704+15w sub_2766+24r ... +word_10E16 dw 0 ; DATA XREF: sub_2478+7w sub_248E+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 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_11218 db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_11618 dw 0 ; DATA XREF: seg000:2B80w seg000:2C0Fr +dword_1161A dd 0 ; DATA XREF: sub_BF68:loc_BF7Br + ; sub_CF5E:loc_CFA9r ... +dword_1161E dd 0 ; DATA XREF: sub_CF5E+6Er sub_CF5E+7Fr ... +dword_11622 dd 0 ; DATA XREF: sub_CF5E+91r sub_CF5E+A2r ... +dword_11626 dd 0 ; DATA XREF: sub_CF5E+B4r sub_CF5E+C5r ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_116AA dw 0 ; DATA XREF: sub_2FE2+7Bw sub_309E+21r ... +word_116AC dw 0 ; DATA XREF: sub_2FE2+81w seg000:3106r +word_116AE dw 0 ; DATA XREF: sub_2FE2+47w sub_2FE2+58r ... +dword_116B0 dd 0 ; DATA XREF: sub_A9C9+B5r sub_AE96+E9r ... +dword_116B4 dd 0 ; DATA XREF: sub_CCD2+11Er +dword_116B8 dd 0 ; DATA XREF: sub_CCD2+12Cr +dword_116BC dd 0 ; DATA XREF: sub_CCD2+13Ar +dword_116C0 dd 0 ; DATA XREF: sub_CCD2+148r +dword_116C4 dd 0 ; DATA XREF: sub_CCD2+156r +unk_116C8 db 0 ; DATA XREF: sub_A9C9+B2o sub_AE96+E6o ... + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_11710 db 0 ; DATA XREF: sub_CCD2+11Bo + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_11758 db 0 ; DATA XREF: sub_CCD2+129o + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_117A0 db 0 ; DATA XREF: sub_CCD2+137o + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_117E8 db 0 ; DATA XREF: sub_CCD2+145o + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_11830 db 0 ; DATA XREF: sub_CCD2+153o + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +byte_11978 db 0 ; DATA XREF: sub_DC16+2w sub_DC44+1Ew + db 0 +word_1197A dw 0 ; DATA XREF: sub_3772+21w sub_37B6+Fr +word_1197C dw 0 ; DATA XREF: sub_3772+1Dw sub_37B6+Br + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +unk_11A40 db ? ; ; DATA XREF: sub_DDCA+56o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_11A4E dw ? ; DATA XREF: _main+10w sub_E0F4+3r +word_11A50 dw ? ; DATA XREF: sub_AE96:loc_AEEBr + ; sub_AE96+6Ar ... +byte_11A52 db ? ; DATA XREF: sub_E1E4+EDw + db ? ; +word_11A54 dw ? ; DATA XREF: sub_E378:loc_E3B0w + ; sub_E378:loc_E3C4r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_11E56 db ? ; DATA XREF: sub_E63E+29w sub_E63E+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 ? ; +word_11E88 dw ? ; DATA XREF: sub_B49F+Er + ; sub_B49F:loc_B4F5r ... +word_11E8A dw ? ; DATA XREF: sub_B572:loc_B5D0r + ; sub_B65C+8r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_12CF4 db ? ; ; DATA XREF: sub_C04E+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_12DBC dw ? ; DATA XREF: sub_C3B7+64w sub_C3B7+67r ... +byte_12DBE db ? ; DATA XREF: sub_C36F+3r sub_C36F+27r ... + db ? ; +word_12DC0 dw ? ; DATA XREF: sub_BF68+Cw sub_BF68+1Dr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_12DD2 db ? ; ; DATA XREF: sub_C27B+20o sub_C2C4+Do + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_130F2 db ? ; DATA XREF: sub_C57A+1Fr sub_C57A+33r ... +byte_130F3 db ? ; DATA XREF: sub_C57A+11r sub_C627+2Ew ... +word_130F4 dw ? ; DATA XREF: sub_C57A+50r sub_C627+5w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_131A0 db ? ; DATA XREF: sub_C68C:loc_C69Aw + ; sub_CBE3+19r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_131B6 db ? ; DATA XREF: sub_C57A+74r sub_C57A+88r ... +byte_131B7 db ? ; DATA XREF: sub_C57A+66r +byte_131B8 db ? ; DATA XREF: sub_C57A+A5r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_13264 db ? ; DATA XREF: sub_CBE3+28r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_1327B db ? ; DATA XREF: sub_C733+19r sub_CA1A+51r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_13286 db ? ; DATA XREF: sub_AAB5:loc_AB12r + ; sub_AE28:loc_AE58r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_132B8 db ? ; DATA XREF: sub_D3A2+3r sub_D465+48r ... +byte_132B9 db ? ; DATA XREF: sub_D650+57r + ; sub_D708:loc_D881w ... +dword_132BA dd ? ; DATA XREF: sub_CF5E+11w sub_CF5E+55r ... +dword_132BE dd ? ; DATA XREF: sub_CF5E+22w sub_CF5E+66r ... +byte_132C2 db ? ; DATA XREF: sub_D708:loc_D78Dw + ; sub_D708:loc_D7A1r +byte_132C3 db ? ; DATA XREF: sub_D708+8Aw sub_D708+A0r +byte_132C4 db ? ; DATA XREF: sub_D708+8Fw +byte_132C5 db ? ; DATA XREF: sub_D708+94w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_13340 dw ? ; DATA XREF: sub_1670+10Bw + ; sub_1670+15Dr ... +word_13342 dw ? ; DATA XREF: sub_1670+11Bw +dword_13344 dd ? ; DATA XREF: sub_1670+150w + ; sub_1670+191r ... +word_13348 dw ? ; DATA XREF: sub_1670+12Dw + ; sub_1670:loc_1AFAr ... +word_1334A dw ? ; DATA XREF: sub_1670+130w + ; sub_1670+159w ... + db ? ; + db ? ; +word_1334E dw ? ; DATA XREF: seg000:5273r seg000:5340w ... +word_13350 dw ? ; DATA XREF: seg000:526Fr seg000:533Cw ... +dword_13352 dd ? ; DATA XREF: sub_8419+ACw sub_8419+C2r ... +dword_13356 dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dd ? + 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