From 9e07c54aeeb4fcfa6381505990602c333c83ca6e Mon Sep 17 00:00:00 2001 From: nmlgc Date: Thu, 26 Jun 2014 22:33:22 +0200 Subject: [PATCH] Start out with th05's OP.EXE This is the raw output of IDA's initial analysis of the original OP.EXE, touched up in order to compile to an executable identical to the original build. --- .gitattributes | 1 + readme.md | 4 + th05_op.asm | 48064 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48069 insertions(+) create mode 100644 .gitattributes create mode 100644 readme.md create mode 100644 th05_op.asm diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..047ddaa2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.asm text merge=union eol=crlf diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..09a01696 --- /dev/null +++ b/readme.md @@ -0,0 +1,4 @@ +The Touhou PC-98 Restoration Project (*"ReC98*") +---- + +Compile with ```tasm32 /n /zn``` (on Windows), link with ```tlink``` (on DOS). diff --git a/th05_op.asm b/th05_op.asm new file mode 100644 index 00000000..5d0574ca --- /dev/null +++ b/th05_op.asm @@ -0,0 +1,48064 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2009 by Hex-Rays, | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : F97D1B72F01476639E9D33E361F57330 + +; File Name : th05/OP.EXE +; Format : MS-DOS executable (EXE) +; Base Address: 0h Range: 0h-14240h Loaded length: 1280Ah +; 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 word + 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_F05C, ax + mov segx, es + mov word_F056, bx + mov word_F06E, bp + call sub_178 + mov ax, word_F056 + 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_F054, cx + mov cx, 2 + shl bx, cl + add bx, 10h + and bx, 0FFF0h + mov word_F058, bx + mov dx, ss + sub bp, dx + mov di, seg dseg + mov es, di + assume es:dseg + mov di, es:word_11A92 + cmp di, 200h + jnb short loc_75 + mov di, 200h + mov es:word_11A92, 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_3B18 +; --------------------------------------------------------------------------- + +loc_83: ; CODE XREF: start+7Cj + mov bx, di + add bx, dx + mov word_F066, bx + mov word_F06A, 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_11A92, di + xor ax, ax + mov es, cs:DGROUP@ + assume es:nothing + mov di, 2DECh + mov cx, 51DEh + sub cx, di + cld + rep stosb + cmp word_119F4, 14h + jbe short loc_110 + cmp byte ptr word_F05C, 3 + jb short loc_110 + ja short loc_D7 + cmp byte ptr word_F05C+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_119F4 + 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_F06E, 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_3B18 +; --------------------------------------------------------------------------- + +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, 2DC8h + mov di, 2DE6h + call sub_1E8 + push word_F052 + push envp ; envp + push word_F04E + push argv ; argv + push argc ; argc + call _main + push ax ; status + nop + push cs + call near ptr _exit +; --------------------------------------------------------------------------- + +__cleanup: ; CODE XREF: sub_3DAD+26p + mov es, cs:DGROUP@ + push si + push di + mov si, 2DE6h + mov di, 2DECh + 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_3DAD+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_3DAD+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_D322+12r + mov word ptr dword_F03A, bx + +loc_182: ; DATA XREF: sub_D350+4r + mov word ptr dword_F03A+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_F03E, bx + mov word ptr dword_F03E+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_F042, bx + mov word ptr dword_F042+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_F046, bx + mov word ptr dword_F046+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_3DAD+2Fp + push ds + mov ax, 2500h + lds dx, dword_F03A + 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_F03E + 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_F042 + 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_F046 + 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_11AC-71r sub_11AC-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: + add al, 0C0h ; 'À' + add ds:8E2Eh, bl + push ds + pop di + add cx, word_FCC8 + push ds + mov ax, 0FFF3h + +loc_27F: ; CODE XREF: seg000:02D9j seg000:02E1j + pop si + pop di + pop ds + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_286: ; CODE XREF: sub_2656+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_209E + jb short loc_27F + xchg ax, cx + push bx + push cs + call near ptr sub_209E + 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, 0C2h, 21h, 7, 1Fh, 72h, 6, 4Dh, 74h + db 1Fh, 0E9h, 69h, 0FFh, 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 8Bh + db 0C8h, 6, 0Eh, 0E8h, 0FDh, 1Ch, 0Eh, 0E8h, 0F9h, 1Ch + db 8Bh, 0C1h, 0F9h, 5Eh, 5Fh, 1Fh, 5Dh, 0CAh, 8, 0, 90h + db 1Eh, 2Eh, 8Eh, 1Eh, 5Fh, 3, 6, 0Eh, 0E8h, 0E3h, 1Ch + db 0Eh, 0E8h, 0DFh, 1Ch, 0B8h, 2 dup(0), 0F8h, 5Eh, 5Fh + db 1Fh, 5Dh, 0CAh, 8, 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3B4 proc far ; CODE XREF: sub_2656+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_3EB + push si + push di + mov si, 4DAh + mov di, dx + mov cx, 5 + repe cmpsb + pop di + pop si + jnz short loc_3E7 + mov ax, 0 + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_3E7: ; CODE XREF: sub_3B4+2Aj + mov ax, 0FFF3h + stc + +loc_3EB: ; CODE XREF: sub_3B4+1Aj + pop bp + retf 6 +sub_3B4 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3F0 proc far ; CODE XREF: sub_2656+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 + +loc_400: ; DATA XREF: sub_11AC-1BFr + mov ax, 0 + jcxz short loc_44A + push cx + push cs + call near ptr sub_209E + jb short loc_44A + 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_442 + mov dx, si + xor si, si + nop + +loc_422: ; CODE XREF: sub_3F0+45j + lodsb + cmp al, 10h + jz short loc_43C + add si, dx + sub si, 3 + lodsw + or ax, ax + jz short loc_437 + sub cx, dx + mov dx, ax + ja short loc_422 + +loc_437: ; CODE XREF: sub_3F0+3Fj + xor ax, ax + jmp short loc_442 +; --------------------------------------------------------------------------- + align 2 + +loc_43C: ; CODE XREF: sub_3F0+35j + lodsw + lodsb + and ax, 0Fh + nop + +loc_442: ; CODE XREF: sub_3F0+2Bj sub_3F0+49j + mov bx, ds + pop ds + push bx + push cs + call near ptr sub_2088 + +loc_44A: ; CODE XREF: sub_3F0+13j sub_3F0+1Aj + pop si + pop bp + retf 6 +sub_3F0 endp + +; --------------------------------------------------------------------------- + db 90h + db 4 dup(0) +; --------------------------------------------------------------------------- + +loc_454: ; CODE XREF: sub_2F92+40p sub_2FD6+25p + cmp bx, 2 + jnb short locret_49A + shl bx, 1 +; --------------------------------------------------------------------------- + db 89h +byte_45C db 87h ; DATA XREF: sub_11AC:loc_FF9r + ; sub_12A6+4r + db 0D4h, 4, 0A1h, 0D4h, 4, 0Bh, 6, 0D6h, 4, 5, 2 dup(0FFh) + db 1Bh, 0C0h, 3Bh, 6, 0D2h, 4, 74h, 29h, 0A3h, 0D2h, 4 + db 77h, 26h, 0FAh, 0B0h, 0Bh, 0E6h, 70h, 0A0h, 0D9h, 4 + db 0E6h, 71h, 6Ah, 70h, 2Eh, 0FFh, 36h, 52h, 4, 2Eh, 0FFh + db 36h, 50h, 4, 90h, 0Eh, 0E8h, 65h, 3, 0E4h, 0A1h, 0Ah + db 6 +byte_495 db 0D8h ; DATA XREF: sub_E354+Aw + db 4, 0E6h, 0A1h, 0FBh +; --------------------------------------------------------------------------- + +locret_49A: ; CODE XREF: seg000:0457j + retn +; --------------------------------------------------------------------------- + align 2 + db 0FAh, 6Ah, 70h, 0Eh, 68h, 0F8h, 4, 90h, 0Eh, 0E8h, 4Eh + db 3, 2Eh, 89h, 16h, 52h, 4, 2Eh, 0A3h, 50h, 4, 0B4h, 0Ah + db 0BBh, 4, 0F0h, 0E8h, 2Ch, 0, 0B0h, 0Bh, 0E6h, 70h, 0E4h + db 71h, 0A2h, 0D9h, 4, 0Ch, 40h, 8Ah, 0E0h, 0B0h, 0Bh + db 0E6h, 70h, 8Ah, 0C4h, 0E6h, 71h, 0E4h, 0A1h +byte_4D0 db 8Ah ; DATA XREF: sub_11AC-16Er + db 0E0h, 24h, 0FEh, 0E6h, 0A1h, 32h, 0C4h, 0A2h, 0D8h + db 4, 0FBh, 0FAh, 0B0h, 0Ch, 0E6h, 70h, 0E4h, 71h, 0FBh + db 0C3h + +; =============== S U B R O U T I N E ======================================= + + +sub_4E5 proc near + mov al, ah + out 70h, al ; CMOS Memory: + ; used by real-time clock + in al, 71h ; CMOS Memory + and al, bh + or al, bl + xchg ah, al + out 70h, al ; CMOS Memory: + ; used by real-time clock + xchg ah, al + out 71h, al ; CMOS Memory: + ; used by real-time clock + retn +sub_4E5 endp + +; --------------------------------------------------------------------------- + db 50h, 1Eh, 0B8h + dw seg dseg + db 8Eh, 0D8h, 0FCh +byte_500 db 68h ; DATA XREF: sub_196E+4w sub_197A+4w +byte_501 db 1Ah ; DATA XREF: sub_11AC-1C8r sub_2CD0+Cr ... +; --------------------------------------------------------------------------- + add ax, 3E83h + aam 4 + add [si+4], dh + push word_F4B4 + cmp word_F4B6, 0 + jz short locret_519 + push word_F4B6 + +locret_519: ; CODE XREF: seg000:0513j + retn +; --------------------------------------------------------------------------- + db 80h, 3Eh, 0D8h, 4, 0, 1Fh, 75h, 6, 58h, 2Eh, 0FFh, 2Eh + db 50h, 4, 0B0h, 20h +byte_52A db 0E6h ; DATA XREF: sub_DF96:loc_E049r + db 0A0h +byte_52C db 0E6h ; DATA XREF: sub_DF96:loc_E03Ar +byte_52D db 20h ; DATA XREF: sub_DF96:loc_E058r + db 0B0h +byte_52F db 0Ch ; DATA XREF: sub_DF96:loc_E021r +byte_530 db 0E6h ; DATA XREF: sub_DF96:loc_E067r +byte_531 db 70h ; DATA XREF: sub_DF96+4r +byte_532 db 0E4h ; DATA XREF: sub_DF96:loc_DFF4r +byte_533 db 71h ; DATA XREF: sub_DF96:loc_DFC7r +; --------------------------------------------------------------------------- + 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_53C proc far ; CODE XREF: sub_1AFA+Cp sub_39F0+DEp + +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 + +loc_54D: ; DATA XREF: sub_11C8+1Fr + call near ptr sub_2426 + pop bp + retf 2 +sub_53C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_554 proc far ; CODE XREF: sub_5D0+29p + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push ds + mov ds, [bp+arg_0] + mov bx, word_EFE0 + mov cx, off_EFE6 + 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_584 + or ax, ax + jz short loc_584 + dec ax + mov word_EFE2, ax + mov off_EFE4, 1 + mov al, byte ptr word_EFE8 + xor ah, ah + pop ds + pop bp + retf 2 +; --------------------------------------------------------------------------- + +loc_584: ; CODE XREF: sub_554+16j sub_554+1Aj + xor ax, ax + mov word_EFE2, ax + dec ax + pop ds + pop bp + retf 2 +sub_554 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_590 proc far ; CODE XREF: sub_2656+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_5C8 + mov ah, 3Fh ; '?' + mov bx, [bp+arg_4] + mov cx, 30h ; '0' + mov dx, 2E1Eh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + jb short loc_5C8 + mov bx, dx + mov cx, 1004h + +loc_5B2: ; CODE XREF: sub_590+31j + mov dl, [bx] + mov ax, [bx+1] + mov [bx], ax + mov [bx+2], dl + add bx, 3 + dec ch + jnz short loc_5B2 + mov ax, 0 + jmp short loc_5CC +; --------------------------------------------------------------------------- + +loc_5C8: ; CODE XREF: sub_590+Cj sub_590+1Bj + stc + mov ax, 0FFF3h + +loc_5CC: ; CODE XREF: sub_590+36j + pop bp + retf 6 +sub_590 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5D0 proc far ; CODE XREF: seg000:06EAp sub_1B72+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_5F7 + 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_5F7: ; CODE XREF: sub_5D0+Cj + push es + push cs + call near ptr sub_554 + pop bp + retf 2 +sub_5D0 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_600 proc far ; CODE XREF: sub_B5A6+49P sub_CC5C+48P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_F52E, 0 + nop + push cs + call near ptr sub_2258 + +loc_613: ; CODE XREF: sub_600+31j + nop + push cs + call loc_19F0 + mov di, si + cmp di, 0 + jle short loc_627 + +loc_61F: ; CODE XREF: sub_600+25j + nop + push cs + call near ptr sub_2258 + dec di + jnz short loc_61F + +loc_627: ; CODE XREF: sub_600+1Dj + add word_F52E, 6 + cmp word_F52E, 64h ; 'd' + jl short loc_613 + mov word_F52E, 64h ; 'd' + nop + push cs + call loc_19F0 + pop di + pop si + retf 2 +sub_600 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_644 proc far ; CODE XREF: sub_A4CF+FDP sub_B5A6+64P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + mov word_F52E, 64h ; 'd' + nop + push cs + call near ptr sub_2258 + +loc_657: ; CODE XREF: sub_644+2Cj + nop + push cs + call loc_19F0 + mov di, si + cmp di, 0 + jle short loc_66B + +loc_663: ; CODE XREF: sub_644+25j + nop + push cs + call near ptr sub_2258 + dec di + jnz short loc_663 + +loc_66B: ; CODE XREF: sub_644+1Dj + sub word_F52E, 6 + jg short loc_657 + mov word_F52E, 0 + nop + push cs + call loc_19F0 + pop di + pop si + retf 2 +sub_644 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_682 proc far ; CODE XREF: sub_39F0+16p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov word_F80C, 6 + mov ax, word_F566 + add ax, 9 + push ax + push cs + call near ptr sub_2322 + jb short loc_6BE + mov es, ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_B92 + jb short loc_6C5 + mov es:0, ax + mov word ptr es:2, 0 + mov ax, word_F566 + mov es:6, ax + mov ax, es + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_6BE: ; CODE XREF: sub_682+14j + mov byte_F568, 3 + jmp short loc_6CF +; --------------------------------------------------------------------------- + +loc_6C5: ; CODE XREF: sub_682+22j + push es + push cs + call near ptr sub_2426 + mov byte_F568, 1 + +loc_6CF: ; CODE XREF: sub_682+41j + xor ax, ax + pop bp + retf 4 +sub_682 endp + +; --------------------------------------------------------------------------- + align 2 + push bp + mov bp, sp + push si + push di + mov di, [bp+0Ah] + mov si, [bp+8] + cmp si, 0 + jle short loc_6FB + +loc_6E6: ; CODE XREF: seg000:06F9j + push word ptr [bp+6] + push cs + call near ptr sub_5D0 + inc ah + jz short loc_6FB + mov es, word ptr [bp+0Ch] + mov es:[di], al + inc di + dec si + jnz short loc_6E6 + +loc_6FB: ; CODE XREF: seg000:06E4j seg000:06EFj + 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 + +loc_710: ; DATA XREF: sub_12A6:loc_12EBr + ; seg000:211Er ... + mov dx, [bp+6] + mov cx, [bp+8] + or cx, cx + jnz short loc_72E + cmp dx, ax + ja short loc_72E + sub es:2, dx + add es:4, dx + xor ax, ax + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_72E: ; CODE XREF: seg000:0718j seg000:071Cj + 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 +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_748 proc far ; CODE XREF: sub_1BF2+34p sub_39F0+60p + +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_768 + sub dx, bx + sbb cx, 0 + +loc_768: ; CODE XREF: sub_748+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_748 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_778 proc far ; CODE XREF: sub_878+1Ap sub_948+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_778 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_790 proc far ; CODE XREF: sub_1968+2p + mov ax, 0C00h + int 21h ; DOS - CLEAR KEYBOARD BUFFER + ; AL must be 01h, 06h, 07h, 08h, or 0Ah. + retf +sub_790 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_796 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_7B9 + mov ah, 2 + +loc_7A6: ; CODE XREF: sub_796+21j + cmp al, 0Ah + jnz short loc_7B0 + mov dl, 0Dh + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + mov al, 0Ah + +loc_7B0: ; CODE XREF: sub_796+12j + mov dl, al + int 21h ; DOS - DISPLAY OUTPUT + ; DL = character to send to standard output + lodsb + or al, al + jnz short loc_7A6 + +loc_7B9: ; CODE XREF: sub_796+Cj + pop ds + mov si, cx + retf 4 +sub_796 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7C0 proc far ; CODE XREF: sub_2E52+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_7D6 + neg ax + +loc_7D6: ; CODE XREF: sub_7C0+12j + pop bp + retf 8 +sub_7C0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7DA proc far ; CODE XREF: sub_2E52+2Fp sub_2E52+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_7F2 + neg ax + cwd + +loc_7F2: ; CODE XREF: sub_7DA+13j + pop bp + retf 8 +sub_7DA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_7F6 proc far ; CODE XREF: sub_2162+34p sub_2162+5Bp ... + +arg_0 = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + push ds + push bx + push es + mov al, [bp+arg_4] + lds dx, [bp+arg_0] + mov ah, 35h + int 21h ; DOS - 2+ - GET INTERRUPT VECTOR + ; AL = interrupt number + ; Return: ES:BX = value of interrupt vector + mov ah, 25h + int 21h ; DOS - SET INTERRUPT VECTOR + ; AL = interrupt number + ; DS:DX = new vector to be used for specified interrupt + mov ax, bx + mov dx, es + pop es + pop bx + pop ds + pop bp + retf 6 +sub_7F6 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_816 proc far ; CODE XREF: sub_84C+1p sub_DD97P + 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_816 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_82C proc far ; CODE XREF: sub_84C+27p sub_DD10+67P ... + 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_82C endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_84C proc far ; CODE XREF: sub_D7EC+3CP sub_DF12+54P + push cs + call near ptr sub_816 + 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_82C + retf +sub_84C endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_878 proc far ; CODE XREF: sub_BB0E+8P sub_BB91+19P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_F4F4 + cmp bx, 0FFFFh + jnz short loc_8C8 + mov ax, 3D02h + push ax + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_778 + or ax, dx + mov word_F4F4, ax + mov cx, ax + xor ax, ax + mov word_11DF4, ax + mov word_11DF2, ax + mov word_11DF6, ax + mov word_11DF8, ax + mov word_11DEE, ax + mov word_11DF0, ax + inc dx + jz short loc_8C8 + 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_11DEE, ax + mov word_11DF0, dx + mov ax, 1 + +loc_8C8: ; CODE XREF: sub_878+Dj sub_878+39j + pop bp + retf 4 +sub_878 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_8CC proc far ; CODE XREF: sub_938+1p sub_A94+1p + mov bx, word_F4F4 + cmp bx, 0FFFFh + jz short locret_936 + mov ax, word_11DF2 + cmp word_11DF4, ax + jnb short loc_90A + push ds + mov cx, word_11DF2 + lds dx, dword_11DEA + 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_8FD + add word_11DEE, ax + adc word_11DF0, 0 + cmp word_11DF2, ax + jz short loc_903 + +loc_8FD: ; CODE XREF: sub_8CC+20j + mov word_11DF8, 1 + +loc_903: ; CODE XREF: sub_8CC+2Fj + mov word_11DF2, 0 + retf +; --------------------------------------------------------------------------- + +loc_90A: ; CODE XREF: sub_8CC+10j + cmp word_11DF4, 0 + jz short locret_936 + mov dx, ax + mov cx, 0 + add dx, word_11DEE + mov word_11DF4, cx + mov word_11DF2, cx + adc cx, word_11DF0 + mov ax, 4200h + mov bx, word_F4F4 + int 21h ; DOS - 2+ - MOVE FILE READ/WRITE POINTER (LSEEK) + ; AL = method: offset from beginning of file + mov word_11DEE, ax + mov word_11DF0, dx + +locret_936: ; CODE XREF: sub_8CC+7j sub_8CC+43j + retf +sub_8CC endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_938 proc far ; CODE XREF: sub_37B8+3Bp sub_BA94+19P ... + push cs + call near ptr sub_8CC + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + mov word_F4F4, 0FFFFh + retf +sub_938 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_948 proc far ; CODE XREF: sub_C8E2+81P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, 0 + mov bx, word_F4F4 + cmp bx, 0FFFFh + jnz short loc_984 + mov cx, 20h ; ' ' + mov ah, 3Ch ; '<' + push ax + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_778 + or ax, dx + mov word_F4F4, ax + xor ax, ax + mov word_11DF4, ax + mov word_11DF2, ax + mov word_11DF6, ax + mov word_11DF8, ax + mov word_11DEE, ax + mov word_11DF0, ax + mov ax, dx + inc ax + +loc_984: ; CODE XREF: sub_948+Dj + pop bp + retf 4 +sub_948 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_988 proc far ; CODE XREF: sub_C9BE+7P + mov bx, sp + push word ptr ss:[bx+6] + push word ptr ss:[bx+4] + nop + push cs + call near ptr sub_B92 + jb short loc_99E + xchg ax, bx + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + +loc_99E: ; CODE XREF: sub_988+Fj + sbb ax, ax + inc ax + retf 4 +sub_988 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_9A4 proc far ; CODE XREF: sub_37B8+21p sub_37B8+37p ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_F4F2, 0 + jz short loc_A28 + mov bx, [bp+arg_0] + les di, [bp+arg_2] + +loc_9B6: ; CODE XREF: sub_9A4+7Fj + mov ax, word_11DF4 + cmp word_11DF2, ax + jb short loc_9EC + add word_11DEE, ax + adc word_11DF0, 0 + push bx + push ds + mov cx, word_F4F2 + mov bx, word_F4F4 + lds dx, dword_11DEA + 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_11DF4, ax + jz short loc_A47 + mov word_11DF2, 0 + +loc_9EC: ; CODE XREF: sub_9A4+19j + mov si, word_11DF4 + sub si, word_11DF2 + sub si, bx + sbb ax, ax + and si, ax + add si, bx + mov ax, es + or ax, di + jz short loc_A1D + or si, si + jz short loc_A1D + push si + push ds + mov cx, si + mov ax, word_11DF2 + lds si, dword_11DEA + add si, ax + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop si + +loc_A1D: ; CODE XREF: sub_9A4+5Cj sub_9A4+60j + add word_11DF2, si + sub bx, si + jnz short loc_9B6 + jmp short loc_A4D +; --------------------------------------------------------------------------- + align 2 + +loc_A28: ; CODE XREF: sub_9A4+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_F4F4 + 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_11DEE, ax + adc word_11DF0, 0 + mov bx, cx + sub bx, ax + jz short loc_A4D + +loc_A47: ; CODE XREF: sub_9A4+40j + mov word_11DF6, 1 + +loc_A4D: ; CODE XREF: sub_9A4+81j sub_9A4+A1j + mov ax, [bp+arg_0] + sub ax, bx + pop di + pop si + pop bp + retf 6 +sub_9A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A58 proc far ; CODE XREF: sub_37B8+16p sub_BA94+8P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + xor ax, ax + mov bx, word_F4F4 + cmp bx, 0FFFFh + jnz short loc_A8F + push [bp+arg_2] + push [bp+arg_0] + nop + push cs + call near ptr sub_B92 + sbb bx, bx + or ax, bx + mov word_F4F4, ax + xor ax, ax + mov word_11DF4, ax + mov word_11DEE, ax + mov word_11DF0, ax + mov word_11DF2, ax + mov word_11DF6, ax + mov word_11DF8, ax + lea ax, [bx+1] + +loc_A8F: ; CODE XREF: sub_A58+Cj + pop bp + retf 4 +sub_A58 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_A94 proc far ; CODE XREF: sub_BB0E+12P sub_BB0E+56P ... + push cs + call near ptr sub_8CC + cmp bx, 0FFFFh + jz short locret_AC5 + 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_11DF6, 0 + mov word_11DEE, ax + mov word_11DF0, dx + +locret_AC5: ; CODE XREF: sub_A94+7j + retf 6 +sub_A94 endp + +; --------------------------------------------------------------------------- + mov ax, word_11DF2 + xor dx, dx + add ax, word_11DEE + adc dx, word_11DF0 + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_AD6 proc far ; CODE XREF: sub_BB0E+4CP sub_BB0E+77P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + cmp word_F4F2, 0 + jz short loc_B4C + mov bx, [bp+arg_0] + mov si, word ptr [bp+arg_2] + +loc_AE8: ; CODE XREF: sub_AD6+6Ej + mov cx, word_F4F2 + sub cx, word_11DF2 + sub cx, bx + sbb ax, ax + and cx, ax + add cx, bx + les di, dword_11DEA + add di, word_11DF2 + sub bx, cx + add word_11DF2, 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_B42 + push ds + push bx + mov cx, word_F4F2 + mov bx, word_F4F4 + lds dx, dword_11DEA + 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_B5E + cmp word_F4F2, ax + jnz short loc_B5E + mov word_11DF2, 0 + add word_11DEE, ax + adc word_11DF0, 0 + +loc_B42: ; CODE XREF: sub_AD6+3Fj + or bx, bx + jnz short loc_AE8 + mov ax, 1 + jmp short loc_B74 +; --------------------------------------------------------------------------- + align 2 + +loc_B4C: ; CODE XREF: sub_AD6+Aj + push ds + mov cx, [bp+arg_0] + mov bx, word_F4F4 + 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_B66 + +loc_B5E: ; CODE XREF: sub_AD6+55j sub_AD6+5Bj + mov word_11DF8, 1 + xor ax, ax + +loc_B66: ; CODE XREF: sub_AD6+86j + add word_11DEE, ax + adc word_11DF0, 0 + add ax, 0FFFFh + sbb ax, ax + +loc_B74: ; CODE XREF: sub_AD6+73j + pop di + pop si + mov sp, bp + pop bp + retf 6 +sub_AD6 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_B7C proc far ; CODE XREF: sub_2656+68p sub_2656+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_B8E + mov ax, 0FFF3h + +locret_B8E: ; CODE XREF: sub_B7C+Dj + retf 2 +sub_B7C endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_B92 proc far ; CODE XREF: sub_682+1Fp sub_988+Cp ... + mov bx, sp + mov ah, 3Dh ; '=' + mov al, byte_F4F6 + 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_BA6 + retf 4 +; --------------------------------------------------------------------------- + +loc_BA6: ; CODE XREF: sub_B92+Fj + mov ax, 0FFFEh + retf 4 +sub_B92 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_BAC proc far ; CODE XREF: sub_BC8D+8CP sub_BC8D+A0P ... + push di + mov di, sp + mov ax, word_F4C6 + mov cx, ax + mov bx, ss:[di+0Ah] + sub bx, ax + jg short loc_BBE + xor bx, bx + +loc_BBE: ; CODE XREF: sub_BAC+Ej + mov ax, bx + shl ax, 2 + add ax, bx + add ax, word_F4CC + mov es, ax + mov ax, word_F4C8 + mov dx, ss:[di+6] + sub dx, cx + cmp dx, ax + jl short loc_BDA + mov dx, ax + +loc_BDA: ; CODE XREF: sub_BAC+2Aj + sub dx, bx + jl short loc_C10 + mov ax, ss:[di+0Ch] + mov bx, ss:[di+8] + sub bx, ax + jl short loc_C10 + 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_C22 + shr bx, 1 + jb short loc_C14 + nop + +loc_C08: ; CODE XREF: sub_BAC+62j + mov cx, bx + rep stosw + sub di, dx + jnb short loc_C08 + +loc_C10: ; CODE XREF: sub_BAC+30j sub_BAC+3Cj + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C14: ; CODE XREF: sub_BAC+59j sub_BAC+6Fj + mov cx, bx + rep stosw + stosb + sub di, dx + jnb short loc_C14 + pop di + retf 8 +; --------------------------------------------------------------------------- + align 2 + +loc_C22: ; CODE XREF: sub_BAC+55j + shr bx, 1 + jb short loc_C36 + dec bx + nop + +loc_C28: ; CODE XREF: sub_BAC+84j + mov cx, bx + stosb + rep stosw + stosb + sub di, dx + jnb short loc_C28 + pop di + retf 8 +; --------------------------------------------------------------------------- + +loc_C36: ; CODE XREF: sub_BAC+78j sub_BAC+91j + mov cx, bx + stosb + rep stosw + sub di, dx + jnb short loc_C36 + pop di + retf 8 +sub_BAC endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C44 proc far ; CODE XREF: sub_BE79+40P sub_BE79+4FP + +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_F4C6 + cmp dx, word_F4C8 + ja short loc_CC4 + 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_F4C0 + sub cx, ax + sub bx, ax + test cx, bx + js short loc_CC4 + cmp cx, bx + jg short loc_C76 + xchg cx, bx + +loc_C76: ; CODE XREF: sub_C44+2Ej + cmp bx, 8000h + sbb dx, dx + and bx, dx + mov di, word_F4C2 + sub cx, di + sbb dx, dx + and cx, dx + add cx, di + sub cx, bx + jl short loc_CC4 + mov es, word_F4CC + 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+4F0h] + not ax + mov bx, cx + and bx, 0Fh + shl bx, 1 + sar cx, 4 + js short loc_CBF + stosw + mov ax, 0FFFFh + rep stosw + +loc_CBF: ; CODE XREF: sub_C44+73j + and ax, [bx+4F2h] + stosw + +loc_CC4: ; CODE XREF: sub_C44+Fj sub_C44+2Aj ... + pop di + pop bp + retf 6 +sub_C44 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CCA proc far ; CODE XREF: sub_C09D+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_CFB: ; CODE XREF: sub_CCA+73j + mov dx, es:[bx+si+2] + cmp dx, [bp+var_4] + jge short loc_D10 + mov [bp+var_8], bx + mov [bp+var_A], bx + mov [bp+var_4], dx + jmp short loc_D22 +; --------------------------------------------------------------------------- + align 2 + +loc_D10: ; CODE XREF: sub_CCA+38j + cmp [bp+var_4], dx + jnz short loc_D1A + mov [bp+var_A], bx + jmp short loc_D22 +; --------------------------------------------------------------------------- + +loc_D1A: ; CODE XREF: sub_CCA+49j + cmp [bp+var_C], dx + jge short loc_D22 + mov [bp+var_C], dx + +loc_D22: ; CODE XREF: sub_CCA+43j sub_CCA+4Ej ... + mov dx, es:[bx+si] + cmp ax, dx + jl short loc_D34 + mov ax, dx + jmp short loc_D3A +; --------------------------------------------------------------------------- + align 2 + +loc_D2E: ; CODE XREF: sub_CCA+79j sub_CCA+7Fj ... + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + +loc_D34: ; CODE XREF: sub_CCA+5Dj + cmp di, dx + jge short loc_D3A + mov di, dx + +loc_D3A: ; CODE XREF: sub_CCA+61j sub_CCA+6Cj + add bx, 4 + loop loc_CFB + cmp word_F4C4, ax + jl short loc_D2E + cmp word_F4C0, di + jg short loc_D2E + mov ax, [bp+var_4] + cmp word_F4CA, ax + jl short loc_D2E + mov dx, [bp+var_C] + cmp word_F4C6, dx + jg short loc_D2E + mov ax, word_F4CA + cmp ax, dx + jge short loc_D66 + mov dx, ax + +loc_D66: ; CODE XREF: sub_CCA+98j + mov [bp+var_C], dx + mov ax, [bp+arg_0] + cmp [bp+var_8], 0 + jnz short loc_D7F + cmp [bp+var_A], ax + jnz short loc_D7F + mov [bp+var_8], ax + mov [bp+var_A], 0 + +loc_D7F: ; CODE XREF: sub_CCA+A6j sub_CCA+ABj + mov bx, [bp+var_8] + mov dx, [bp+arg_0] + mov ax, word_F4C6 + +loc_D88: ; CODE XREF: sub_CCA+CBj + mov cx, bx + sub bx, 4 + jns short loc_D91 + mov bx, dx + +loc_D91: ; CODE XREF: sub_CCA+C3j + cmp es:[bx+si+2], ax + jl short loc_D88 + 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_F4C6 + jge short loc_DCF + mov ax, dx + sub ax, [bp+var_6] + push ax + mov ax, di + sub ax, es:[bx+si] + mov cx, word_F4C6 + sub cx, dx + imul cx + pop cx + idiv cx + add di, ax + mov dx, word_F4C6 + +loc_DCF: ; CODE XREF: sub_CCA+E7j + mov [bp+var_4], dx + xchg di, dx + mov ax, es:[bx+si] + mov cx, [bp+var_6] + sub cx, di + mov bx, 2DF6h + call sub_1986 + mov bx, [bp+var_A] + mov cx, [bp+arg_0] + mov ax, word_F4C6 + +loc_DEB: ; CODE XREF: sub_CCA+130j + mov di, bx + add bx, 4 + cmp bx, cx + jle short loc_DF6 + xor bx, bx + +loc_DF6: ; CODE XREF: sub_CCA+128j + cmp es:[bx+si+2], ax + jl short loc_DEB + 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_E2B + mov ax, word_F4C6 + 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_E2B: ; CODE XREF: sub_CCA+14Bj + mov dx, di + mov ax, bx + mov cx, [bp+var_2] + sub cx, [bp+var_4] + mov bx, 2DFEh + call sub_1986 + mov si, [bp+var_4] + +loc_E3E: ; CODE XREF: sub_CCA+1CEj + mov di, [bp+var_6] + cmp di, [bp+var_2] + jle short loc_E49 + mov di, [bp+var_2] + +loc_E49: ; CODE XREF: sub_CCA+17Aj + cmp [bp+var_C], di + jle short loc_EC2 + push di + lea dx, [di-1] + sub dx, si + sub si, word_F4C6 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + mov es, word_F4CC + call loc_2BD6 + pop si + les di, [bp+arg_2] + cmp si, [bp+var_6] + jnz short loc_E95 + mov bx, [bp+var_8] + mov dx, es:[bx+di] + sub bx, 4 + jns short loc_E80 + mov bx, [bp+arg_0] + +loc_E80: ; CODE XREF: sub_CCA+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, 2DF6h + call sub_1986 + +loc_E95: ; CODE XREF: sub_CCA+1A6j + cmp [bp+var_2], si + jnz short loc_E3E + mov bx, [bp+var_A] + mov dx, es:[bx+di] + add bx, 4 + cmp bx, [bp+arg_0] + jle short loc_EAA + xor bx, bx + +loc_EAA: ; CODE XREF: sub_CCA+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, 2DFEh + push 0E3Eh + jmp sub_1986 +; --------------------------------------------------------------------------- + +loc_EC2: ; CODE XREF: sub_CCA+182j + mov es, word_F4CC + mov dx, [bp+var_C] + sub dx, si + sub si, word_F4C6 + mov ax, si + shl si, 2 + add si, ax + shl si, 4 + call loc_2BD6 + pop si + pop di + leave + retf 6 +sub_CCA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_EE2 proc far ; CODE XREF: sub_A5F6+28P sub_A5F6+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_EE2 endp + +; --------------------------------------------------------------------------- + align 2 + xor al, al + out 7Ch, al + retf +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_F12 proc far ; CODE XREF: sub_BE79+5EP sub_BE79+6EP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov ax, word_F4C6 + mov cx, word_F4C8 + mov bx, [bp+arg_2] + mov dx, [bp+arg_0] + cmp bx, dx + jl short loc_F29 + xchg bx, dx + +loc_F29: ; CODE XREF: sub_F12+13j + sub dx, ax + jl short loc_F92 + sub bx, ax + cmp bh, 80h ; '€' + sbb di, di + and bx, di + cmp bx, cx + jg short loc_F92 + sub dx, cx + sbb di, di + and dx, di + add dx, cx + mov ax, [bp+arg_4] + cmp ax, word_F4C0 + jl short loc_F92 + cmp ax, word_F4C4 + jg short loc_F92 + mov cx, ax + and cl, 7 + shr ax, 3 + mov di, ax + mov al, 80h ; '€' + shr al, cl + mov cx, dx + mov dx, 4Fh ; 'O' + sub cx, bx + imul bx, 50h + add di, bx + mov es, word_F4CC + inc cx + shr cx, 1 + jnb short loc_F77 + stosb + add di, dx + +loc_F77: ; CODE XREF: sub_F12+60j + shr cx, 1 + jnb short loc_F81 + stosb + add di, dx + stosb + add di, dx + +loc_F81: ; CODE XREF: sub_F12+67j + jcxz short loc_F92 + nop + +loc_F84: ; CODE XREF: sub_F12+7Ej + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + stosb + add di, dx + loop loc_F84 + +loc_F92: ; CODE XREF: sub_F12+19j sub_F12+26j ... + pop di + pop bp + retf 6 +sub_F12 endp + +; --------------------------------------------------------------------------- + align 2 +; START OF FUNCTION CHUNK FOR sub_11AC + +loc_F98: ; CODE XREF: sub_11AC+11j + push cs + call near ptr sub_119E + jnz short loc_FA3 + mov ax, 40h ; '@' + jmp short loc_100F +; --------------------------------------------------------------------------- + +loc_FA3: ; CODE XREF: sub_11AC-210j + xor al, al + mov dx, 0FFF7h + mov es, dx + assume es:nothing + mov dx, 1827h + cmp dx, es:0 + jnz short loc_FB8 + or al, 2Ah + jmp short loc_FF9 +; --------------------------------------------------------------------------- + +loc_FB8: ; CODE XREF: sub_11AC-1FAj + mov dx, 0FD80h + mov es, dx + assume es:nothing + mov dx, 2A27h + cmp dx, es:2 + jnz short loc_FE0 + mov ah, es:4 + mov bx, 518h + or al, 22h + +loc_FD1: ; CODE XREF: sub_11AC-1D2j + mov dl, [bx] + or dl, dl + jz short loc_FF9 + inc bx + cmp ah, dl + jnz short loc_FD1 + or al, 21h + jmp short loc_FF9 +; --------------------------------------------------------------------------- + +loc_FE0: ; CODE XREF: sub_11AC-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_FF9: ; CODE XREF: sub_11AC-1F6j + ; sub_11AC-1D7j ... + mov dh, es:byte_45C + 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_100F: ; CODE XREF: sub_11AC-20Bj + mov word_F52C, ax + ; Hack + db 0e9h + db 057h + db 001h +; END OF FUNCTION CHUNK FOR sub_11AC +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_11AC + +loc_1016: ; CODE XREF: sub_11AC:loc_11C0j + push cs + call near ptr sub_119E + jnz short loc_1022 + mov ax, 80h ; '€' + jmp loc_114B +; --------------------------------------------------------------------------- + +loc_1022: ; CODE XREF: sub_11AC-192j + xor bx, bx + mov ax, 4F01h + int 2Fh + or bx, bx + jz short loc_1053 + push ds + mov ax, 0F000h + mov ds, ax + assume ds:nothing + mov al, ds:0E010h + cmp al, 54h ; 'T' + jnz short loc_104D + 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_114B +; --------------------------------------------------------------------------- + +loc_104D: ; CODE XREF: sub_11AC-174j + pop ds + +loc_104E: ; CODE XREF: sub_11AC-136j + mov bx, 1Ah + jmp short loc_109E +; --------------------------------------------------------------------------- + +loc_1053: ; CODE XREF: sub_11AC-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_106E + mov ax, 14h + cmp bx, 51h ; 'Q' + jnz short loc_1069 + jmp loc_114B +; --------------------------------------------------------------------------- + +loc_1069: ; CODE XREF: sub_11AC-148j + or ax, bx + jmp loc_114B +; --------------------------------------------------------------------------- + +loc_106E: ; CODE XREF: sub_11AC-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_104E + and bh, 0FEh + cmp bh, 0EEh ; 'î' + jnz short loc_1084 + mov dl, 18h + jmp short loc_109E +; --------------------------------------------------------------------------- + +loc_1084: ; CODE XREF: sub_11AC-12Ej + mov ax, 4900h + pushf + int 15h + sbb ax, ax + popf + test ax, ax + jz short loc_1094 + jmp loc_1136 +; --------------------------------------------------------------------------- + +loc_1094: ; CODE XREF: sub_11AC-11Dj + or bl, bl + jz short loc_109B + jmp loc_1136 +; --------------------------------------------------------------------------- + +loc_109B: ; CODE XREF: sub_11AC-116j + mov bx, 12h + +loc_109E: ; CODE XREF: sub_11AC-15Bj + ; sub_11AC-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_10C4 + xor ax, ax + jmp short loc_10CB +; --------------------------------------------------------------------------- + +loc_10C4: ; CODE XREF: sub_11AC-EEj + mov ax, es:[bx+2] + and ax, 1 + +loc_10CB: ; CODE XREF: sub_11AC-EAj + pop bx + popf + jb short loc_10F9 + ror al, 1 + ror al, 1 + or ax, bx + test ax, 40h + jz short loc_10F9 + mov bx, ax + mov dx, 522h + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + jnb short loc_10ED + xor bx, 40h + mov ax, bx + jmp short loc_114B +; --------------------------------------------------------------------------- + +loc_10ED: ; CODE XREF: sub_11AC-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_114B +; --------------------------------------------------------------------------- + +loc_10F9: ; CODE XREF: sub_11AC-DFj sub_11AC-D4j + push bx + mov dx, 52Bh + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + jb short loc_1131 + push ax + mov dx, 534h + 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_1131 + mov ax, 50F1h + call dword_F514 + or ah, ah + jnz short loc_1131 + pop bx + or bx, 200h + mov ax, bx + jmp short loc_114B +; --------------------------------------------------------------------------- + +loc_1131: ; CODE XREF: sub_11AC-AAj sub_11AC-91j ... + pop bx + mov ax, bx + jmp short loc_114B +; --------------------------------------------------------------------------- + +loc_1136: ; CODE XREF: sub_11AC-11Bj + ; sub_11AC-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_114B + mov ax, 11h + +loc_114B: ; CODE XREF: sub_11AC-18Dj + ; sub_11AC-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_1162 + and ax, 110h + or dx, ax + +loc_1162: ; CODE XREF: sub_11AC-51j + mov word_F52C, dx + mov ax, dx + ; Hack + db 0e9h + db 001h + db 000h +; END OF FUNCTION CHUNK FOR sub_11AC +; --------------------------------------------------------------------------- + nop +; START OF FUNCTION CHUNK FOR sub_11AC + +loc_116C: ; CODE XREF: sub_11AC-19Aj + ; sub_11AC-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_118A + cmp bx, 3205h + jz short loc_1193 + cmp bl, 0Ah + jz short loc_1193 + cmp bl, 14h + jz short loc_1193 + cmp bl, 1Eh + jz short loc_1193 + +loc_118A: ; CODE XREF: sub_11AC-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_1199 + +loc_1193: ; CODE XREF: sub_11AC-33j sub_11AC-2Ej ... + or word_F52C, 8000h + +loc_1199: ; CODE XREF: sub_11AC-1Bj + mov ax, word_F52C + retf +; END OF FUNCTION CHUNK FOR sub_11AC +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_119E proc far ; CODE XREF: sub_11AC-213p + ; sub_11AC-195p ... + mov ax, 0FFFFh + mov es, ax + assume es:nothing + mov ax, 0FC00h + sub ax, es:3 + retf +sub_119E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_11AC proc far ; CODE XREF: sub_338E+Ap + +; FUNCTION CHUNK AT 0F98 SIZE 0000007D BYTES +; FUNCTION CHUNK AT 1016 SIZE 00000155 BYTES +; FUNCTION CHUNK AT 116C SIZE 00000031 BYTES + + push cs + call near ptr sub_119E + jz short loc_11C3 + 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_11C0 + nop + nop + jmp loc_F98 +; --------------------------------------------------------------------------- + +loc_11C0: ; CODE XREF: sub_11AC+Dj + jmp loc_1016 +; --------------------------------------------------------------------------- + +loc_11C3: ; CODE XREF: sub_11AC+4j + mov ax, 40h ; '@' + retf +sub_11AC endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_11C8 proc far ; CODE XREF: sub_1942+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_F518, ax + mov word_F4CC, ax + mov word_F51A, 3E80h + xor ax, ax + mov word_F4C0, ax + mov word_F4C6, ax + mov es, ax + assume es:seg000 + mov ah, byte ptr es:loc_54D + and ah, 4 + add ah, 3Fh ; '?' + and ah, 40h + mov word_F520, ax + mov ax, 27Fh + mov word_F4C4, ax + mov word_F4C2, ax + mov ax, 190h + mov word_F51C, ax + dec ax + mov word_F4CA, ax + mov word_F4C8, ax + mov word_F4CE, 7CB0h + retf +sub_11C8 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1216 proc far ; CODE XREF: sub_1942+1Dp sub_B806+58P ... + 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_F51A + mov es, word_F518 + assume es:nothing + rep stosw + mov di, bx + out 7Ch, al + retf +sub_1216 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_123A proc near ; CODE XREF: sub_1250+25p sub_1250+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_123A endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1250 proc far ; CODE XREF: sub_A9D6+E9P + ; sub_A9D6+139P ... + xor dx, dx + mov cx, word_F51A + mov bx, cx + shl bx, 1 + push bx + nop + push cs + call near ptr sub_209E + xchg ax, dx + jb short locret_12A2 + 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_123A + call sub_123A + mov bx, 0B000h + call sub_123A + call sub_123A + mov bx, 0B800h + call sub_123A + call sub_123A + mov bx, 0E000h + call sub_123A + call sub_123A + pop ds + pop di + pop si + push dx + nop + push cs + call near ptr sub_2088 + mov ax, 1 + +locret_12A2: ; CODE XREF: sub_1250+11j + retf 2 +sub_1250 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_12A6 proc far ; CODE XREF: sub_2162+5p + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_45C, 40h + jz short locret_12F9 + 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_12F9 + 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_F7F6, 1 + jz short loc_12E0 + 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_12E0: ; CODE XREF: sub_12A6+34j + test cl, 1 + jz short loc_12EB + 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_12EB: ; CODE XREF: sub_12A6+3Dj + test byte ptr es:loc_710+1, 1 + jz short loc_12F7 + 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_12F7: ; CODE XREF: sub_12A6+4Bj + mov ax, cx + +locret_12F9: ; CODE XREF: sub_12A6+Aj sub_12A6+1Cj + retf 4 +sub_12A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_12FC proc far ; CODE XREF: sub_DEE0+29P + +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_131D + push ax + nop + push cs + call near ptr sub_2426 + mov es:[bx+4], cx + mov es:[bx+2], cx + mov es:[bx], cx + +loc_131D: ; CODE XREF: sub_12FC+Ej + mov ax, es:[bx+12h] + test ax, ax + jz short loc_1337 + push ax + nop + push cs + call near ptr sub_2426 + mov es:[bx+0Eh], cx + mov es:[bx+12h], cx + mov es:[bx+10h], cx + +loc_1337: ; CODE XREF: sub_12FC+27j + mov ax, [bp+arg_2] + test ax, ax + jz short loc_1344 + push ax + nop + push cs + call near ptr sub_2426 + +loc_1344: ; CODE XREF: sub_12FC+40j + pop bp + retf 8 +sub_12FC endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1354 + +loc_1348: ; CODE XREF: sub_1354+11j sub_1354+1Dj ... + pop di + pop si + pop bp + push seg dseg + pop ds + stc + retf 0Ch +; END OF FUNCTION CHUNK FOR sub_1354 +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1354 proc far ; CODE XREF: sub_DDD8+27P + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah +arg_8 = word ptr 0Eh +arg_A = word ptr 10h + +; FUNCTION CHUNK AT 1348 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_B92 + jb short loc_1348 + mov bx, ax + push 4114h + nop + push cs + call near ptr sub_209E + jb short loc_1348 + mov ds, ax + mov word_130EE, bx + mov byte_130F2, 0 + mov byte_130F3, 0 + mov cx, 4000h + xor dx, dx + mov word_130F0, 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_139E: ; CODE XREF: sub_1354+54j sub_1354+58j + and al, 0Fh + stosb + inc al + inc ah + test ah, 0Fh + jnz short loc_139E + inc al + loop loc_139E + mov ax, 0FFF3h + call sub_18FE + cmp dl, 50h ; 'P' + jnz short loc_1348 + call sub_18FE + cmp dl, 69h ; 'i' + jnz short loc_1348 + les di, [bp+arg_4] + assume es:nothing + xor ax, ax + stosw + stosw + dec ax + +loc_13C9: ; CODE XREF: sub_1354+7Cj + inc ax + call sub_18FE + cmp dl, 1Ah + jnz short loc_13C9 + stosw + +loc_13D3: ; CODE XREF: sub_1354+84j + call sub_18FE + or dl, dl + jnz short loc_13D3 + call sub_18FE + mov al, dl + stosb + mov byte_130EC, al + call sub_18FE + mov ah, dl + call sub_18FE + mov al, dl + stosw + test ax, ax + mov ax, 0FFF3h + jz short loc_13F8 + jmp loc_1348 +; --------------------------------------------------------------------------- + +loc_13F8: ; CODE XREF: sub_1354+9Fj + call sub_18FE + cmp dl, 4 + jz short loc_1403 + jmp loc_1348 +; --------------------------------------------------------------------------- + +loc_1403: ; CODE XREF: sub_1354+AAj + mov al, dl + stosb + call sub_18FE + mov al, dl + call sub_18FE + mov ah, dl + stosw + call sub_18FE + mov al, dl + call sub_18FE + mov ah, dl + stosw + call sub_18FE + mov ah, dl + call sub_18FE + mov al, dl + stosw + mov bx, ax + xor ax, ax + stosw + push ds + push ax + push bx + push seg dseg + pop ds + mov word_F80C, 0Ah + nop + push cs + call near ptr sub_227E + pop ds + stosw + jb short loc_1454 + push es + push di + mov es, ax + xor di, di + +loc_1448: ; CODE XREF: sub_1354+FBj + call sub_18FE + mov al, dl + stosb + dec bx + jnz short loc_1448 + pop di + pop es + nop + +loc_1454: ; CODE XREF: sub_1354+ECj + call sub_18FE + mov ah, dl + call sub_18FE + mov al, dl + stosw + mov word_12FE0, ax + mov bx, ax + call sub_18FE + mov ah, dl + call sub_18FE + mov al, dl + stosw + mov word_12FE2, ax + add ax, 2 + mul bx + shr dx, 1 + rcr ax, 1 + push ds + push dx + push ax + shl dx, 0Ch + mov word_12FE8, ax + mov word_12FEA, dx + push seg dseg + pop ds + mov word_F80C, 0Ah + nop + push cs + call near ptr sub_227E + pop ds + mov bx, ax + mov ax, 0FFF8h + jnb short loc_14A2 + jmp loc_1348 +; --------------------------------------------------------------------------- + +loc_14A2: ; CODE XREF: sub_1354+149j + mov ax, bx + mov word ptr dword_12FE4, 0 + mov word ptr dword_12FE4+2, ax + add word_12FEA, ax + mov cx, word_12FE0 + push es + les bx, [bp+arg_0] + mov es:[bx], cx + mov es:[bx+2], ax + pop es + shl byte_130EC, 1 + jb short loc_14D4 + mov bl, 30h ; '0' + nop + +loc_14CA: ; CODE XREF: sub_1354+17Ej + call sub_18FE + mov al, dl + stosb + dec bl + jnz short loc_14CA + +loc_14D4: ; CODE XREF: sub_1354+171j + xor bl, bl + call sub_1810 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1810 + or al, dl + les di, dword_12FE4 + mov cx, word_12FE0 + rep stosb + mov cl, 0FFh + nop + +loc_14F2: ; CODE XREF: sub_1354+490j + ; sub_1354+49Bj + mov ch, 2 + push cx + mov dh, 0 + mov dl, byte_130F2 + mov cl, byte_130F3 + cmp cl, ch + jnb short loc_151E + shl dx, cl + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1512 + call sub_192A + +loc_1512: ; CODE XREF: sub_1354+1B9j + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_130F0, si + nop + +loc_151E: ; CODE XREF: sub_1354+1ADj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_130F2, dl + mov byte_130F3, ch + mov dl, dh + mov dh, 0 + pop cx + mov bl, dl + cmp dl, 3 + jnz short loc_156C + push cx + mov dl, byte_130F2 + mov cl, byte_130F3 + mov dh, 0 + dec cl + jns short loc_155E + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1554 + call sub_192A + +loc_1554: ; CODE XREF: sub_1354+1FBj + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_155E: ; CODE XREF: sub_1354+1F1j + shl dl, 1 + mov byte_130F2, dl + mov byte_130F3, cl + adc bl, 0 + pop cx + +loc_156C: ; CODE XREF: sub_1354+1E2j + cmp bl, cl + jnz short loc_15E0 + mov bl, es:[di-1] + cmp di, 1 + jnb short loc_1586 + 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_1586: ; CODE XREF: sub_1354+223j + and bl, 0Fh + nop + +loc_158A: ; CODE XREF: sub_1354+284j + call sub_1810 + mov bl, dl + mov al, dl + shl al, 4 + call sub_1810 + mov bl, dl + or al, dl + stosb + or di, di + jnz short loc_15A8 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_15A8: ; CODE XREF: sub_1354+24Aj + mov dl, byte_130F2 + mov cl, byte_130F3 + mov dh, 0 + dec cl + jns short loc_15CE + mov si, word_130F0 + cmp si, 4000h + jnz short loc_15C4 + call sub_192A + nop + +loc_15C4: ; CODE XREF: sub_1354+26Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_15CE: ; CODE XREF: sub_1354+260j + shl dl, 1 + mov byte_130F2, dl + mov byte_130F3, cl + jb short loc_158A + mov cl, 0FFh + jmp loc_17DE +; --------------------------------------------------------------------------- + align 2 + +loc_15E0: ; CODE XREF: sub_1354+21Aj + mov bh, 0 + xor bp, bp + mov ax, 1 + mov dl, byte_130F2 + mov cl, byte_130F3 + nop + +loc_15F0: ; CODE XREF: sub_1354+2BCj + inc bh + dec cl + jns short loc_160E + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1604 + call sub_192A + nop + +loc_1604: ; CODE XREF: sub_1354+2AAj + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_160E: ; CODE XREF: sub_1354+2A0j + shl dl, 1 + jb short loc_15F0 + mov byte_130F2, dl + mov byte_130F3, cl + mov dh, 0 + dec bh + jnz short loc_1623 + jmp loc_16BA +; --------------------------------------------------------------------------- + +loc_1623: ; CODE XREF: sub_1354+2CAj + cmp bh, 8 + jl short loc_1668 + mov cx, bp + +loc_162A: ; CODE XREF: sub_1354+30Fj + push cx + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1638 + call sub_192A + +loc_1638: ; CODE XREF: sub_1354+2DFj + mov dh, 0 + mov dl, [si] + inc si + mov word_130F0, si + mov cl, byte_130F3 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_130F2 + 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_162A + mov bp, cx + nop + +loc_1668: ; CODE XREF: sub_1354+2D2j + mov ch, bh + push cx + mov dh, 0 + mov dl, byte_130F2 + mov cl, byte_130F3 + cmp cl, ch + jnb short loc_1694 + shl dx, cl + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1688 + call sub_192A + +loc_1688: ; CODE XREF: sub_1354+32Fj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_130F0, si + nop + +loc_1694: ; CODE XREF: sub_1354+323j + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_130F2, dl + mov byte_130F3, 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_16BA: ; CODE XREF: sub_1354+2CCj + mov cx, ax + test bl, bl + jnz short loc_16C3 + jmp loc_1760 +; --------------------------------------------------------------------------- + +loc_16C3: ; CODE XREF: sub_1354+36Aj + mov bh, 0 + mov ax, word_12FE0 + cmp bl, 1 + jz short loc_16E2 + cmp bl, 2 + jnz short loc_16D8 + shl ax, 1 + adc bh, bh + jmp short loc_16E2 +; --------------------------------------------------------------------------- + +loc_16D8: ; CODE XREF: sub_1354+37Cj + dec ax + cmp bl, 3 + jz short loc_16E2 + add ax, 2 + nop + +loc_16E2: ; CODE XREF: sub_1354+377j + ; sub_1354+382j ... + push ds + shr bh, 1 + rcr ax, 1 + sbb bh, bh + mov si, di + sbb si, ax + mov dx, es + jnb short loc_16F6 + sub dx, 1000h + nop + +loc_16F6: ; CODE XREF: sub_1354+39Bj + mov ds, dx + or bh, bh + jnz short loc_1738 + mov ax, cx + +loc_16FE: ; CODE XREF: sub_1354+3DEj + mov cx, si + cmp si, di + ja short loc_1706 + mov cx, di + +loc_1706: ; CODE XREF: sub_1354+3AEj + neg cx + test ax, ax + jz short loc_1714 + sub cx, ax + sbb dx, dx + and cx, dx + add cx, ax + +loc_1714: ; CODE XREF: sub_1354+3B6j + sub ax, cx + rep movsb + or di, di + jnz short loc_1724 + mov cx, es + add cx, 1000h + mov es, cx + assume es:nothing + +loc_1724: ; CODE XREF: sub_1354+3C6j + or si, si + jnz short loc_1730 + mov cx, ds + add cx, 1000h + mov ds, cx + assume ds:nothing + +loc_1730: ; CODE XREF: sub_1354+3D2j + test ax, ax + jnz short loc_16FE + pop ds + assume ds:dseg + jmp loc_17DC +; --------------------------------------------------------------------------- + +loc_1738: ; CODE XREF: sub_1354+3A6j + ; sub_1354:loc_175Aj + lodsb + mov ah, al + or si, si + jnz short loc_1748 + mov bp, ds + add bp, 1000h + mov ds, bp + assume ds:nothing + nop + +loc_1748: ; CODE XREF: sub_1354+3E9j + mov al, [si] + shr ax, 4 + stosb + or di, di + jnz short loc_175A + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + nop + +loc_175A: ; CODE XREF: sub_1354+3FCj + loop loc_1738 + pop ds + assume ds:dseg + jmp short loc_17DC +; --------------------------------------------------------------------------- + align 2 + +loc_1760: ; CODE XREF: sub_1354+36Cj + mov dl, es:[di-1] + cmp di, 1 + jnb short loc_1776 + 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_1776: ; CODE XREF: sub_1354+413j + mov al, dl + ror dl, 4 + cmp al, dl + jnz short loc_1798 + nop + +loc_1780: ; CODE XREF: sub_1354:loc_178Ej + ; sub_1354+43Fj + stosb + or di, di + jnz short loc_178E + mov dx, es + add dx, 1000h + mov es, dx + assume es:nothing + nop + +loc_178E: ; CODE XREF: sub_1354+42Fj + loop loc_1780 + sub bp, 1 + jnb short loc_1780 + jmp short loc_17DC +; --------------------------------------------------------------------------- + align 2 + +loc_1798: ; CODE XREF: sub_1354+429j + mov bh, al + mov dl, es:[di-2] + cmp di, 2 + jnb short loc_17B0 + push es + mov ax, es + sub ax, 1000h + mov es, ax + assume es:nothing + mov dl, es:[di-2] + pop es + +loc_17B0: ; CODE XREF: sub_1354+44Dj + ; sub_1354:loc_17D4j ... + mov al, dl + stosb + or di, di + jnz short loc_17BE + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_17BE: ; CODE XREF: sub_1354+461j + loop loc_17C6 + sub bp, 1 + jb short loc_17DC + nop + +loc_17C6: ; CODE XREF: sub_1354:loc_17BEj + mov al, bh + stosb + or di, di + jnz short loc_17D4 + mov ax, es + add ax, 1000h + mov es, ax + assume es:nothing + +loc_17D4: ; CODE XREF: sub_1354+477j + loop loc_17B0 + sub bp, 1 + jnb short loc_17B0 + nop + +loc_17DC: ; CODE XREF: sub_1354+3E1j + ; sub_1354+409j ... + mov cl, bl + +loc_17DE: ; CODE XREF: sub_1354+288j + cmp word_12FE8, di + jbe short loc_17E7 + jmp loc_14F2 +; --------------------------------------------------------------------------- + +loc_17E7: ; CODE XREF: sub_1354+48Ej + mov ax, es + cmp word_12FEA, ax + jbe short loc_17F2 + jmp loc_14F2 +; --------------------------------------------------------------------------- + +loc_17F2: ; CODE XREF: sub_1354+499j + mov ah, 3Eh ; '>' + mov bx, word_130EE + 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_2088 + clc + mov ax, 0 + pop di + pop si + pop bp + retf 0Ch +sub_1354 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1810 proc near ; CODE XREF: sub_1354+182p + ; sub_1354+18Cp ... + push ax + push bx + push cx + xor ax, ax + mov dl, byte_130F2 + mov cl, byte_130F3 + dec cl + jns short loc_1838 + mov si, word_130F0 + cmp si, 4000h + jnz short loc_182E + call sub_192A + +loc_182E: ; CODE XREF: sub_1810+19j + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_1838: ; CODE XREF: sub_1810+Fj + shl dl, 1 + jb short loc_1886 + add al, 2 + dec cl + jns short loc_185A + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1850 + call sub_192A + nop + +loc_1850: ; CODE XREF: sub_1810+3Aj + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_185A: ; CODE XREF: sub_1810+30j + shl dl, 1 + jnb short loc_1886 + add al, 2 + inc ah + dec cl + jns short loc_187E + mov si, word_130F0 + cmp si, 4000h + jnz short loc_1874 + call sub_192A + nop + +loc_1874: ; CODE XREF: sub_1810+5Ej + mov dl, [si] + inc si + mov cl, 7 + mov word_130F0, si + nop + +loc_187E: ; CODE XREF: sub_1810+54j + shl dl, 1 + jnb short loc_1886 + add al, 4 + inc ah + +loc_1886: ; CODE XREF: sub_1810+2Aj sub_1810+4Cj ... + mov byte_130F2, dl + mov byte_130F3, cl + mov ch, ah + inc ch + push cx + mov dh, 0 + mov dl, byte_130F2 + mov cl, byte_130F3 + cmp cl, ch + jnb short loc_18BC + shl dx, cl + mov si, word_130F0 + cmp si, 4000h + jnz short loc_18B0 + call sub_192A + +loc_18B0: ; CODE XREF: sub_1810+9Bj + mov dl, [si] + inc si + sub ch, cl + mov cl, 8 + mov word_130F0, si + nop + +loc_18BC: ; CODE XREF: sub_1810+8Fj + xchg cl, ch + shl dx, cl + sub ch, cl + mov byte_130F2, dl + mov byte_130F3, 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_18F0 + pop cx + pop bx + pop ax + retn +; --------------------------------------------------------------------------- + align 2 + +loc_18F0: ; CODE XREF: sub_1810+D9j sub_1810+E6j + mov al, [bx+1] + mov [bx], al + inc bx + loop loc_18F0 + mov [bx], dl + pop cx + pop bx + pop ax + retn +sub_1810 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_18FE proc near ; CODE XREF: sub_1354+5Dp sub_1354+65p ... + push cx + mov si, word_130F0 + cmp si, 4000h + jnz short loc_190C + call sub_192A + +loc_190C: ; CODE XREF: sub_18FE+9j + mov dh, 0 + mov dl, [si] + inc si + mov word_130F0, si + mov cl, byte_130F3 + sub cl, 8 + neg cl + shl dx, cl + xchg dl, byte_130F2 + or dl, dh + mov dh, 0 + pop cx + retn +sub_18FE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_192A proc near ; CODE XREF: sub_1354+1BBp + ; sub_1354+1FDp ... + pusha + mov ah, 3Fh ; '?' + mov bx, word_130EE + 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_192A endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_193C proc far ; CODE XREF: sub_1942+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_193C endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1942 proc far ; CODE XREF: sub_DF12:loc_DF27P + mov al, 41h ; 'A' + out 6Ah, al ; PC-98 GDC (6a): + ; Set display mode to LCD + mov word_F52E, 0 + push cs + call loc_19F0 + mov al, 0 + out 0A4h, al ; Interrupt Controller #2, 8259A + out 0A6h, al ; Interrupt Controller #2, 8259A + push cs + call near ptr sub_193C + push cs + call near ptr sub_11C8 + push cs + call near ptr sub_1216 + push cs + call near ptr sub_19BC + retf +sub_1942 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1968 proc far ; CODE XREF: sub_D7EC+37P + nop + push cs + call near ptr sub_790 + retf +sub_1968 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_196E proc far ; CODE XREF: sub_DF12+45P + xor ax, ax + mov es, ax + assume es:seg000 + or es:byte_500, 20h + retf +sub_196E endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_197A proc far ; CODE XREF: sub_D41C+8P + xor ax, ax + mov es, ax + and es:byte_500, 0DFh + retf +sub_197A endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_1986 proc near ; CODE XREF: sub_CCA+115p sub_CCA+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_1986 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_19BC proc far ; CODE XREF: sub_1942+21p + push si + push di + push ds + pop es + assume es:dseg + mov di, 2E1Eh + mov si, 550h + 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_F52E, 64h ; 'd' + push cs + call loc_19F0 + retf +sub_19BC endp + +; --------------------------------------------------------------------------- + +loc_19F0: ; CODE XREF: sub_600+15p sub_600+3Bp ... + cld + push si + mov ax, word_F52E + 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_1A16 + mov ch, 0Fh + sub dh, 0C8h ; 'È' + neg dh + +loc_1A16: ; CODE XREF: seg000:1A0Dj + mov si, 2E1Eh + mov dl, 64h ; 'd' + cmp word_F560, bx + jnz short loc_1A5A + +loc_1A21: ; CODE XREF: seg000:1A55j + 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_1A21 + pop si + retf +; --------------------------------------------------------------------------- + align 2 + +loc_1A5A: ; CODE XREF: seg000:1A1Fj + mov bx, dx + mov dx, 871Eh + mov al, 0A0h ; ' ' + out 0F6h, al + in al, dx + cmp al, 0FFh + jnz short loc_1A6F + mov dx, 0AE8Eh + in al, dx + shr al, 2 + +loc_1A6F: ; CODE XREF: seg000:1A66j + shr al, 1 + cmc + sbb al, al + mov cs:byte_1AD8, al + mov dx, bx + push di + mov di, 0 + +loc_1A7E: ; CODE XREF: seg000:1AF5j + 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_1AB3 + mov bh, al + +loc_1AB3: ; CODE XREF: seg000:1AAFj + cmp bh, bl + ja short loc_1AB9 + mov bh, bl + +loc_1AB9: ; CODE XREF: seg000:1AB5j + 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_1AD8 db 0 ; DATA XREF: seg000:1A74w +; --------------------------------------------------------------------------- + shr ah, 1 + sbb al, al + and al, 0Fh + out 0AEh, al ; Interrupt Controller #2, 8259A + shr ah, 1 + sbb al, al + and al, 0Fh + out 0ACh, al ; Interrupt Controller #2, 8259A + shr ah, 1 + sbb al, al + and al, 0Fh + out 0AAh, al ; Interrupt Controller #2, 8259A + inc di + cmp di, 10h + jl short loc_1A7E + pop di + pop si + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1AFA proc far ; CODE XREF: sub_3858+34p seg000:3935p + +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_53C + push [bp+arg_0] + push cs + call near ptr sub_2426 + pop bp + retf 2 +sub_1AFA endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov es, word ptr [bp+6] + call word ptr es:2 + pop bp + retf 2 +; --------------------------------------------------------------------------- + align 2 + cmp word ptr es:1Ah, 0 + jz short loc_1B42 + dec word ptr es:1Ah + add word ptr es:12h, 1 + adc word ptr es:14h, 0 + mov ax, es:1Ch + retn +; --------------------------------------------------------------------------- + +loc_1B42: ; CODE XREF: seg000:1B2Aj + call word ptr es:4 + test ah, ah + jnz short locret_1B71 + cmp ax, es:1Ch + mov es:1Ch, ax + jnz short locret_1B71 + push ax + call word ptr es:4 + test ah, ah + jnz short loc_1B70 + mov es:1Ah, ax + sub word ptr es:12h, 1 + sbb word ptr es:14h, 0 + +loc_1B70: ; CODE XREF: seg000:1B5Ej + pop ax + +locret_1B71: ; CODE XREF: seg000:1B49j seg000:1B54j + retn + +; =============== S U B R O U T I N E ======================================= + + +sub_1B72 proc near ; CODE XREF: seg000:1BB6p + mov ax, es:0Ah + mov dx, es:0Ch + cmp dx, es:8 + jb short loc_1B8F + ja short loc_1B8B + cmp ax, es:6 + jb short loc_1B8F + +loc_1B8B: ; CODE XREF: sub_1B72+10j + mov ax, 0FFFFh + retn +; --------------------------------------------------------------------------- + +loc_1B8F: ; CODE XREF: sub_1B72+Ej sub_1B72+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_5D0 + pop es + retn +sub_1B72 endp + +; --------------------------------------------------------------------------- + call sub_1B72 + or ah, ah + jnz short locret_1BC2 + xor al, es:1Eh + +locret_1BC2: ; CODE XREF: seg000:1BBBj + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BC4 proc far ; CODE XREF: seg000:3955p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + cld + mov si, [bp+arg_2] + mov di, [bp+arg_4] + test si, si + jz short loc_1BE7 + +loc_1BD4: ; CODE XREF: sub_1BC4+21j + mov es, [bp+arg_0] + call word ptr es:2 + inc ah + jz short loc_1BE7 + mov es, [bp+arg_6] + stosb + dec si + jnz short loc_1BD4 + +loc_1BE7: ; CODE XREF: sub_1BC4+Ej sub_1BC4+1Aj + mov ax, di + sub ax, [bp+arg_4] + pop di + pop si + pop bp + retf 8 +sub_1BC4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1BF2 proc far ; CODE XREF: seg000:398Ap + +arg_0 = word ptr 6 + + push bp + mov bp, sp + mov es, [bp+arg_0] + xor ax, ax + mov es:1Ah, ax + mov word ptr es:1Ch, 0FFFFh + mov es:0Ah, ax + mov es:0Ch, ax + mov es:12h, ax + mov es:14h, ax + push word ptr es:0 + push word ptr es:10h + push word ptr es:0Eh + push ax + push cs + call near ptr sub_748 + pop bp + retf 2 +sub_1BF2 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_1C2E proc far ; CODE XREF: seg000:3996p + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push di + mov es, [bp+arg_4] + inc [bp+arg_2] + mov di, [bp+arg_0] + or di, di + jz short loc_1C4B + +loc_1C3F: ; CODE XREF: sub_1C2E+1Bj sub_1C2E+20j + call word ptr es:2 + test ah, ah + jnz short loc_1C50 + dec di + jnz short loc_1C3F + +loc_1C4B: ; CODE XREF: sub_1C2E+Fj + dec [bp+arg_2] + jnz short loc_1C3F + +loc_1C50: ; CODE XREF: sub_1C2E+18j + mov ax, es:12h + mov dx, es:14h + pop di + pop bp + retf 6 +sub_1C2E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_1C5E proc far ; CODE XREF: sub_B616+47P sub_B616+58P ... + mov ax, 4E35h + mul word_F56E + mov cx, ax + mov ax, 15Ah + mul word_F56C + add cx, ax + mov ax, 4E35h + mul word_F56C + add ax, 1 + adc dx, cx + mov word_F56C, ax + mov ax, dx + mov word_F56E, ax + and ah, 7Fh + retf +sub_1C5E 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_2088 proc far ; CODE XREF: sub_3F0+57p sub_1250+4Cp ... + push bx + mov bx, sp + mov bx, ss:[bx+6] + mov word_11E3E, bx + pop bx + retf 2 +sub_2088 endp + +; --------------------------------------------------------------------------- + align 2 +; START OF FUNCTION CHUNK FOR sub_209E + +loc_2098: ; CODE XREF: sub_209E+5j + push cs + call near ptr sub_22FA + jb short loc_20CD +; END OF FUNCTION CHUNK FOR sub_209E + +; =============== S U B R O U T I N E ======================================= + + +sub_209E proc far ; CODE XREF: seg000:02D6p seg000:02DEp ... + +; FUNCTION CHUNK AT 2098 SIZE 00000006 BYTES + + cmp word_F808, 0 + jz short loc_2098 + 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_11E3E + add bx, ax + jb short loc_20CC + cmp word_11E3A, bx + jb short loc_20CC + mov word_11E3E, bx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_20CC: ; CODE XREF: sub_209E+1Ej sub_209E+24j + pop bx + +loc_20CD: ; CODE XREF: sub_209E-2j + mov ax, 0FFF8h + retf 2 +sub_209E endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_20D4 proc near ; CODE XREF: sub_2BAC+1Ep sub_2CA8+2p + mov dx, 188h + +loc_20D7: ; CODE XREF: sub_20D4+6j + in al, dx + test al, 80h + jnz short loc_20D7 + mov al, bh + out dx, al + +loc_20DF: ; CODE XREF: sub_20D4+Ej + in al, dx + test al, 80h + jnz short loc_20DF + inc dx + inc dx + mov al, bl + out dx, al + retn +sub_20D4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_20EA proc near ; CODE XREF: sub_2BAC+15p + mov dx, 188h + +loc_20ED: ; CODE XREF: sub_20EA+6j + in al, dx + test al, 80h + jnz short loc_20ED + mov al, bh + out dx, al + +loc_20F5: ; CODE XREF: sub_20EA+Ej + in al, dx + test al, 80h + jnz short loc_20F5 + inc dx + inc dx + in al, dx + retn +sub_20EA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_20FE proc far ; CODE XREF: _main+6P _main+11CP ... + 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_20FE endp + +; --------------------------------------------------------------------------- + align 2 + xor ax, ax + mov es, ax + assume es:seg000 + mov al, byte ptr es:loc_710+2 + inc ax + retf +; --------------------------------------------------------------------------- + xor ax, ax + mov es, ax + mov al, byte ptr es:loc_710+1 + retf +; --------------------------------------------------------------------------- + align 2 + mov dx, 336Ch + jmp short loc_2148 +; --------------------------------------------------------------------------- + align 2 + mov dx, 3368h + jmp short loc_2148 +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2130 proc far ; CODE XREF: sub_DF12+4FP + mov dx, 3568h + jmp short loc_2148 +sub_2130 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2136 proc far ; CODE XREF: sub_D41C+12P + mov dx, 356Ch + jmp short loc_2148 +sub_2136 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_213C proc far ; CODE XREF: sub_DF12+4AP + mov dx, 3168h + jmp short loc_2148 +sub_213C endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2142 proc far ; CODE XREF: sub_D41C+DP + mov dx, 316Ch + jmp short loc_2148 +; --------------------------------------------------------------------------- + db 0 + +loc_2148: ; CODE XREF: seg000:2127j seg000:212Dj ... + 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_2142 endp + +; --------------------------------------------------------------------------- + align 2 +dword_215E dd 0 ; DATA XREF: sub_2162+5Ew seg000:21CDr ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2162 proc far ; CODE XREF: sub_DF12+40P + xor ax, ax + push ax + push ax + push cs + call near ptr sub_12A6 + and ax, 0Ch + cmp ax, 0Ch + mov word_F7FC, 33FFh + jz short loc_217E + mov word_F7FC, 0 + +loc_217E: ; CODE XREF: sub_2162+14j + xor ax, ax + mov word_11E2E, ax + mov word_11E30, ax + cmp byte_F7FE, al + jnz short locret_21CB + mov al, 0Ah + push ax + push cs + mov ax, 21D6h + push ax + nop + push cs + call near ptr sub_7F6 + mov word_11E32, ax + mov word_11E34, 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_F7FE, ah + mov ax, 18h + push ax + push cs + mov ax, 21CCh + push ax + nop + push cs + call near ptr sub_7F6 + mov word ptr cs:dword_215E, ax + mov word ptr cs:dword_215E+2, dx + out 64h, al ; AT Keyboard controller 8042. + +locret_21CB: ; CODE XREF: sub_2162+28j + retf +sub_2162 endp + +; --------------------------------------------------------------------------- + pushf + call cs:dword_215E + out 64h, al ; AT Keyboard controller 8042. + iret +; --------------------------------------------------------------------------- + align 2 + push ax + push ds + mov ax, seg dseg + mov ds, ax + mov ax, word_F7FC + add word_11E36, ax + jb short loc_2207 + inc word_11E2E + inc word_11E30 + cmp word_F7FA, 0 + jz short loc_2207 + push bx + push cx + push dx + push si + push di + push es + cld + call dword ptr unk_F7F8 + pop es + assume es:nothing + pop di + pop si + pop dx + pop cx + pop bx + cli + +loc_2207: ; CODE XREF: seg000:21E4j seg000:21F3j + 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_2210 proc far ; CODE XREF: sub_D7EC+2DP + cmp byte_F7FE, 0 + jz short locret_2256 + mov ax, 18h + push ax + push word ptr cs:dword_215E+2 + push word ptr cs:dword_215E + nop + push cs + call near ptr sub_7F6 + 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_11E34 + push word_11E32 + nop + push cs + call near ptr sub_7F6 + pushf + cli + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + and al, byte_F7FE + 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_F7FE, al + +locret_2256: ; CODE XREF: sub_2210+5j + retf +sub_2210 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2258 proc far ; CODE XREF: sub_600+10p sub_600+21p ... + cmp byte_F7FE, 0 + jnz short loc_2274 + +loc_225F: ; CODE XREF: sub_2258+Fj + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jnz short loc_225F + +loc_2269: ; CODE XREF: sub_2258+19j + jmp short $+2 + jmp short $+2 + in al, 0A0h ; PIC 2 same as 0020 for PIC 1 + test al, 20h + jz short loc_2269 + retf +; --------------------------------------------------------------------------- + +loc_2274: ; CODE XREF: sub_2258+5j + mov ax, word_11E2E + +loc_2277: ; CODE XREF: sub_2258+23j + cmp ax, word_11E2E + jz short loc_2277 + retf +sub_2258 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_227E proc far ; CODE XREF: sub_1354+E7p + ; sub_1354+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_22AA + rcr bx, 1 + push bx + push cs + call near ptr sub_2336 + pop bx + retf 4 +; --------------------------------------------------------------------------- + +loc_22AA: ; CODE XREF: sub_227E+1Fj + mov ax, 0 + stc + pop bx + retf 4 +sub_227E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22B2 proc far ; CODE XREF: sub_DF12+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_22CD + push ax + push bx + push cs + call near ptr sub_22D4 + xor ax, ax + mov word_F80A, 1 + +loc_22CD: ; CODE XREF: sub_22B2+Bj + neg ax + pop bx + retf 2 +sub_22B2 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_22D4 proc far ; CODE XREF: sub_22B2+10p sub_22FA+1Bp + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + mov ax, [bp+arg_2] + mov word_F808, ax + mov word_11E3E, ax + add ax, [bp+arg_0] + mov word_11E38, ax + mov word_11E3A, ax + mov word_11E3C, 0 + mov word_F80A, 0 + clc + pop bp + retf 4 +sub_22D4 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_22FA proc far ; CODE XREF: sub_209E-5p sub_2336+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_F80E + cmp bx, ax + jbe short loc_230B + sub bx, ax + +loc_230B: ; CODE XREF: sub_22FA+Dj + mov ah, 48h + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_231F + push ax + push ax + push bx + push cs + call near ptr sub_22D4 + mov word_F80A, 1 + pop ax + +loc_231F: ; CODE XREF: sub_22FA+15j + pop bx + retf +sub_22FA endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2322 proc far ; CODE XREF: sub_682+11p sub_2536+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_233D +sub_2322 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2336 proc far ; CODE XREF: sub_227E+25p sub_25E2+23p + push bx + mov bx, sp + mov bx, ss:[bx+6] + +loc_233D: ; CODE XREF: sub_2322+12j + cmp word_F808, 0 + jnz short loc_2348 + push cs + call near ptr sub_22FA + +loc_2348: ; CODE XREF: sub_2336+Cj + push cx + push es + test bx, bx + jz short loc_23A9 + mov ax, word_11E38 + sub ax, word_11E3E + cmp bx, ax + jnb short loc_23A9 + inc bx + mov ax, word_11E3C + test ax, ax + jz short loc_2385 + mov cx, word_11E38 + +loc_2365: ; CODE XREF: sub_2336+4Dj + mov es, ax + mov ax, es:2 + cmp word ptr es:0, 0 + jnz short loc_2381 + mov cx, es + add cx, bx + jb short loc_237D + cmp cx, ax + jbe short loc_23B6 + +loc_237D: ; CODE XREF: sub_2336+41j + mov cx, word_11E38 + +loc_2381: ; CODE XREF: sub_2336+3Bj + cmp ax, cx + jnz short loc_2365 + +loc_2385: ; CODE XREF: sub_2336+29j + mov ax, word_11E3A + mov cx, ax + sub ax, bx + jb short loc_23A9 + cmp ax, word_11E3E + jb short loc_23A9 + mov word_11E3A, ax + mov es, ax + mov es:2, cx + mov word ptr es:0, 1 + mov bx, ax + jmp short loc_240F +; --------------------------------------------------------------------------- + +loc_23A9: ; CODE XREF: sub_2336+16j sub_2336+21j ... + mov ax, 0 + mov word_F80C, ax + stc + pop es + pop cx + pop bx + retf 2 +; --------------------------------------------------------------------------- + +loc_23B6: ; CODE XREF: sub_2336+45j + sub ax, cx + cmp ax, 1 + jbe short loc_23E6 + 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_11E3C + jnz short loc_240F + mov word_11E3C, cx + jmp short loc_240F +; --------------------------------------------------------------------------- + +loc_23E6: ; CODE XREF: sub_2336+85j + mov word ptr es:0, 1 + mov bx, es + cmp bx, word_11E3C + jnz short loc_240F + mov ax, word_11E38 + mov cx, bx + push bx + +loc_23FB: ; CODE XREF: sub_2336+D0j + les cx, es:0 + jcxz short loc_240A + mov bx, es + cmp bx, ax + jb short loc_23FB + xor bx, bx + +loc_240A: ; CODE XREF: sub_2336+CAj + mov word_11E3C, bx + pop bx + +loc_240F: ; CODE XREF: sub_2336+71j sub_2336+A8j ... + mov es, bx + mov ax, 0 + xchg ax, word_F80C + mov es:4, ax + lea ax, [bx+1] + clc + +loc_2420: ; CODE XREF: sub_2426+12j sub_2426+1Aj + pop es + pop cx + pop bx + retf 2 +sub_2336 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2426 proc far ; CODE XREF: sub_53C:loc_54Dp + ; sub_682+45p ... + push bx + mov bx, sp + push cx + push es + mov bx, ss:[bx+6] + dec bx + mov es, bx + cmp bx, word_11E3A + jz short loc_248A + jb short loc_2420 + xor bx, bx + cmp word ptr es:[bx], 1 + jnz short loc_2420 + mov es:[bx], bx + mov cx, word_11E3C + mov ax, es + mov word_11E3C, ax + jcxz short loc_24C7 + cmp ax, cx + jb short loc_2459 + mov ax, cx + mov word_11E3C, ax + +loc_2459: ; CODE XREF: sub_2426+2Cj + mov cx, ax + mov ax, es:[bx+2] + cmp ax, word_11E38 + jnz short loc_2467 + mov ax, es + +loc_2467: ; CODE XREF: sub_2426+3Dj + push ds + +loc_2468: ; CODE XREF: sub_2426+4Dj sub_2426+54j + mov ds, cx + mov cx, [bx+2] + cmp cx, ax + ja short loc_2487 + cmp [bx], bx + jnz short loc_2468 + +loc_2475: ; CODE XREF: sub_2426+5Fj + mov es, cx + cmp es:[bx], bx + jnz short loc_2468 + mov cx, es:[bx+2] + mov [bx+2], cx + cmp cx, ax + jbe short loc_2475 + +loc_2487: ; CODE XREF: sub_2426+49j + pop ds + jmp short loc_24C7 +; --------------------------------------------------------------------------- + +loc_248A: ; CODE XREF: sub_2426+10j + xor bx, bx + mov ax, es:[bx+2] + mov word_11E3A, ax + cmp ax, word_11E38 + jz short loc_24C7 + mov es, ax + cmp es:[bx], bx + jnz short loc_24C7 + mov ax, es:[bx+2] + mov word_11E3A, ax + mov cx, word_11E38 + cmp ax, cx + jz short loc_24C3 + jmp short loc_24BA +; --------------------------------------------------------------------------- + align 2 + +loc_24B2: ; CODE XREF: sub_2426+99j + mov ax, es:[bx+2] + cmp ax, cx + jz short loc_24C3 + +loc_24BA: ; CODE XREF: sub_2426+89j + mov es, ax + cmp es:[bx], bx + jnz short loc_24B2 + mov bx, es + +loc_24C3: ; CODE XREF: sub_2426+87j sub_2426+92j + mov word_11E3C, bx + +loc_24C7: ; CODE XREF: sub_2426+28j sub_2426+62j ... + clc + pop es + pop cx + pop bx + retf 2 +sub_2426 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_24CE proc far ; CODE XREF: sub_D7EC+28P + cmp word_F808, 0 + jz short loc_24E9 + mov ax, word_F808 + mov es, ax + xor ax, ax + cmp word_F80A, ax + mov word_F808, ax + jz short loc_24E9 + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_24E9: ; CODE XREF: sub_24CE+5j sub_24CE+15j + mov ax, 1 + retf +sub_24CE endp + +; --------------------------------------------------------------------------- + xor ax, ax + stc + retf +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_24F2 proc far ; CODE XREF: sub_B5A6+69P + ; sub_B806:loc_BA56P + cmp word_F830, 0 + jz short locret_2521 + push word_F830 + push cs + call near ptr sub_2426 + mov word_F830, 0 + jmp short loc_250F +; --------------------------------------------------------------------------- + +loc_2509: ; CODE XREF: sub_24F2+22j + dec ax + push ax + push cs + call near ptr sub_26E0 + +loc_250F: ; CODE XREF: sub_24F2+15j + mov ax, word_F832 + test ax, ax + jnz short loc_2509 + cmp word_F834, 0 + jz short locret_2521 + call word_F834 + +locret_2521: ; CODE XREF: sub_24F2+5j sub_24F2+29j + retf +sub_24F2 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_2536 + +loc_2522: ; CODE XREF: sub_2536+32j + push ax + push es + push cs + call near ptr sub_2426 + pop ax + jmp short loc_252F +; END OF FUNCTION CHUNK FOR sub_2536 +; --------------------------------------------------------------------------- + align 2 +; START OF FUNCTION CHUNK FOR sub_2536 + +loc_252C: ; CODE XREF: sub_2536+24j + mov ax, 0FFF8h + +loc_252F: ; CODE XREF: sub_2536-Dj + stc + pop di + pop si + pop bp + retf 8 +; END OF FUNCTION CHUNK FOR sub_2536 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2536 proc far + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + +; FUNCTION CHUNK AT 2522 SIZE 00000009 BYTES +; FUNCTION CHUNK AT 252C SIZE 0000000A BYTES + + push bp + mov bp, sp + push si + push di + mov di, word_F832 + shl di, 1 + mov ax, [bp+arg_6] + mov dx, ax + mul ah + mov bx, ax + shl ax, 2 + add ax, bx + mov word_F80C, 4 + push ax + push cs + call near ptr sub_2322 + jb short loc_252C + mov es, ax + push word_F832 + push dx + push ax + push cs + call near ptr sub_25E2 + jb short loc_2522 + 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_258C + rep movsb + jmp short loc_2592 +; --------------------------------------------------------------------------- + align 2 + +loc_258C: ; CODE XREF: sub_2536+4Fj sub_2536+5Aj + lodsb + not al + stosb + loop loc_258C + +loc_2592: ; CODE XREF: sub_2536+53j + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_259A: ; CODE XREF: sub_2536+6Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_259A + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_25AA: ; CODE XREF: sub_2536+7Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_25AA + mov cx, bx + xor di, di + shr dh, 1 + sbb ah, ah + +loc_25BA: ; CODE XREF: sub_2536+8Aj + lodsb + xor al, ah + or [di], al + inc di + loop loc_25BA + test dl, dl + jz short loc_25D6 + mov ah, 4 + +loc_25C8: ; CODE XREF: sub_2536+9Ej + xor si, si + mov cx, bx + +loc_25CC: ; CODE XREF: sub_2536+9Aj + lodsb + and [di], al + inc di + loop loc_25CC + dec ah + jnz short loc_25C8 + +loc_25D6: ; CODE XREF: sub_2536+8Ej + pop ds + mov ax, word_F832 + dec ax + pop di + pop si + pop bp + retf 8 +sub_2536 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_25E2 proc far ; CODE XREF: sub_2536+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_2651 + cmp word_F830, 0 + jnz short loc_2622 + mov word_F80C, 4 + push 240h + push cs + call near ptr sub_2336 + mov word_F830, ax + mov ax, 0FFF8h + jb short loc_2651 + push es + push cx + push di + push ds + pop es + assume es:dseg + xor ax, ax + mov di, 3260h + mov cx, 200h + rep stosw + pop di + pop cx + pop es + assume es:nothing + +loc_2622: ; CODE XREF: sub_25E2+17j + mov ax, bx + shl bx, 1 + cmp ax, word_F832 + jnb short loc_263D + cmp word ptr [bx+3260h], 0 + jz short loc_2641 + push word ptr [bx+2E60h] + push cs + call near ptr sub_2426 + jmp short loc_2641 +; --------------------------------------------------------------------------- + +loc_263D: ; CODE XREF: sub_25E2+48j + inc ax + mov word_F832, ax + +loc_2641: ; CODE XREF: sub_25E2+4Fj sub_25E2+59j + mov ax, [bp+arg_2] + mov [bx+3260h], ax + mov ax, [bp+arg_0] + mov [bx+2E60h], ax + xor ax, ax + +loc_2651: ; CODE XREF: sub_25E2+10j sub_25E2+2Cj + pop bx + pop bp + retf 6 +sub_25E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2656 proc far ; CODE XREF: sub_B5A6+12P + ; sub_B806+10EP ... + +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_B92 + jb short loc_26D8 + mov bx, ax + mov cx, 830h + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3B4 + pop cx + pop bx + jb short loc_26D0 + mov al, byte_F815 + and al, 7Fh + cmp al, 3 + mov ax, 0FFF3h + jnz short loc_26D0 + xor si, si + mov ax, word_F82C + or ax, ax + jz short loc_269C + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_3F0 + pop cx + pop bx + mov si, ax + +loc_269C: ; CODE XREF: sub_2656+37j + test byte_F815, 80h + jz short loc_26B0 + push bx + push cx + push bx + push ds + push cx + push cs + call near ptr sub_590 + pop cx + pop bx + jb short loc_26D0 + +loc_26B0: ; CODE XREF: sub_2656+4Bj + push bx + push bx + push ds + push cx + push si + push cs + call loc_286 + pop bx + jb short loc_26D0 + push bx + push cs + call near ptr sub_B7C + mov ax, word_F81E + sub ax, word_F81C + inc ax + pop di + pop si + pop ds + pop bp + retf 4 +; --------------------------------------------------------------------------- + +loc_26D0: ; CODE XREF: sub_2656+22j sub_2656+2Ej ... + push ax + push bx + push cs + call near ptr sub_B7C + pop ax + stc + +loc_26D8: ; CODE XREF: sub_2656+10j + pop di + pop si + pop ds + pop bp + retf 4 +sub_2656 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_26E0 proc far ; CODE XREF: sub_24F2+1Ap + mov bx, sp + xor dx, dx + mov bx, ss:[bx+4] + cmp bx, word_F832 + jnb short loc_2728 + mov cx, bx + shl bx, 1 + mov ax, [bx+3260h] + or ax, ax + jz short loc_2728 + push word ptr [bx+2E60h] + push cs + call near ptr sub_2426 + mov [bx+2E60h], dx + mov [bx+3260h], dx + inc cx + cmp cx, word_F832 + jnz short loc_2720 + +loc_2711: ; CODE XREF: sub_26E0+3Dj + dec word_F832 + jz short loc_2720 + dec bx + dec bx + mov cx, [bx+2E60h] + jcxz short loc_2711 + nop + +loc_2720: ; CODE XREF: sub_26E0+2Fj sub_26E0+35j + mov ax, 0 + clc + retf 2 +; --------------------------------------------------------------------------- + align 2 + +loc_2728: ; CODE XREF: sub_26E0+Cj sub_26E0+18j + stc + mov ax, 0FFE1h + retf 2 +sub_26E0 endp + +; --------------------------------------------------------------------------- + align 2 + +loc_2730: ; CODE XREF: seg000:278Ej seg000:2797j ... + pop di + pop si + pop bp + retf 6 +; --------------------------------------------------------------------------- + +loc_2736: ; CODE XREF: sub_B69A+116P + push bp + mov bp, sp + push si + push di + mov bx, [bp+6] + shl bx, 1 + mov ax, [bx+2E60h] + mov cs:word_28ED, ax + mov bx, [bx+3260h] + xor ax, ax + xchg al, bh + mov word_12640, ax + mov cx, ax + shl cx, 3 + add cx, [bp+0Ah] + dec cx + imul bx + mov cs:word_2926, ax + cmp cx, word_F4C4 + jg short loc_278A + mov dx, word_F4C0 + cmp [bp+0Ah], dx + jl short loc_278A + mov di, [bp+8] + cmp word_F4C6, di + jg short loc_278A + mov ax, bx + add ax, di + cmp ax, word_F4CA + jge short loc_278A + pop di + pop si + pop bp + jmp near ptr sub_292A +; --------------------------------------------------------------------------- + +loc_278A: ; CODE XREF: seg000:2766j seg000:276Fj ... + cmp cx, word_F4C0 + jl short loc_2730 + mov dx, word_F4C4 + cmp [bp+0Ah], dx + jg short loc_2730 + mov di, [bp+8] + cmp word_F4CA, di + jl short loc_2730 + mov ax, bx + add ax, di + cmp ax, word_F4C6 + jle short loc_2730 + cmp cx, dx + jle short loc_27B2 + mov cx, dx + +loc_27B2: ; CODE XREF: seg000:27AEj + mov al, [bp+0Ah] + and al, 7 + mov cs:byte_282F, al + xor si, si + mov ax, word_F4C0 + cmp [bp+0Ah], ax + jge short loc_27D7 + mov dx, ax + shr dx, 3 + add si, dx + mov dx, [bp+0Ah] + sar dx, 3 + sub si, dx + mov [bp+0Ah], ax + +loc_27D7: ; CODE XREF: seg000:27C3j + sub di, word_F4C6 + jns short loc_27E8 + add bx, di + mov ax, word_12640 + imul di + sub si, ax + xor di, di + +loc_27E8: ; CODE XREF: seg000:27DBj + lea ax, [bx+di-1] + sub ax, word_F4C8 + jle short loc_27F3 + sub bx, ax + +loc_27F3: ; CODE XREF: seg000:27EFj + mov cs:word_28F1, bx + mov ax, [bp+0Ah] + shr ax, 3 + imul bx, di, 50h + add bx, ax + mov cs:word_28F4, 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_2825 + and dl, dh + +loc_2825: ; CODE XREF: seg000:2821j + mov cs:word_28F7, bx + mov es, word_F4CC +; --------------------------------------------------------------------------- + db 0B1h +byte_282F db 12h ; DATA XREF: seg000:27B7w +; --------------------------------------------------------------------------- + mov al, 0C0h ; 'À' + out 7Ch, al + mov al, 0 + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_28EA + mov al, 0CEh ; 'Î' + out 7Ch, al + mov al, 0FFh + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_28EA + mov ax, 0CDh ; 'Í' + out 7Ch, al + call loc_28EA + mov ax, 0CBh ; 'Ë' + out 7Ch, al + call loc_28EA + mov ax, 0C7h ; 'Ç' + out 7Ch, al + call loc_28EA + 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_2874 proc near + test si, si + jz short loc_287B + +loc_2878: ; CODE XREF: sub_2874+43j + mov ah, [si-1] + +loc_287B: ; CODE XREF: sub_2874+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_28AE + jz short loc_28A1 + +loc_2890: ; CODE XREF: sub_2874+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_2890 + +loc_28A1: ; CODE XREF: sub_2874+1Aj + mov ah, al + mov al, [si] + inc si + shr ax, cl + and al, dh + mov es:[di], al + inc di + +loc_28AE: ; CODE XREF: sub_2874+18j + add si, 1234h + add di, 1234h + dec bp + jnz short loc_2878 + retn +sub_2874 endp + +; --------------------------------------------------------------------------- + +loc_28BA: ; CODE XREF: seg000:28E7j + mov al, [si] + inc si + and al, dl + mov es:[di], al + inc di + cmp bx, 1 + jl short loc_28D7 + lea cx, [bx-1] + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + lodsb + and al, dh + stosb + +loc_28D7: ; CODE XREF: seg000:28C6j + 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_28BA + retn +; --------------------------------------------------------------------------- + +loc_28EA: ; CODE XREF: seg000:283Ep seg000:284Fp ... + push si + push ds +; --------------------------------------------------------------------------- + db 0B8h +word_28ED dw 1234h ; DATA XREF: seg000:2744w + db 50h, 0BDh +word_28F1 dw 1234h ; DATA XREF: seg000:loc_27F3w + db 0BFh +word_28F4 dw 1234h ; DATA XREF: seg000:2803w + db 0BBh +word_28F7 dw 1234h ; DATA XREF: seg000:loc_2825w + db 0A1h, 60h, 36h, 48h, 80h, 0F9h, 0, 75h, 8, 8Ah, 0E0h + db 1Fh, 68h, 22h, 29h, 0EBh, 0B0h, 2Eh, 88h, 1Eh, 89h + db 28h, 2Bh, 0C3h, 2Eh, 0A3h, 0B0h, 28h, 0B8h, 4Fh, 0 + db 2Bh, 0C3h, 2Eh, 0A3h, 0B4h, 28h, 1Fh, 0E8h, 52h, 0FFh + db 1Fh, 5Eh, 81h, 0C6h +word_2926 dw 1234h ; DATA XREF: seg000:275Ew +; --------------------------------------------------------------------------- + retn +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_292A proc far ; CODE XREF: seg000:2787j sub_B077+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+3260h] + 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+820h] + mov cs:word_2AD7, ax + test bp, 1 + jnz short loc_299A + test dh, 1 + jnz short loc_2984 + mov cs:byte_2A37, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2A35, al + mov cs:word_2ADA, 0FF3Eh + jmp short loc_29CC +; --------------------------------------------------------------------------- + +loc_2984: ; CODE XREF: sub_292A+42j + mov cs:byte_2A65, ch + mov al, 50h ; 'P' + sub al, dh + mov cs:byte_2A63, al + mov cs:word_2ADA, 0FF62h + jmp short loc_29CC +; --------------------------------------------------------------------------- + +loc_299A: ; CODE XREF: sub_292A+3Dj + dec bp + test dh, 1 + jnz short loc_29B8 + dec ch + mov cs:byte_2A9C, ch + mov al, 4Eh ; 'N' + sub al, dh + mov cs:byte_2A9A, al + mov cs:word_2ADA, 0FF90h + jmp short loc_29CC +; --------------------------------------------------------------------------- + +loc_29B8: ; CODE XREF: sub_292A+74j + mov cs:byte_2ACD, ch + mov al, 4Fh ; 'O' + sub al, dh + mov cs:byte_2ACB, al + mov cs:word_2ADA, 0FFC6h + +loc_29CC: ; CODE XREF: sub_292A+58j sub_292A+6Ej ... + mov ds, word ptr [bx+2E60h] + 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_2AD4 + mov ax, 0FFCEh + out 7Ch, al + mov al, ah + out 7Eh, al + out 7Eh, al + out 7Eh, al + out 7Eh, al + call loc_2AD4 + mov al, 0CDh ; 'Í' + out 7Ch, al + call loc_2AD4 + mov al, 0CBh ; 'Ë' + out 7Ch, al + call loc_2AD4 + mov al, 0C7h ; 'Ç' + out 7Ch, al + call loc_2AD4 + xor al, al + out 7Ch, al + pop di + pop si + pop ds + pop bp + retf 6 +sub_292A 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_2A35 db 50h ; DATA XREF: sub_292A+4Dw + db 0B5h +byte_2A37 db 11h ; DATA XREF: sub_292A+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_2A63 db 50h ; DATA XREF: sub_292A+63w + db 0B5h +byte_2A65 db 11h ; DATA XREF: sub_292A:loc_2984w + 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_2A9A db 50h ; DATA XREF: sub_292A+81w + db 0B5h +byte_2A9C db 11h ; DATA XREF: sub_292A+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_2ACB db 50h ; DATA XREF: sub_292A+97w + db 0B5h +byte_2ACD db 11h ; DATA XREF: sub_292A:loc_29B8w + db 0FEh, 0CBh, 75h, 0D0h, 0C3h, 90h +; --------------------------------------------------------------------------- + +loc_2AD4: ; CODE XREF: sub_292A+BBp sub_292A+CDp ... + mov di, bp +; --------------------------------------------------------------------------- + db 0BBh +word_2AD7 dw 1234h ; DATA XREF: sub_292A+35w + db 0E9h +word_2ADA dw 0FF3Eh ; DATA XREF: sub_292A+51w sub_292A+67w ... + +; =============== S U B R O U T I N E ======================================= + + +sub_2ADC proc far ; CODE XREF: sub_2B18+4p sub_2B8E+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_2AE7: ; CODE XREF: sub_2ADC+2Fj + mov es, bx + assume es:nothing + inc bx + mov ax, es:1 + or ax, ax + jz short loc_2AFF + mov di, 10h + mov cx, 0Ah + mov si, 856h + repe cmpsb + jz short loc_2B10 + +loc_2AFF: ; CODE XREF: sub_2ADC+14j + mov ax, es:3 + add bx, ax + mov al, es:0 + cmp al, 4Dh ; 'M' + jz short loc_2AE7 + mov bx, 0 + +loc_2B10: ; CODE XREF: sub_2ADC+21j + mov ax, bx + mov word_F562, ax + pop di + pop si + retf +sub_2ADC endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2B18 proc far ; CODE XREF: _main+BP + push si + push di + nop + push cs + call near ptr sub_2ADC + or ax, ax + mov ax, 2 + jnz short loc_2B8A + 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_2B81 + mov bx, cs + cmp bx, ax + jnb short loc_2B5C + 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_2B5C: ; CODE XREF: sub_2B18+2Dj + mov cx, ax + mov word_F562, 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, 856h + mov cx, 0Ah + rep movsb + xor ax, ax + stosw + stosw + stosw + mov cx, 1 + +loc_2B81: ; CODE XREF: sub_2B18+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_2B8A: ; CODE XREF: sub_2B18+Cj + pop di + pop si + retf +sub_2B18 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2B8E proc far ; CODE XREF: _main+126P + mov ax, word_F562 + or ax, ax + jnz short loc_2B9E + nop + push cs + call near ptr sub_2ADC + or ax, ax + jnz short locret_2BAA + +loc_2B9E: ; CODE XREF: sub_2B8E+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_F562, 0 + +locret_2BAA: ; CODE XREF: sub_2B8E+Ej + retf +sub_2B8E endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2BAC proc far ; CODE XREF: sub_DF12+59P + mov cx, 100h + mov dx, 188h + +loc_2BB2: ; CODE XREF: sub_2BAC+Bj + in al, dx + inc al + jnz short loc_2BBD + loop loc_2BB2 + xor ax, ax + jmp short loc_2BD1 +; --------------------------------------------------------------------------- + +loc_2BBD: ; CODE XREF: sub_2BAC+9j + pushf + cli + mov bh, 7 + call sub_20EA + and al, 3Fh + or al, 80h + mov bl, al + call sub_20D4 + popf + mov ax, 1 + +loc_2BD1: ; CODE XREF: sub_2BAC+Fj + mov word_F524, ax + retf +sub_2BAC endp + +; --------------------------------------------------------------------------- + align 2 + +loc_2BD6: ; CODE XREF: sub_CCA+19Cp sub_CCA+20Fp + mov ax, word_F4CE + mov cs:word_2C18, ax + mov ax, word_11DDC + mov cs:word_2C89, ax + mov ax, word_11DE4 + mov cs:word_2C97, ax + mov ax, word_11DD8 + mov cs:word_2C81, ax + mov ax, word_11DE0 + mov cs:word_2C93, ax + mov ax, word_F4C0 + mov cs:word_2C1D, ax + mov cs:word_2C47, ax + mov ax, word_F4C2 + mov cs:word_2C37, ax + jmp short $+2 + push bp + mov cx, word_11DD6 + mov bp, word_11DDE +; --------------------------------------------------------------------------- + db 81h, 0FEh +word_2C18 dw 1234h ; DATA XREF: seg000:2BD9w + db 77h, 61h, 0B8h +word_2C1D dw 1234h ; DATA XREF: seg000:2BFCw + 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_2C37 dw 1234h ; DATA XREF: seg000:2C07w + db 2Bh, 0CFh, 1Bh, 0C0h, 23h, 0C8h, 3, 0CFh, 2Bh, 0CBh + db 7Ch, 38h, 81h, 0C3h +word_2C47 dw 1234h ; DATA XREF: seg000:2C00w + db 8Bh, 0FBh, 0C1h, 0EFh, 4, 0D1h, 0E7h, 3, 0FEh, 83h + db 0E3h, 0Fh, 3, 0CBh, 83h, 0E9h, 10h, 0D1h, 0E3h, 8Bh + db 87h, 0F0h, 4, 0F7h, 0D0h, 23h, 6, 60h, 8, 8Bh, 0D9h + db 83h, 0E3h, 0Fh, 0D1h, 0E3h, 0C1h, 0F9h, 4, 78h, 6, 0ABh + db 0A1h, 60h, 8, 0F3h, 0ABh, 23h, 87h, 0F2h, 4, 0ABh, 81h + db 6, 0FAh, 2Dh +word_2C81 dw 1234h ; DATA XREF: seg000:2BEEw + db 8Bh, 0Eh, 0F6h, 2Dh, 81h, 0D1h +word_2C89 dw 1234h ; DATA XREF: seg000:2BE0w + db 89h, 0Eh, 0F6h, 2Dh, 81h, 6, 2, 2Eh +word_2C93 dw 1234h ; DATA XREF: seg000:2BF5w + db 81h, 0D5h +word_2C97 dw 1234h ; DATA XREF: seg000:2BE7w + db 83h, 0C6h, 50h, 4Ah, 78h, 3, 0E9h, 74h, 0FFh, 89h, 2Eh + db 0FEh, 2Dh, 5Dh, 0C3h + +; =============== S U B R O U T I N E ======================================= + + +sub_2CA8 proc near ; CODE XREF: sub_2CBA+4p + mov bh, 0Fh + call sub_20D4 + mov dx, 188h + mov al, 0Eh + out dx, al + inc dx + inc dx + in al, dx + not al + retn +sub_2CA8 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_2CBA proc far ; CODE XREF: sub_DF96+F0P + pushf + cli + mov bl, 80h ; '€' + call sub_2CA8 + and ax, 3Fh + popf + retf +sub_2CBA endp + +; --------------------------------------------------------------------------- + xchg dx, bx + out dx, al + xchg dx, bx + in al, dx + not al + retn +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2CD0 proc far ; CODE XREF: seg000:30A6p seg000:30D6p ... + test word_F52C, 10h + jnz short loc_2CF8 + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov bx, 3E6h + jnz short loc_2CEA + mov bx, 4CDh + +loc_2CEA: ; CODE XREF: sub_2CD0+15j + mov dx, 3FDBh + mov al, bl + out dx, al + mov al, bh + out dx, al + mov al, 7 + out 37h, al + retf +; --------------------------------------------------------------------------- + +loc_2CF8: ; CODE XREF: sub_2CD0+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_2CD0 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2D00 proc near ; CODE XREF: sub_2D28:loc_2DA4p + ; sub_2D28:loc_2DF2p ... + les bx, [si] + assume es:nothing + mov al, es:[bx] + sub al, 30h ; '0' + cmp al, 9 + ja short loc_2D24 + sub ah, ah + nop + +loc_2D0E: ; CODE XREF: sub_2D00+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_2D0E + nop + +loc_2D24: ; CODE XREF: sub_2D00+9j + mov [si], bx + retn +sub_2D00 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_2D28 proc far ; CODE XREF: sub_3156+BCp + ; sub_3156+10Fp + mov bx, sp + push si + mov si, ss:[bx+4] + jmp loc_2DE1 +; --------------------------------------------------------------------------- + +loc_2D32: ; CODE XREF: sub_2D28+C1j + xor cx, cx + mov al, es:[bx] + mov [si+8], al + inc word ptr [si] + cbw + cmp ax, 4Fh ; 'O' + jnz short loc_2D46 + jmp loc_2E0C +; --------------------------------------------------------------------------- + align 2 + +loc_2D46: ; CODE XREF: sub_2D28+18j + sub ax, 3Ch ; '<' + test al, 1 + jnz short loc_2D78 + cmp ax, 18h + ja short loc_2D78 + xchg ax, bx + jmp cs:off_2D58[bx] +; --------------------------------------------------------------------------- +off_2D58 dw offset loc_2E22 ; DATA XREF: sub_2D28+2Br + dw offset loc_2E30 + dw offset loc_2D78 + dw offset loc_2D78 + dw offset loc_2D78 + dw offset loc_2D78 + dw offset loc_2D78 + dw offset loc_2D78 + dw offset loc_2DF2 + dw offset loc_2E3E + dw offset loc_2D78 + dw offset loc_2D72 + dw offset loc_2E00 +; --------------------------------------------------------------------------- + +loc_2D72: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28+46o + mov byte ptr [si+8], 48h ; 'H' + jmp short loc_2DA4 +; --------------------------------------------------------------------------- + +loc_2D78: ; CODE XREF: sub_2D28+23j sub_2D28+28j ... + mov al, [si+8] + sub al, 41h ; 'A' + cmp al, 6 + ja short loc_2DE1 + nop + les bx, [si] + mov al, es:[bx] + cmp al, 2Bh ; '+' + jz short loc_2D8F + cmp al, 23h ; '#' + jnz short loc_2D95 + +loc_2D8F: ; CODE XREF: sub_2D28+61j + add byte ptr [si+8], 8 + inc word ptr [si] + +loc_2D95: ; CODE XREF: sub_2D28+65j + les bx, [si] + cmp byte ptr es:[bx], 2Dh ; '-' + jnz short loc_2DA4 + add byte ptr [si+8], 10h + inc word ptr [si] + nop + +loc_2DA4: ; CODE XREF: sub_2D28+4Ej sub_2D28+73j + call sub_2D00 + mov [si+0Ch], cx + or cx, cx + jle short loc_2DB3 + cmp cx, 20h ; ' ' + jle short loc_2DB9 + +loc_2DB3: ; CODE XREF: sub_2D28+84j + mov cx, [si+0Eh] + mov [si+0Ch], cx + +loc_2DB9: ; CODE XREF: sub_2D28+89j + mov bx, cx + shl bx, 2 + mov ax, [bx+892h] + mov [si+10h], ax + les bx, [si] + cmp byte ptr es:[bx], 2Eh ; '.' + jnz short loc_2DDA + mov bx, ax + shl ax, 1 + adc ax, bx + sar ax, 1 + mov [si+10h], ax + inc word ptr [si] + +loc_2DDA: ; CODE XREF: sub_2D28+A3j + mov ax, 1 + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_2DE1: ; CODE XREF: sub_2D28+7j sub_2D28+57j ... + les bx, [si] + cmp byte ptr es:[bx], 0 + jz short loc_2DEC + jmp loc_2D32 +; --------------------------------------------------------------------------- + +loc_2DEC: ; CODE XREF: sub_2D28+BFj + xor ax, ax + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_2DF2: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28+40o + call sub_2D00 + cmp cx, 20h ; ' ' + ja short loc_2DE1 + mov [si+0Eh], cx + jmp short loc_2DE1 +; --------------------------------------------------------------------------- + align 2 + +loc_2E00: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28+48o + call sub_2D00 + push cx + nop + push cs + call near ptr sub_3360 + jmp short loc_2DE1 +; --------------------------------------------------------------------------- + align 2 + +loc_2E0C: ; CODE XREF: sub_2D28+1Aj + les bx, [si] + mov al, es:[bx] + sub al, 31h ; '1' + cmp al, 7 + ja short loc_2DE1 + sub ah, ah + inc ax + mov [si+0Ah], ax + inc word ptr [si] + jmp short loc_2DE1 +; --------------------------------------------------------------------------- + align 2 + +loc_2E22: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28:off_2D58o + dec word ptr [si+0Ah] + cmp word ptr [si+0Ah], 0 + jnz short loc_2DE1 + inc word ptr [si+0Ah] + jmp short loc_2DE1 +; --------------------------------------------------------------------------- + +loc_2E30: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28+32o + inc word ptr [si+0Ah] + cmp word ptr [si+0Ah], 9 + jnz short loc_2DE1 + dec word ptr [si+0Ah] + jmp short loc_2DE1 +; --------------------------------------------------------------------------- + +loc_2E3E: ; CODE XREF: sub_2D28+2Bj + ; DATA XREF: sub_2D28+42o + les bx, [si] + mov word ptr [si+14h], 0 + cmp byte ptr es:[bx], 31h ; '1' + jnz short loc_2DE1 + mov word ptr [si+14h], 1 + jmp short loc_2DE1 +sub_2D28 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_2E52 proc far ; CODE XREF: sub_DBBE+54P + +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_B92 + mov si, ax + cmp si, 0FFFEh + jnz short loc_2E78 + mov ax, 0FFFEh + jmp short loc_2E72 +; --------------------------------------------------------------------------- + +loc_2E6F: ; CODE XREF: sub_2E52+46j + mov ax, 0FFF8h + +loc_2E72: ; CODE XREF: sub_2E52+1Bj + pop si + pop di + leave + retf 4 +; --------------------------------------------------------------------------- + +loc_2E78: ; CODE XREF: sub_2E52+16j + push ax + push 0 + push 0 + push 2 + nop + push cs + call near ptr sub_7DA + mov di, ax + push si + push 0 + push 0 + push 0 + nop + push cs + call near ptr sub_7DA + push di + nop + push cs + call near ptr sub_209E + jb short loc_2E6F + mov [bp+var_2], ax + push si + push ax + push cx + push di + nop + push cs + call near ptr sub_7C0 + mov es, [bp+var_2] + mov bx, ax + mov byte ptr es:[bx], 0FFh + push si + nop + push cs + call near ptr sub_B7C + cld + mov ax, word_F952 + mov [bp+var_4], ax + mov bx, ax + shl bx, 3 + mov word ptr [bx+37AAh], 0 + mov ax, [bx+37B0h] + mov [bx+37ACh], ax + xor di, di + xor si, si + +loc_2ED3: ; CODE XREF: sub_2E52+122j + mov ds, [bp+var_2] + +loc_2ED6: ; CODE XREF: sub_2E52+9Cj + lodsb + cmp al, 3Bh ; ';' + jnz short loc_2EE4 + +loc_2EDB: ; CODE XREF: sub_2E52+90j + lodsb + cmp al, 0FFh + jz short loc_2EF0 + cmp al, 0Ah + jnz short loc_2EDB + +loc_2EE4: ; CODE XREF: sub_2E52+87j + cmp al, 30h ; '0' + jb short loc_2EEC + cmp al, 39h ; '9' + jbe short loc_2EF0 + +loc_2EEC: ; CODE XREF: sub_2E52+94j + cmp al, 0FFh + jnz short loc_2ED6 + +loc_2EF0: ; CODE XREF: sub_2E52+8Cj sub_2E52+98j + xor cx, cx + cmp al, 30h ; '0' + jb short loc_2F16 + +loc_2EF6: ; CODE XREF: sub_2E52+C2j + cmp al, 39h ; '9' + ja short loc_2F16 + cmp al, 0FFh + jz short loc_2F16 + 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_2EF6 + +loc_2F16: ; CODE XREF: sub_2E52+A2j sub_2E52+A6j ... + push seg dseg + pop ds + cmp al, 0FFh + jz short loc_2F77 + mov bx, word_F952 + shl bx, 3 + mov dx, bx + les bx, [bx+37AAh] + mov es:[bx], cx + mov bx, dx + add word ptr [bx+37AAh], 2 + or cx, cx + jz short loc_2F40 + inc di + cmp di, 100h + jnz short loc_2F70 + +loc_2F40: ; CODE XREF: sub_2E52+E5j + mov bx, word_F952 + shl bx, 3 + les bx, [bx+37AAh] + xor di, di + mov es:[bx], di + inc word_F952 + cmp word_F952, 10h + jz short loc_2F77 + mov bx, word_F952 + shl bx, 3 + mov word ptr [bx+37AAh], 0 + mov cx, [bx+37B0h] + mov [bx+37ACh], cx + +loc_2F70: ; CODE XREF: sub_2E52+ECj + cmp al, 0FFh + jz short loc_2F77 + jmp loc_2ED3 +; --------------------------------------------------------------------------- + +loc_2F77: ; CODE XREF: sub_2E52+CAj + ; sub_2E52+107j ... + mov ax, word_F952 + cmp [bp+var_4], ax + mov ax, 0FFF5h + jz short loc_2F84 + xor ax, ax + +loc_2F84: ; CODE XREF: sub_2E52+12Ej + push [bp+var_2] + nop + push cs + call near ptr sub_2088 + pop si + pop di + leave + retf 4 +sub_2E52 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2F92 proc far ; CODE XREF: sub_338E+150p + test word_F52C, 10h + jnz short loc_2FCC + in al, 2 ; DMA controller, 8237A-5. + ; channel 1 current address + mov ah, 0 + mov word_F8F4, ax + cli + push 8 + push seg seg000 + push offset loc_303E + nop + push cs + call near ptr sub_7F6 + mov word_12746, dx + mov word_12744, ax + mov al, 36h ; '6' + out 77h, al + mov ax, word_F8F6 + 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_F8F4 + and al, 0FEh + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + sti + retf +; --------------------------------------------------------------------------- + +loc_2FCC: ; CODE XREF: sub_2F92+6j + mov ax, 303Eh + mov bx, 0 + call loc_454 + retf +sub_2F92 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_2FD6 proc far ; CODE XREF: sub_3532+14p + cli + test word_F52C, 10h + jnz short loc_2FF5 + push 8 + push word_12746 + push word_12744 + nop + push cs + call near ptr sub_7F6 + mov al, byte ptr word_F8F4 + out 2, al ; DMA controller, 8237A-5. + ; channel 1 base address + ; (also sets current address) + sti + retf +; --------------------------------------------------------------------------- + +loc_2FF5: ; CODE XREF: sub_2FD6+7j + mov ax, 0 + mov bx, 0 + call loc_454 + retf +sub_2FD6 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_3000 proc far ; CODE XREF: sub_3156+F5p + mov bx, sp + mov dx, ss:[bx+4] + mov bx, word_F90C + dec bx + shl bx, 1 + mov ax, [bx+92Eh] + 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_3000 endp + +; --------------------------------------------------------------------------- + +loc_303E: ; DATA XREF: sub_2F92+15o + push ax + push ds + mov ax, seg dseg + mov ds, ax + test word_F52C, 10h + jz short loc_3066 + mov ax, word_F842 + add ax, 4 + cmp ax, word_F8F6 + mov word_F842, ax + jbe short loc_30AC + mov ax, word_F8F6 + inc ax + sub word_F842, ax + jmp short loc_3070 +; --------------------------------------------------------------------------- + +loc_3066: ; CODE XREF: seg000:304Bj + cld + mov ax, word_F8F6 + out 71h, al ; CMOS Memory: + ; used by real-time clock + mov al, ah + out 71h, al ; CMOS Memory: + ; used by real-time clock + +loc_3070: ; CODE XREF: seg000:3064j + push dx + push bx + push cx + push es + inc word_F904 + cmp word_F904, 14h + jnz short loc_30B0 + xor ax, ax + mov word_F904, ax + cmp word_F8FA, 1 + jnz short loc_30DA + push ax + push 3 + push ax + nop + push cs + call near ptr sub_3156 + dec ax + jnz short loc_30DA + cmp word_F902, 0 + jnz short loc_30DA + mov word_F8FA, 0 + nop + push cs + call near ptr sub_2CD0 + jmp short loc_30DA +; --------------------------------------------------------------------------- + align 2 + +loc_30AC: ; CODE XREF: seg000:305Aj seg000:30E4j + pop ds + pop ax + retn +; --------------------------------------------------------------------------- + align 2 + +loc_30B0: ; CODE XREF: seg000:307Dj + test word_F904, 3 + jnz short loc_30DA + cmp word_F950, 1 + jnz short loc_30DA + nop + push cs + call near ptr sub_32CE + dec ax + jnz short loc_30DA + mov word_F950, 0 + cmp word_F8FA, 0 + jnz short loc_30DA + nop + push cs + call near ptr sub_2CD0 + nop + +loc_30DA: ; CODE XREF: seg000:3089j seg000:3095j ... + pop es + pop cx + pop bx + pop dx + test word_F52C, 10h + jnz short loc_30AC + mov al, 20h ; ' ' + out 0, al + pop ds + pop ax + iret +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_30EE proc near ; CODE XREF: sub_3156:loc_31FCp + push si + mov si, bx + cmp word ptr [si+3Ah], 1 + jz short loc_3153 + mov bx, [si+8] + shl bx, 1 + mov bx, [bx+7E2h] + cmp word ptr [si+0Ah], 1 + jnz short loc_310A + shl bx, 1 + jmp short loc_3111 +; --------------------------------------------------------------------------- + +loc_310A: ; CODE XREF: sub_30EE+16j + mov cx, [si+0Ah] + dec cx + dec cx + shr bx, cl + +loc_3111: ; CODE XREF: sub_30EE+1Aj + test word_F52C, 10h + jz short loc_312A + 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_3142 +; --------------------------------------------------------------------------- + align 2 + +loc_312A: ; CODE XREF: sub_30EE+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_314B + mov ax, bx + mov bx, 3E6h + +loc_3142: ; CODE XREF: sub_30EE+39j + mul bx + mov bx, 4CDh + div bx + mov bx, ax + +loc_314B: ; CODE XREF: sub_30EE+4Dj + mov al, bl + mov dx, cx + out dx, al + mov al, bh + out dx, al + +loc_3153: ; CODE XREF: sub_30EE+7j + pop si + retn +sub_30EE endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3156 proc far ; CODE XREF: seg000:3091p + +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_F8FE + imul bx, ax, 16h + cmp word ptr [bx+3778h], 1 + jnz short loc_317C + cmp word ptr [bx+377Ch], 1 + jz short loc_317C + cmp word ptr [bx+3774h], 20h ; ' ' + jz short loc_317C + mov si, 1 + jmp short loc_317E +; --------------------------------------------------------------------------- + +loc_317C: ; CODE XREF: sub_3156+11j sub_3156+18j ... + xor si, si + +loc_317E: ; CODE XREF: sub_3156+24j + mov cx, [bp+arg_4] + sub ax, cx + jz short loc_318E + dec ax + jz short loc_31BE + dec ax + jz short loc_31EA + jmp short loc_3200 +; --------------------------------------------------------------------------- + align 2 + +loc_318E: ; CODE XREF: sub_3156+2Dj + imul bx, cx, 16h + cmp byte ptr [bx+3770h], 48h ; 'H' + jz short loc_319C + or si, si + jz short loc_31B8 + +loc_319C: ; CODE XREF: sub_3156+40j + cmp byte ptr [bx+3786h], 48h ; 'H' + jz short loc_31AA + cmp word ptr [bx+378Eh], 1 + jg short loc_31E4 + +loc_31AA: ; CODE XREF: sub_3156+4Bj + cmp byte ptr [bx+379Ch], 48h ; 'H' + jz short loc_31B8 + cmp word ptr [bx+37A4h], 1 + jg short loc_31F8 + +loc_31B8: ; CODE XREF: sub_3156+44j sub_3156+59j + add bx, 3768h + jmp short loc_31FC +; --------------------------------------------------------------------------- + +loc_31BE: ; CODE XREF: sub_3156+30j + imul bx, cx, 16h + cmp byte ptr [bx+3786h], 48h ; 'H' + jz short loc_31CC + or si, si + jz short loc_31E4 + +loc_31CC: ; CODE XREF: sub_3156+70j + cmp byte ptr [bx+3770h], 48h ; 'H' + jnz short loc_3200 + cmp byte ptr [bx+379Ch], 48h ; 'H' + jz short loc_3200 + cmp word ptr [bx+37A4h], 1 + jle short loc_3200 + jmp short loc_31F8 +; --------------------------------------------------------------------------- + align 2 + +loc_31E4: ; CODE XREF: sub_3156+52j sub_3156+74j + add bx, 377Eh + jmp short loc_31FC +; --------------------------------------------------------------------------- + +loc_31EA: ; CODE XREF: sub_3156+33j + imul bx, cx, 16h + cmp byte ptr [bx+379Ch], 48h ; 'H' + jz short loc_3200 + or si, si + jnz short loc_3200 + +loc_31F8: ; CODE XREF: sub_3156+60j sub_3156+8Bj + add bx, 3794h + +loc_31FC: ; CODE XREF: sub_3156+66j sub_3156+92j + call sub_30EE + nop + +loc_3200: ; CODE XREF: sub_3156+35j sub_3156+7Bj ... + imul bx, word_F8FE, 16h + dec word ptr [bx+3778h] + jnz short loc_3224 + add bx, 3768h + push bx + nop + push cs + call near ptr sub_2D28 + or ax, ax + jnz short loc_3224 + mov cl, byte ptr word_F8FE + inc ax + shl ax, cl + or word_F900, ax + +loc_3224: ; CODE XREF: sub_3156+B3j sub_3156+C1j + mov ax, [bp+arg_2] + inc word_F8FE + cmp word_F8FE, ax + jnz short loc_327C + mov ax, [bp+arg_0] + mov word_F8FE, ax + cmp word_F900, 7 + jnz short loc_327C + xor di, di + mov word_F900, di + mov si, 3768h + nop + +loc_3248: ; CODE XREF: sub_3156+11Aj + push si + nop + push cs + call near ptr sub_3000 + mov cx, di + mov ax, 1 + shl ax, cl + and ax, word_F92E + cmp ax, 1 + sbb ax, ax + inc ax + mov [si+12h], ax + push si + nop + push cs + call near ptr sub_2D28 + inc di + add si, 16h + cmp si, 37AAh + jb short loc_3248 + mov ax, 1 + pop si + pop di + leave + retf 6 +; --------------------------------------------------------------------------- + align 2 + +loc_327C: ; CODE XREF: sub_3156+D9j sub_3156+E6j + xor ax, ax + pop si + pop di + leave + retf 6 +sub_3156 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3284 proc far ; CODE XREF: sub_D63C+28P + mov bx, sp + push si + mov si, ss:[bx+4] + cmp si, 1 + jl short loc_3296 + cmp si, word_F952 + jle short loc_329D + +loc_3296: ; CODE XREF: sub_3284+Aj + mov ax, 0FFF3h + pop si + retf 2 +; --------------------------------------------------------------------------- + +loc_329D: ; CODE XREF: sub_3284+10j + cmp word_F958, 1 + jnz short loc_32C7 + nop + push cs + call near ptr sub_2CD0 + mov word_F954, si + mov bx, si + shl bx, 3 + mov ax, 37A2h + add bx, ax + mov ax, [bx+6] + mov [bx+2], ax + mov word ptr [bx], 0 + mov word_F950, 1 + +loc_32C7: ; CODE XREF: sub_3284+1Ej + xor ax, ax + pop si + retf 2 +sub_3284 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_32CE proc far ; CODE XREF: seg000:30C1p + mov ax, word_F954 + dec ax + shl ax, 3 + mov bx, ax + les bx, [bx+37AAh] + assume es:nothing + mov cx, es:[bx] + mov bx, ax + jcxz short loc_3334 + add word ptr [bx+37AAh], 2 + test word_F52C, 10h + jz short loc_3300 + 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_331F +; --------------------------------------------------------------------------- + +loc_3300: ; CODE XREF: sub_32CE+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_331F + mov dx, 25h ; '%' + mov ax, 8000h + +loc_331F: ; CODE XREF: sub_32CE+30j sub_32CE+49j + cmp cx, dx + ja short loc_3328 + mov ax, 0FFFFh + jmp short loc_332A +; --------------------------------------------------------------------------- + +loc_3328: ; CODE XREF: sub_32CE+53j + div cx + +loc_332A: ; CODE XREF: sub_32CE+58j + mov dx, bx + out dx, al + mov al, ah + out dx, al + xor ax, ax + retf +; --------------------------------------------------------------------------- + align 2 + +loc_3334: ; CODE XREF: sub_32CE+12j + mov ax, [bx+37B0h] + mov [bx+37ACh], ax + mov word ptr [bx+37AAh], 0 + mov ax, 1 + retf +sub_32CE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3346 proc far ; CODE XREF: sub_3532+Ap + cmp word_F8FA, 1 + jnz short loc_335C + mov word_F8FA, 0 + nop + push cs + call near ptr sub_2CD0 + xor ax, ax + retf +; --------------------------------------------------------------------------- + align 2 + +loc_335C: ; CODE XREF: sub_3346+5j + mov ax, 0FFE1h + retf +sub_3346 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3360 proc far ; CODE XREF: sub_2D28+DEp + ; sub_338E+12Dp + mov bx, sp + mov cx, ss:[bx+4] + cmp cx, 1Eh + jl short loc_3388 + cmp cx, 0F0h ; 'ð' + jg short loc_3388 + cli + mov word_F8F8, cx + mov ax, word_F95C + mov dx, word_F95E + div cx + mov word_F8F6, ax + sti + xor ax, ax + retf 2 +; --------------------------------------------------------------------------- + +loc_3388: ; CODE XREF: sub_3360+9j sub_3360+Fj + mov ax, 0FFF3h + retf 2 +sub_3360 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_338E proc far ; CODE XREF: sub_DBBE+4BP sub_DF12+73P + +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_11AC + cmp word_F95A, 0 + jz short loc_33AA + xor ax, ax + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + +loc_33AA: ; CODE XREF: sub_338E+12j + mov dx, [bp+arg_0] + mov [bp+var_2], dx + or dx, dx + jg short loc_33B9 + mov [bp+var_2], 1000h + +loc_33B9: ; CODE XREF: sub_338E+24j + mov ax, [bp+var_2] + mov word_F906, ax + mov di, 3768h + +loc_33C2: ; CODE XREF: sub_338E+5Dj + mov word_F80C, 8 + push [bp+var_2] + nop + push cs + call near ptr sub_2322 + mov [di+6], ax + mov word ptr [di+4], 0 + jnb short loc_33E4 + mov ax, 0FFF8h + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + align 2 + +loc_33E4: ; CODE XREF: sub_338E+4Aj + add di, 16h + cmp di, 37AAh + jnz short loc_33C2 + mov di, 37AAh + +loc_33F0: ; CODE XREF: sub_338E+97j + mov word_F80C, 9 + push 201h + nop + push cs + call near ptr sub_2322 + mov [di+6], ax + mov word ptr [di+4], 0 + jnb short loc_341E + push word ptr [di+6] + mov word ptr [di+6], 0 + nop + push cs + call near ptr sub_2426 + mov ax, 0FFF8h + pop di + pop si + leave + retf 2 +; --------------------------------------------------------------------------- + +loc_341E: ; CODE XREF: sub_338E+78j + add di, 8 + cmp di, 382Ah + jnz short loc_33F0 + mov word_F8FA, 0 + mov word_F90A, 0 + mov word_F90C, 0 + mov word_F8FC, 3 + mov word_F8FE, 0 + mov word_F900, 0 + mov word_F902, 1 + mov word_F904, 0 + mov word_F908, 0 + cld + mov cx, 10h + mov di, 950h + push ds + pop es + assume es:dseg + mov ax, 78h ; 'x' + rep stosw + mov word_F950, 0 + mov word_F952, 0 + mov word_F954, 0 + mov word_F956, 1 + mov word_F958, 1 + test word_F52C, 10h + jz short loc_3496 + mov ax, 10h + jmp short loc_34A8 +; --------------------------------------------------------------------------- + +loc_3496: ; CODE XREF: sub_338E+101j + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov ax, 7CDh + jnz short loc_34A8 + mov ax, 99Ah + +loc_34A8: ; CODE XREF: sub_338E+106j + ; sub_338E+115j + and ax, 0FFFEh + mov dx, 78h ; 'x' + mul dx + mov word_F95E, dx + mov word_F95C, ax + push 78h ; 'x' + nop + push cs + call near ptr sub_3360 + mov bx, 376Ch + xor dx, dx + xor ax, ax + +loc_34C5: ; CODE XREF: sub_338E+14Cj + les di, [bx] + assume es:nothing + mov cx, word_F906 + shr cx, 1 + rep stosw + adc cx, cx + rep stosb + add bx, 16h + inc dx + cmp dx, 3 + jl short loc_34C5 + nop + push cs + call near ptr sub_2F92 + test word_F52C, 10h + jz short loc_34FC + 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_3523 +; --------------------------------------------------------------------------- + +loc_34FC: ; CODE XREF: sub_338E+159j + xor ax, ax + mov es, ax + assume es:seg000 + test es:byte_501, 80h + mov ax, 3E6h + jnz short loc_350E + mov ax, 4CDh + +loc_350E: ; CODE XREF: sub_338E+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_3523: ; CODE XREF: sub_338E+16Cj + mov word_F95A, 1 + xor ax, ax + pop di + pop si + leave + retf 2 +sub_338E endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_3532 proc far ; CODE XREF: sub_D7EC+41P sub_DBBE+43P + push si + cmp word_F95A, 0 + jz short loc_354F + nop + push cs + call near ptr sub_3346 + nop + push cs + call near ptr sub_3590 + nop + push cs + call near ptr sub_2FD6 + mov word_F95A, 0 + +loc_354F: ; CODE XREF: sub_3532+6j + mov si, 3768h + +loc_3552: ; CODE XREF: sub_3532+3Aj + mov ax, [si+6] + cmp ax, 0 + jz short loc_3565 + push ax + nop + push cs + call near ptr sub_2426 + mov word ptr [si+6], 0 + +loc_3565: ; CODE XREF: sub_3532+26j + add si, 16h + cmp si, 37AAh + jnz short loc_3552 + mov si, 37AAh + +loc_3571: ; CODE XREF: sub_3532+59j + mov ax, [si+6] + cmp ax, 0 + jz short loc_3584 + push ax + nop + push cs + call near ptr sub_2426 + mov word ptr [si+6], 0 + +loc_3584: ; CODE XREF: sub_3532+45j + add si, 8 + cmp si, 382Ah + jnz short loc_3571 + pop si + retf +sub_3532 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + + +sub_3590 proc far ; CODE XREF: sub_3532+Fp + cmp word_F950, 1 + jnz short loc_35A6 + mov word_F950, 0 + nop + push cs + call near ptr sub_2CD0 + xor ax, ax + retf +; --------------------------------------------------------------------------- + align 2 + +loc_35A6: ; CODE XREF: sub_3590+5j + mov ax, 0FFE1h + retf +sub_3590 endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_35B0 + +loc_35AA: ; CODE XREF: sub_35B0+Ej sub_35B0+1Dj ... + pop di + pop si + pop bp + retf 0Ah +; END OF FUNCTION CHUNK FOR sub_35B0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_35B0 proc far ; CODE XREF: sub_DD10+33P sub_DE80+EP + +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 35AA SIZE 00000006 BYTES + + push bp + mov bp, sp + push si + push di + mov ax, [bp+arg_6] + mov cx, [bp+arg_0] + sar cx, 3 + jle short loc_35AA + mov si, [bp+arg_2] + mov di, [bp+arg_8] + sar di, 3 + jns short loc_35D6 + add cx, di + jle short loc_35AA + shl di, 2 + add si, di + xor di, di + +loc_35D6: ; CODE XREF: sub_35B0+19j + cmp di, 50h ; 'P' + jge short loc_35AA + add cx, di + cmp cx, 50h ; 'P' + jl short loc_35E5 + mov cx, 50h ; 'P' + +loc_35E5: ; CODE XREF: sub_35B0+30j + sub cx, di + imul ax, 50h + add di, ax + push ds + mov es, word_F4CC + assume es:nothing + mov ds, [bp+arg_4] + mov bp, cx + cld + nop + +loc_35F8: ; CODE XREF: sub_35B0+BBj + mov cl, 2 + mov bl, [si] + mov bh, 0 + shl bx, cl + mov ax, cs:[bx+1C88h] + mov dx, cs:[bx+1C8Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1C88h] + or dx, cs:[bx+1C8Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1C88h] + or dx, cs:[bx+1C8Ah] + inc si + shl ax, cl + shl dx, cl + mov bl, [si] + mov bh, 0 + shl bx, cl + or ax, cs:[bx+1C88h] + or dx, cs:[bx+1C8Ah] + 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_35F8 + pop ds + pop di + pop si + pop bp + retf 0Ah +sub_35B0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3674 proc far ; CODE XREF: sub_CB00+8BP sub_CB00+A2P + +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_F518 + 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_36BC: ; CODE XREF: sub_3674+98j + lodsb + or al, al + jz short loc_370E + 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_36DE: ; CODE XREF: sub_3674+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_36DE + sub di, 500h + xor ch, ch + add cx, bp + jmp short loc_36BC +; --------------------------------------------------------------------------- + +loc_370E: ; CODE XREF: sub_3674+4Bj + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ch +sub_3674 endp + +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_371E proc far ; CODE XREF: sub_CAB0+1FP sub_CAB0+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_F518 + 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_377E: ; CODE XREF: sub_371E+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_377E + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop di + pop bp + retf 8 +sub_371E endp + +; --------------------------------------------------------------------------- + align 2 +dword_37B2 dd 0 ; DATA XREF: sub_37B8+6r sub_37B8+57w ... +byte_37B6 db 0 ; DATA XREF: seg000:3890r seg000:38A7w ... + db 90h ; + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_37B8 proc far ; CODE XREF: sub_C490+ACP + ; sub_C490+309P ... + +var_10 = word ptr -10h +var_A = word ptr -0Ah +arg_0 = dword ptr 6 + + enter 10h, 0 + push si + push di + mov ax, word ptr cs:dword_37B2 + or ax, word ptr cs:dword_37B2+2 + jnz short loc_3831 + push large [bp+arg_0] + push cs + call near ptr sub_A58 + lea ax, [bp+var_10] + push ss + push ax + push 10h + push cs + call near ptr sub_9A4 + mov di, [bp+var_10] + mov si, [bp+var_A] + push di + push cs + call near ptr sub_2322 + mov word_12EFC, ax + push ax + push 0 + push di + push cs + call near ptr sub_9A4 + push cs + call near ptr sub_938 + mov cx, di + mov ax, word_12EFC + mov es, ax + mov ax, si + xor bx, bx + +loc_3801: ; CODE XREF: sub_37B8+50j + xor es:[bx], al + sub al, es:[bx] + inc bx + loop loc_3801 + 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_37B2, bx + mov word ptr cs:dword_37B2+2, es + mov word_12EF8, 0 + mov word_12EFA, 0FFFFh + push ds + push cs + pop ds + assume ds:seg000 + mov dx, 3890h + 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_3831: ; CODE XREF: sub_37B8+Fj + 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, 3E98h + push ds + push es + pop ds + pop es + shr cx, 1 + rep movsw + adc cx, cx + rep movsb + pop ds + pop di + pop si + leave + retf 4 +sub_37B8 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_3858 proc far ; CODE XREF: sub_C490+A3P + ; sub_C490:loc_C790P ... + mov ax, word ptr cs:dword_37B2 + or ax, word ptr cs:dword_37B2+2 + jz short locret_388F + push word_12EFC + push cs + call near ptr sub_2426 + push ds + lds dx, cs:dword_37B2 + 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_37B2, ax + mov word ptr cs:dword_37B2+2, ax + cmp word_12EF8, ax + jz short locret_388F + push word_12EF8 + push cs + call near ptr sub_1AFA + +locret_388F: ; CODE XREF: sub_3858+9j sub_3858+2Dj + retf +sub_3858 endp + +; --------------------------------------------------------------------------- + cmp cs:byte_37B6, 0 + jz short loc_389D + jmp cs:dword_37B2 +; --------------------------------------------------------------------------- + +loc_389D: ; CODE XREF: seg000:3896j + pusha + push ds + push es + mov bp, sp + mov di, seg dseg + mov ds, di + inc cs:byte_37B6 + push word ptr [bp+18h] + popf + mov cs:byte_38F4, ah + mov si, 38C4h + +loc_38B8: ; CODE XREF: seg000:38BEj + add si, 4 + cmp ah, cs:[si] + jnz short loc_38B8 + mov di, word_12EFA + jmp word ptr cs:[si+2] +; --------------------------------------------------------------------------- + db 3Dh, 0, 0F8h, 38h, 3Eh, 0, 2Ah, 39h, 3Fh, 0, 47h, 39h + db 42h, 0, 5Bh, 39h, 46h, 0, 0BCh, 39h, 40h, 0, 0C0h, 39h + db 45h, 0, 0C0h, 39h, 4Ch, 0, 9Eh, 39h, 57h, 0, 0C0h, 39h + db 5Ch, 0, 0C0h, 39h, 44h, 0, 0AAh, 39h +byte_38F4 db 0 ; DATA XREF: seg000:38B0w + align 2 + les di, [bx+di] + test al, 0Fh + jnz loc_39C4 + or di, di + jns loc_39C4 + push ds + push offset unk_12E78 + push word ptr [bp+2] + push dx + push cs + call near ptr sub_39F0 + or ax, ax + jz loc_39C4 + mov word_12EF8, ax + mov es, ax + mov es, word ptr es:0 + mov ax, es:0 + mov word_12EFA, ax + jmp loc_39DF +; --------------------------------------------------------------------------- + cmp bx, di + jnz loc_39C4 + push word_12EF8 + push cs + call near ptr sub_1AFA + mov word_12EF8, 0 + mov word_12EFA, 0FFFFh + jmp loc_39DF +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_39C4 + push word ptr [bp+2] + push dx + push cx + push word_12EF8 + push cs + call near ptr sub_1BC4 + jmp loc_39DF +; --------------------------------------------------------------------------- + cmp bx, di + jnz short loc_39C4 + or cx, cx + jl short loc_39D6 + cmp al, 1 + jz short loc_398F + jl short loc_3983 + mov es, word_12EF8 + mov dx, es:16h + mov cx, es:18h + sub dx, es:12h + sbb cx, es:14h + jmp short loc_398F +; --------------------------------------------------------------------------- + +loc_3983: ; CODE XREF: seg000:3967j + push cx + push dx + push word_12EF8 + push cs + call near ptr sub_1BF2 + pop dx + pop cx + +loc_398F: ; CODE XREF: seg000:3965j seg000:3981j + push word_12EF8 + push cx + push dx + push cs + call near ptr sub_1C2E + mov [bp+0Eh], dx + jmp short loc_39DF +; --------------------------------------------------------------------------- + db 2Eh, 0C5h, 16h, 0B2h, 37h, 0B8h, 21h, 25h, 0CDh, 21h + db 0EBh, 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h + db 6, 0BAh, 39h, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh + db 74h, 16h, 3Bh, 0DFh, 74h, 12h +; --------------------------------------------------------------------------- + +loc_39C4: ; CODE XREF: seg000:38FAj seg000:3900j ... + dec cs:byte_37B6 + push word ptr [bp+18h] + popf + pop es + pop ds + popa + cli + jmp cs:dword_37B2 +; --------------------------------------------------------------------------- + +loc_39D6: ; CODE XREF: seg000:3961j + or byte ptr [bp+18h], 1 + mov ax, 1 + jmp short loc_39E3 +; --------------------------------------------------------------------------- + +loc_39DF: ; CODE XREF: seg000:3927j seg000:3944j ... + and byte ptr [bp+18h], 0FEh + +loc_39E3: ; CODE XREF: seg000:39DDj + mov [bp+12h], ax + dec cs:byte_37B6 + pop es + pop ds + popa + iret +; --------------------------------------------------------------------------- + align 2 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_39F0 proc far ; CODE XREF: seg000:390Dp + +arg_0 = dword ptr 6 +arg_4 = dword ptr 0Ah + + push bp + mov bp, sp + push si + push di + push 1Fh + push cs + call near ptr sub_2322 + jb loc_3AD8 + mov si, ax + push large [bp+arg_4] + push cs + call near ptr sub_682 + or ax, ax + jz loc_3AD1 + mov es, si + mov es:0, ax + mov ax, word_12EFC + mov fs, ax + xor ax, ax + mov di, ax + +loc_3A1E: ; CODE XREF: sub_39F0+48j + cmp byte ptr fs:[di], 0 + jz loc_3AC6 + lea bx, [di+3] + push large [bp+arg_0] + push fs + push bx + call sub_3AE0 + jnz short loc_3A3A + add di, 20h ; ' ' + jmp short loc_3A1E +; --------------------------------------------------------------------------- + +loc_3A3A: ; CODE XREF: sub_39F0+43j + mov es, si + mov eax, fs:[di+14h] + mov es:0Eh, eax + push word ptr es:0 + push eax + push 0 + push cs + call near ptr sub_748 + mov ax, 1B72h + mov dl, fs:[di+2] + or dl, dl + mov es, si + jz short loc_3A68 + mov es:1Eh, dl + mov ax, 1BB6h + +loc_3A68: ; CODE XREF: sub_39F0+6Ej + mov es:4, ax + mov ax, fs:[di] + cmp ax, 0F388h + jz short loc_3A7E + cmp ax, 9595h + jz short loc_3A88 + mov ax, 5 + jmp short loc_3AC6 +; --------------------------------------------------------------------------- + +loc_3A7E: ; CODE XREF: sub_39F0+82j + mov ax, es:4 + mov es:2, ax + jmp short loc_3A9D +; --------------------------------------------------------------------------- + +loc_3A88: ; CODE XREF: sub_39F0+87j + mov word ptr es:2, 1B24h + mov word ptr es:1Ah, 0 + mov word ptr es:1Ch, 0FFFFh + +loc_3A9D: ; CODE XREF: sub_39F0+96j + movzx ebx, word ptr fs:[di+10h] + movzx edx, word ptr fs:[di+12h] + mov es:6, ebx + mov es:16h, edx + xor eax, eax + mov es:0Ah, eax + mov es:12h, eax + mov ax, si + jmp short loc_3ADA +; --------------------------------------------------------------------------- + +loc_3AC6: ; CODE XREF: sub_39F0+32j sub_39F0+8Cj + mov es, si + push word ptr es:0 + push cs + call near ptr sub_53C + +loc_3AD1: ; CODE XREF: sub_39F0+1Bj + push si + push cs + call near ptr sub_2426 + jmp short $+2 + +loc_3AD8: ; CODE XREF: sub_39F0+Bj + xor ax, ax + +loc_3ADA: ; CODE XREF: sub_39F0+D4j + pop di + pop si + pop bp + retf 8 +sub_39F0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_3AE0 proc near ; CODE XREF: sub_39F0+40p + +arg_0 = dword ptr 4 +arg_4 = dword ptr 8 + + push bp + mov bp, sp + push si + push ds + cld + les bx, [bp+arg_4] + lds si, [bp+arg_0] + +loc_3AEC: ; CODE XREF: sub_3AE0+2Aj + mov ah, es:[bx] + inc bx + lodsb + sub al, 61h ; 'a' + cmp al, 19h + ja short loc_3AF9 + sub al, 20h ; ' ' + +loc_3AF9: ; CODE XREF: sub_3AE0+15j + sub ah, 61h ; 'a' + cmp ah, 19h + ja short loc_3B04 + sub ah, 20h ; ' ' + +loc_3B04: ; CODE XREF: sub_3AE0+1Fj + cmp ah, al + jnz short loc_3B0E + add al, 61h ; 'a' + jnz short loc_3AEC + jmp short loc_3B10 +; --------------------------------------------------------------------------- + +loc_3B0E: ; CODE XREF: sub_3AE0+26j + xor ax, ax + +loc_3B10: ; CODE XREF: sub_3AE0+2Cj + test ax, ax + pop ds + pop si + pop bp + retn 8 +sub_3AE0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: noreturn + +sub_3B18 proc far ; CODE XREF: start+80p start+10Dp ... + push si + push di + push ds + mov ax, 2856h + push ax ; buf + nop + push cs + call near ptr ___ErrorMessage + mov ax, 3 + push ax ; status + nop + push cs + call near ptr __exit +sub_3B18 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_4FF0 + pop cx + nop + push cs + call near ptr sub_3B18 +_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_11856, 20h ; ' ' + jnz short loc_3B95 + mov ax, 1 + jmp short loc_3BB1 +; --------------------------------------------------------------------------- + +loc_3B95: ; CODE XREF: _atexit+Aj + mov bx, word_11856 + mov cl, 2 + shl bx, cl + mov dx, word ptr [bp+func+2] + mov ax, word ptr [bp+func] + mov [bx+514Ah], dx + mov [bx+5148h], ax + inc word_11856 + xor ax, ax + +loc_3BB1: ; 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:4304p ... + +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_490B + 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_8C3F+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_A142+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_3C33 + mov [bp+var_6], 0 + jmp short loc_3C1E +; --------------------------------------------------------------------------- + +loc_3C05: ; 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_3C1E: ; CODE XREF: __DOSENV+22j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3C33 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3C05 + +loc_3C33: ; 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_3C51 + 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_3C51: ; CODE XREF: __DOSENV+5Bj + cmp [bp+var_6], 8000h + jb short loc_3C5B + jmp loc_3D42 +; --------------------------------------------------------------------------- + +loc_3C5B: ; CODE XREF: __DOSENV+75j + mov ax, [bp+var_6] + add ax, 0Fh + push ax + nop + push cs + call near ptr sub_4A3E + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_3C75 + jmp loc_3D42 +; --------------------------------------------------------------------------- + +loc_3C75: ; 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_3CEB + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3CEB + jmp short loc_3CD4 +; --------------------------------------------------------------------------- + +loc_3CA8: ; 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_3CD4: ; CODE XREF: __DOSENV+C5j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jz short loc_3CF5 + les bx, es:[bx] + cmp byte ptr es:[bx], 0 + jnz short loc_3CA8 + jmp short loc_3CF5 +; --------------------------------------------------------------------------- + +loc_3CEB: ; CODE XREF: __DOSENV+B7j __DOSENV+C3j + les bx, [bp+dest] + mov byte ptr es:[bx], 0 + inc word ptr [bp+dest] + +loc_3CF5: ; 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_3D37 + 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_3D37: ; 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_3D46 +; --------------------------------------------------------------------------- + +loc_3D42: ; CODE XREF: __DOSENV+77j __DOSENV+91j + xor dx, dx + xor ax, ax + +loc_3D46: ; 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_554E+2Dp + +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_3B18+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_11890 + 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_3DA8 proc far ; CODE XREF: sub_3DAD+29P sub_3DAD+43P ... + push si + push di + pop di + pop si + retf +sub_3DA8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_3DAD 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_3DDA + jmp short loc_3DCA +; --------------------------------------------------------------------------- + +loc_3DBA: ; CODE XREF: sub_3DAD+22j + dec word_11856 + mov bx, word_11856 + mov cl, 2 + shl bx, cl + call dword ptr [bx+5148h] + +loc_3DCA: ; CODE XREF: sub_3DAD+Bj + cmp word_11856, 0 + jnz short loc_3DBA + nop + push cs + call __cleanup + call off_11858 + +loc_3DDA: ; CODE XREF: sub_3DAD+9j + nop + push cs + call near ptr __restorezero + nop + push cs + call near ptr __checknull + cmp [bp+arg_2], 0 + jnz short loc_3E01 + cmp [bp+arg_4], 0 + jnz short loc_3DF8 + call off_1185C + call off_11860 + +loc_3DF8: ; CODE XREF: sub_3DAD+41j + push [bp+arg_0] + nop + push cs + call __terminate +; --------------------------------------------------------------------------- + pop cx + +loc_3E01: ; CODE XREF: sub_3DAD+3Bj + pop di + pop si + pop bp + retn 6 +sub_3DAD 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_3DAD + 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_3B18+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_3DAD + 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_3DAD + 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_3DAD + 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_BB91+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:4F88p + +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:4ECDp seg000:4FCAp ... + +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_3EB3 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_LUDIV@ proc far ; CODE XREF: sub_8A8C+66p + pop cx + push cs + push cx + +F_LUDIV@: + mov cx, 1 + jmp short loc_3EB3 +; --------------------------------------------------------------------------- + +N_LMOD@: + pop cx + push cs + push cx + +F_LMOD@: + mov cx, 2 + jmp short loc_3EB3 +; --------------------------------------------------------------------------- + +N_LUMOD@: + pop cx + push cs + push cx + +LUMOD@: + mov cx, 3 + +loc_3EB3: ; CODE XREF: seg000:3E9Bj 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_3ED2 + or dx, dx + jz short loc_3F37 + or bx, bx + jz short loc_3F37 + +loc_3ED2: ; CODE XREF: N_LUDIV@+2Bj + test di, 1 + jnz short loc_3EF4 + or dx, dx + jns short loc_3EE6 + neg dx + neg ax + sbb dx, 0 + or di, 0Ch + +loc_3EE6: ; CODE XREF: N_LUDIV@+3Dj + or cx, cx + jns short loc_3EF4 + neg cx + neg bx + sbb cx, 0 + xor di, 4 + +loc_3EF4: ; CODE XREF: N_LUDIV@+39j N_LUDIV@+4Bj + mov bp, cx + mov cx, 20h ; ' ' + push di + xor di, di + xor si, si + +loc_3EFE: ; CODE XREF: N_LUDIV@:loc_3F15j + shl ax, 1 + rcl dx, 1 + rcl si, 1 + rcl di, 1 + cmp di, bp + jb short loc_3F15 + ja short loc_3F10 + cmp si, bx + jb short loc_3F15 + +loc_3F10: ; CODE XREF: N_LUDIV@+6Dj + sub si, bx + sbb di, bp + inc ax + +loc_3F15: ; CODE XREF: N_LUDIV@+6Bj N_LUDIV@+71j + loop loc_3EFE + pop bx + test bx, 2 + jz short loc_3F24 + mov ax, si + mov dx, di + shr bx, 1 + +loc_3F24: ; CODE XREF: N_LUDIV@+7Fj + test bx, 4 + jz short loc_3F31 + neg dx + neg ax + sbb dx, 0 + +loc_3F31: ; CODE XREF: N_LUDIV@+8Bj N_LUDIV@+A5j + pop di + pop si + pop bp + retf 8 +; --------------------------------------------------------------------------- + +loc_3F37: ; CODE XREF: N_LUDIV@+2Fj N_LUDIV@+33j + div bx + test di, 2 + jz short loc_3F40 + xchg ax, dx + +loc_3F40: ; CODE XREF: N_LUDIV@+A0j + xor dx, dx + jmp short loc_3F31 +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_3F5C + mov bx, ax + shl ax, cl + shl dx, cl + neg cl + add cl, 10h + shr bx, cl + or dx, bx + retf +; --------------------------------------------------------------------------- + +loc_3F5C: ; CODE XREF: N_LXLSH@+6j + sub cl, 10h + xchg ax, dx + xor ax, ax + shl dx, cl + retf +N_LXLSH@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +N_PADD@ proc far ; CODE XREF: __sbrk+38p + pop es + push cs + push es + +F_PADD@: + or cx, cx + jge short loc_3F78 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_3FA7 +; --------------------------------------------------------------------------- + +loc_3F78: ; CODE XREF: N_PADD@+5j N_PADD@+40j + add ax, bx + jnb short loc_3F80 + add dx, 1000h + +loc_3F80: ; CODE XREF: N_PADD@+15j + mov ch, cl + mov cl, 4 + shl ch, cl + add dh, ch + mov ch, al + shr ax, cl + add dx, ax + mov al, ch + and ax, 0Fh + retf +; --------------------------------------------------------------------------- + +N_PSUB@: + pop es + push cs + push es + +F_PSUB@: + or cx, cx + jge short loc_3FA7 + not bx + not cx + add bx, 1 + adc cx, 0 + jmp short loc_3F78 +; --------------------------------------------------------------------------- + +loc_3FA7: ; CODE XREF: N_PADD@+11j N_PADD@+34j + sub ax, bx + jnb short loc_3FAF + sub dx, 1000h + +loc_3FAF: ; CODE XREF: N_PADD@+44j + mov bh, cl + mov cl, 4 + shl bh, cl + xor bl, bl + sub dx, bx + mov ch, al + shr ax, cl + add dx, ax + mov al, ch + and ax, 0Fh + retf +N_PADD@ endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__IOERROR proc near ; CODE XREF: __DOSERROR+8p _lseek+25p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + mov dx, [bp+arg_0] + or dx, dx + jl short loc_3FE8 + cmp dx, 58h ; 'X' + jle short loc_3FD9 + +loc_3FD6: ; CODE XREF: __IOERROR+29j + mov dx, 57h ; 'W' + +loc_3FD9: ; CODE XREF: __IOERROR+Fj + mov word_11A1E, dx + mov bx, dx + mov al, [bx+2A40h] + cbw + mov dx, ax + jmp short loc_3FF6 +; --------------------------------------------------------------------------- + +loc_3FE8: ; CODE XREF: __IOERROR+Aj + neg dx + cmp dx, word_11D00 + jg short loc_3FD6 + mov word_11A1E, 0FFFFh + +loc_3FF6: ; CODE XREF: __IOERROR+21j + mov word_F05E, 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:43B9p seg000:43F2p + +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+2A16h], 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_4050 + jmp short loc_4055 +; --------------------------------------------------------------------------- + +loc_4050: ; CODE XREF: _lseek+20j + push ax + call __IOERROR + cwd + +loc_4055: ; CODE XREF: _lseek+22j + pop di + pop si + pop bp + retf +_lseek endp + +; --------------------------------------------------------------------------- + dd byte_4284 + db 4, 0, 0FAh, 0FFh, 0Ah dup(0), 0DCh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 59h, 40h +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 24h + push si + push di + mov ax, seg seg000 + mov bx, 4067h + 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, 415Fh + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 2A9Ah + 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_11A7E + 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, 4284h + 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_11A82 + mov ax, word_11A80 + mov [bp+var_2], dx + mov [bp+var_4], ax + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + mov seg_11A82, dx + mov word_11A80, 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_412B + mov ax, [bp+arg_0] + jmp short loc_412E +; --------------------------------------------------------------------------- + +loc_412B: ; CODE XREF: operator new(uint)+16j + mov ax, 1 + +loc_412E: ; CODE XREF: operator new(uint)+1Bj + mov [bp+arg_0], ax + jmp short loc_4137 +; --------------------------------------------------------------------------- + +loc_4133: ; CODE XREF: operator new(uint)+43j + call dword ptr word_11A80 + +loc_4137: ; CODE XREF: operator new(uint)+23j + push [bp+arg_0] + nop + push cs + call near ptr sub_4A3E + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_4153 + mov ax, word_11A80 + or ax, seg_11A82 + jnz short loc_4133 + +loc_4153: ; CODE XREF: operator new(uint)+3Aj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + pop di + pop si + mov sp, bp + pop bp + retf +@$bnew$qui endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr @xmsg@$bctr$qmx4xmsg ; xmsg::xmsg(xmsg &) + add sp, 8 + les bx, [bp+0Ah] + mov ax, es:[bx+4] + les bx, [bp+6] + mov es:[bx+4], ax + nop + push cs + call near ptr @__RefDestructorCount$qv ; __RefDestructorCount(void) + mov bx, ax + mov es, dx + add word ptr es:[bx], 1 + adc word ptr es:[bx+2], 0 + mov dx, [bp+8] + mov ax, [bp+6] + pop di + pop si + pop bp + retf +; --------------------------------------------------------------------------- + dd byte_4284 + dw 0 + dd unk_11A7A + dd byte_424A + db 4, 0, 0FCh, 0FFh, 0Ah dup(0), 0DEh, 0FFh, 2 dup(0) + db 5, 3 dup(0), 0A2h, 41h + +; =============== 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:2DCAo + +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, 41BAh + nop + push cs + call near ptr ___InitExceptBlocks + mov [bp+var_16], 6 + xor ax, ax + push ax + push ds + mov ax, 2AA4h + 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, 2A9Ah + 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_4223: ; DATA XREF: dseg:2DE8o + 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, 2A9Ah + push ax + nop + push cs + call near ptr @xmsg@$bdtr$qv ; xmsg::~xmsg(void) + add sp, 6 + pop di + pop si + retf +; --------------------------------------------------------------------------- +byte_424A db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Eh, 0, 32h + ; DATA XREF: seg000:41ACo + db 0Dh dup(0), 1, 0, 1, 0, 9, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_4284 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:4059o seg000:41A2o + db 0Dh dup(0), 2, 0, 2, 0, 0C6h, 42h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 13h, 43h + 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_430D + 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_430B + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_430F +; --------------------------------------------------------------------------- + +loc_430B: ; CODE XREF: seg000:42FAj + jmp short loc_430F +; --------------------------------------------------------------------------- + +loc_430D: ; CODE XREF: seg000:42D1j + xor ax, ax + +loc_430F: ; CODE XREF: seg000:4309j + ; seg000:loc_430Bj + 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, 0A2h, 63h + 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_8A8C+51p sub_8A8C+7Bp ... + push si + xchg ax, si + xchg ax, dx + test ax, ax + jz short loc_4354 + mul bx + +loc_4354: ; CODE XREF: N_LXMUL@+5j + jcxz short loc_435B + xchg ax, cx + mul si + add ax, cx + +loc_435B: ; CODE XREF: N_LXMUL@:loc_4354j + 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_4382 + cmp ax, bx + +locret_4382: ; CODE XREF: N_PCMP@+1Cj + retn +N_PCMP@ endp + +; --------------------------------------------------------------------------- + +__setupio: + push si + push di + mov cx, 5 + jmp short loc_43AC +; --------------------------------------------------------------------------- + +loc_438A: ; CODE XREF: seg000:43B0j + mov bx, cx + add bx, bx + mov word ptr [bx+2A16h], 0 + mov ax, 14h + imul cx + mov dx, ax + mov bx, ax + mov byte ptr [bx+2888h], 0FFh + add ax, 2884h + mov bx, dx + mov [bx+2896h], ax + inc cx + +loc_43AC: ; CODE XREF: seg000:4388j + cmp cx, word_119F4 + jb short loc_438A + mov al, byte_11868 + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_43C7 + and word_11866, 0FDFFh + +loc_43C7: ; CODE XREF: seg000:43BFj + mov ax, 200h + push ax + test byte ptr word_11866+1, 2 + jz short loc_43D7 + mov ax, 1 + jmp short loc_43D9 +; --------------------------------------------------------------------------- + +loc_43D7: ; CODE XREF: seg000:43D0j + xor ax, ax + +loc_43D9: ; CODE XREF: seg000:43D5j + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 2884h + push ax + nop + push cs + call near ptr _setvbuf + add sp, 0Ch + mov al, byte_1187C + cbw + push ax + nop + push cs + call near ptr _isatty + pop cx + or ax, ax + jnz short loc_4400 + and word_1187A, 0FDFFh + +loc_4400: ; CODE XREF: seg000:43F8j + mov ax, 200h + push ax + test byte ptr word_1187A+1, 2 + jz short loc_4410 + mov ax, 2 + jmp short loc_4412 +; --------------------------------------------------------------------------- + +loc_4410: ; CODE XREF: seg000:4409j + xor ax, ax + +loc_4412: ; CODE XREF: seg000:440Ej + push ax + xor ax, ax + push ax + push ax + push ds + mov ax, 2898h + 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_554E+16p + +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_4439 + mov ax, 0FFFFh + jmp short loc_4453 +; --------------------------------------------------------------------------- + +loc_4439: ; CODE XREF: _toupper+Bj + mov al, dl + mov ah, 0 + mov bx, ax + test (__ctype+1)[bx], 8 + jz short loc_444F + mov al, dl + mov ah, 0 + add ax, 0FFE0h + jmp short loc_4453 +; --------------------------------------------------------------------------- + +loc_444F: ; CODE XREF: _toupper+1Dj + mov al, dl + mov ah, 0 + +loc_4453: ; 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:40B8p seg000:4188p ... + 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:4085p + ; 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:45D2p ... + +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:2BC0o + 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_4526 + 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_4526: ; 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), 0C0h, 45h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 32h, 45h + 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_7117+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, 454Ah + 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_45A4 + les bx, ss:16h + mov word ptr es:[bx+12h], ds + +loc_45A4: ; 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_45C8 +; --------------------------------------------------------------------------- + mov ds, [bp+var_22] + nop + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_45C8: ; 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:2BC4o + 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_461A + 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_461A: ; 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_4656 + les bx, ss:16h + mov word ptr es:[bx+14h], ds + +loc_4656: ; 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_4689 + xor ax, ax + jmp short loc_46C3 +; --------------------------------------------------------------------------- + +loc_4689: ; 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_46C3: ; 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_46DD + xor ax, ax + jmp short loc_471B +; --------------------------------------------------------------------------- + +loc_46DD: ; 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_471B: ; 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, 2BB6h + mov word ptr ss:1Ah, 0FEEDh + mov ax, ds + mov word_11BAA, ax + mov word_11BA8, 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_11CBE, 0 + jz short locret_47CA + or bx, 0F000h + push bx + popf + pushf + pop ax + and ax, 0F000h + mov word_11CBE, 2 + jz short locret_47CA + 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_11CBE, 3 + mov esp, edx + jz short locret_47CA + mov word_11CBE, 4 + +locret_47CA: ; CODE XREF: seg000:4786j seg000:4799j ... + retn +; --------------------------------------------------------------------------- +word_47CB dw 0 ; DATA XREF: sub_47D7r sub_47D7+1Dr ... +word_47CD dw 0 ; DATA XREF: sub_47D7+14w sub_47D7+27w ... +word_47CF dw 0 ; DATA XREF: sub_47D7+4Cw sub_48AB+19w ... +word_47D1 dw 0 ; DATA XREF: sub_47D7+32r + ; sub_47D7:loc_482Ar ... +word_47D3 dw 0 ; DATA XREF: sub_4AC5+1r sub_4BA5+1Aw +word_47D5 dw 0 ; DATA XREF: sub_4AC5+7r sub_4BA5+1Fw + +; =============== S U B R O U T I N E ======================================= + + +sub_47D7 proc near ; CODE XREF: sub_490B+18p + cmp dx, cs:word_47CB + jz short loc_4815 + mov ds, dx + mov ds, word_EFE2 + cmp word_EFE2, 0 + jz short loc_47F2 + mov cs:word_47CD, ds + jmp short loc_482A +; --------------------------------------------------------------------------- + +loc_47F2: ; CODE XREF: sub_47D7+12j + mov ax, ds + cmp ax, cs:word_47CB + jz short loc_4810 + mov ax, word_EFE8 + mov cs:word_47CD, ax + push ds + xor ax, ax + push ax + call sub_48AB + mov ds, cs:word_47D1 + jmp short loc_4833 +; --------------------------------------------------------------------------- + +loc_4810: ; CODE XREF: sub_47D7+22j + mov dx, cs:word_47CB + +loc_4815: ; CODE XREF: sub_47D7+5j + mov cs:word_47CB, 0 + mov cs:word_47CD, 0 + mov cs:word_47CF, 0 + +loc_482A: ; CODE XREF: sub_47D7+19j + mov ds, cs:word_47D1 + push dx + xor ax, ax + push ax + +loc_4833: ; CODE XREF: sub_47D7+37j + call __brk + add sp, 4 + retn +sub_47D7 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_483A proc near ; CODE XREF: sub_490B:loc_4928p + mov ds, dx + push ds + mov es, word_EFE2 + mov word_EFE2, 0 + mov word_EFE8, es + cmp dx, cs:word_47CB + jz short loc_4880 + cmp word ptr es:2, 0 + jnz short loc_4880 + mov ax, word_EFE0 + 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_4879 + mov es:8, cx + jmp short loc_4883 +; --------------------------------------------------------------------------- + +loc_4879: ; CODE XREF: sub_483A+36j + mov es:2, cx + jmp short loc_4883 +; --------------------------------------------------------------------------- + +loc_4880: ; CODE XREF: sub_483A+16j sub_483A+1Ej + call sub_48D4 + +loc_4883: ; CODE XREF: sub_483A+3Dj sub_483A+44j + pop es + mov ax, es + add ax, es:0 + mov ds, ax + cmp word_EFE2, 0 + jz short loc_4895 + retn +; --------------------------------------------------------------------------- + +loc_4895: ; CODE XREF: sub_483A+58j + mov ax, word_EFE0 + add es:0, ax + mov ax, es + mov bx, ds + add bx, word_EFE0 + mov es, bx + mov es:2, ax +sub_483A endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_48AB proc near ; CODE XREF: sub_47D7+2Fp sub_4A48+66p + mov bx, ds + cmp bx, off_EFE6 + jz short loc_48CC + mov es, off_EFE6 + mov ds, off_EFE4 + mov off_EFE6, es + mov word ptr es:4, ds + mov cs:word_47CF, ds + mov ds, bx + retn +; --------------------------------------------------------------------------- + +loc_48CC: ; CODE XREF: sub_48AB+6j + mov cs:word_47CF, 0 + retn +sub_48AB endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_48D4 proc near ; CODE XREF: sub_483A:loc_4880p + mov ax, cs:word_47CF + or ax, ax + jz short loc_48FD + mov bx, ss + pushf + cli + mov ss, ax + mov es, word ptr ss:6 + mov word ptr ss:6, ds + mov off_EFE4, ss + mov ss, bx + popf + mov word ptr es:4, ds + mov off_EFE6, es + retn +; --------------------------------------------------------------------------- + +loc_48FD: ; CODE XREF: sub_48D4+6j + mov cs:word_47CF, ds + mov off_EFE4, ds + mov off_EFE6, ds + retn +sub_48D4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_490B proc far ; CODE XREF: _registerbgidriver+Dp + ; sub_4AC5+71p ... + +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov cs:word_47D1, ds + mov dx, [bp+arg_2] + or dx, dx + jz short loc_492B + cmp dx, cs:word_47CD + jnz short loc_4928 + call sub_47D7 + jmp short loc_492B +; --------------------------------------------------------------------------- + +loc_4928: ; CODE XREF: sub_490B+16j + call sub_483A + +loc_492B: ; CODE XREF: sub_490B+Fj sub_490B+1Bj + mov ds, cs:word_47D1 + pop di + pop si + pop bp + retf +sub_490B endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4934 proc near ; CODE XREF: sub_4A48:loc_4A9Dp + push ax + mov ds, cs:word_47D1 + xor ax, ax + push ax + push ax + call __sbrk + add sp, 4 + and ax, 0Fh + jz short loc_495D + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_47D1 + push ax + push dx + call __sbrk + add sp, 4 + +loc_495D: ; CODE XREF: sub_4934+13j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_47D1 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_4994 + mov cs:word_47CB, dx + mov cs:word_47CD, dx + mov ds, dx + mov word_EFE0, bx + mov word_EFE2, dx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4994: ; CODE XREF: sub_4934+46j + xor ax, ax + cwd + retn +sub_4934 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4998 proc near ; CODE XREF: sub_4A48:loc_4A98p + push ax + mov ds, cs:word_47D1 + xor ax, ax + push ax + push ax + call __sbrk + pop bx + pop bx + and ax, 0Fh + jz short loc_49C0 + mov dx, 10h + sub dx, ax + xor ax, ax + mov ds, cs:word_47D1 + push ax + push dx + call __sbrk + add sp, 4 + +loc_49C0: ; CODE XREF: sub_4998+12j + pop ax + push ax + xor bx, bx + mov bl, ah + mov cl, 4 + shr bx, cl + shl ax, cl + mov ds, cs:word_47D1 + push bx + push ax + call __sbrk + add sp, 4 + pop bx + cmp ax, 0FFFFh + jz short loc_4A17 + and ax, 0Fh + jnz short loc_49FC + +loc_49E4: ; CODE XREF: sub_4998+7Dj + mov cx, cs:word_47CD + mov cs:word_47CD, dx + mov ds, dx + mov word_EFE0, bx + mov word_EFE2, cx + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_49FC: ; CODE XREF: sub_4998+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_4A17 + inc dx + jmp short loc_49E4 +; --------------------------------------------------------------------------- + +loc_4A17: ; CODE XREF: sub_4998+45j sub_4998+7Aj + xor ax, ax + cwd + retn +sub_4998 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4A1B proc near ; CODE XREF: sub_4A48:loc_4AA2p + mov bx, dx + sub word_EFE0, ax + add dx, word_EFE0 + mov ds, dx + mov word_EFE0, ax + mov word_EFE2, bx + mov bx, dx + add bx, word_EFE0 + mov ds, bx + mov word_EFE2, dx + mov ax, 4 + retn +sub_4A1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4A3E 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_4A51 +sub_4A3E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4A48 proc far ; CODE XREF: sub_4AC5+Ep sub_4BA5+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_4A51: ; CODE XREF: sub_4A3E+8j + mov cx, ax + or cx, dx + push si + push di + mov cs:word_47D1, ds + jz short loc_4ABC + add ax, 13h + adc dx, 0 + jb short loc_4AA7 + test dx, 0FFF0h + jnz short loc_4AA7 + mov cl, 4 + shr ax, cl + shl dx, cl + or ah, dl + mov dx, cs:word_47CB + or dx, dx + jz short loc_4A9D + mov dx, cs:word_47CF + or dx, dx + jz short loc_4A98 + mov bx, dx + +loc_4A88: ; CODE XREF: sub_4A48+4Ej + mov ds, dx + cmp word_EFE0, ax + jnb short loc_4AAC + mov dx, off_EFE6 + cmp dx, bx + jnz short loc_4A88 + +loc_4A98: ; CODE XREF: sub_4A48+3Cj + call sub_4998 + jmp short loc_4ABC +; --------------------------------------------------------------------------- + +loc_4A9D: ; CODE XREF: sub_4A48+33j + call sub_4934 + jmp short loc_4ABC +; --------------------------------------------------------------------------- + +loc_4AA2: ; CODE XREF: sub_4A48:loc_4AACj + call sub_4A1B + jmp short loc_4ABC +; --------------------------------------------------------------------------- + +loc_4AA7: ; CODE XREF: sub_4A48+1Cj sub_4A48+22j + xor ax, ax + cwd + jmp short loc_4ABC +; --------------------------------------------------------------------------- + +loc_4AAC: ; CODE XREF: sub_4A48+46j + ja short loc_4AA2 + call sub_48AB + mov bx, word_EFE8 + mov word_EFE2, bx + mov ax, offset off_EFE4 + +loc_4ABC: ; CODE XREF: sub_4A48+14j sub_4A48+53j ... + mov ds, cs:word_47D1 + pop di + pop si + pop bp + retf +sub_4A48 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4AC5 proc near ; CODE XREF: sub_4BA5:loc_4C01p + push bx + mov si, cs:word_47D3 + push si + mov si, cs:word_47D5 + push si + push cs + call near ptr sub_4A48 + add sp, 4 + or dx, dx + jnz short loc_4ADF + pop bx + retn +; --------------------------------------------------------------------------- + +loc_4ADF: ; CODE XREF: sub_4AC5+16j + pop ds + mov es, dx + push es + push ds + push bx + mov dx, word_EFE0 + cld + dec dx + mov di, 4 + mov si, di + mov cx, 6 + rep movsw + or dx, dx + jz short loc_4B30 + mov ax, es + inc ax + mov es, ax + assume es:seg000 + mov ax, ds + inc ax + mov ds, ax + assume ds:nothing + +loc_4B03: ; CODE XREF: sub_4AC5+69j + xor di, di + mov si, di + mov cx, dx + cmp cx, 1000h + jbe short loc_4B12 + mov cx, 1000h + +loc_4B12: ; CODE XREF: sub_4AC5+48j + shl cx, 1 + shl cx, 1 + shl cx, 1 + rep movsw + sub dx, 1000h + jbe short loc_4B30 + 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_4B03 +; --------------------------------------------------------------------------- + +loc_4B30: ; CODE XREF: sub_4AC5+32j sub_4AC5+59j + mov ds, cs:word_47D1 + assume ds:dseg + push cs + call near ptr sub_490B + add sp, 4 + pop dx + mov ax, 4 + retn +sub_4AC5 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_4B41 proc near ; CODE XREF: sub_4BA5:loc_4BFCp + cmp bx, cs:word_47CD + jz short loc_4B8D + 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_4B79 + mov es:2, di + jmp short loc_4B7E +; --------------------------------------------------------------------------- + +loc_4B79: ; CODE XREF: sub_4B41+2Fj + mov es:8, di + +loc_4B7E: ; CODE XREF: sub_4B41+36j + mov si, bx + push cs + call near ptr sub_490B + add sp, 4 + mov dx, si + mov ax, 4 + retn +; --------------------------------------------------------------------------- + +loc_4B8D: ; CODE XREF: sub_4B41+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_4B41 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_4BA5 proc far ; CODE XREF: sub_554E+2A4p + ; seg003:0752P ... + +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_4BB2 +; --------------------------------------------------------------------------- + push bp + mov bp, sp + mov dx, [bp+arg_6] + +loc_4BB2: ; CODE XREF: sub_4BA5+5j + mov ax, [bp+arg_4] + mov bx, [bp+arg_2] + push si + push di + mov cs:word_47D1, ds + mov cs:word_47D3, dx + mov cs:word_47D5, ax + or bx, bx + jz short loc_4C06 + mov cx, ax + or cx, dx + jz short loc_4C11 + add ax, 13h + adc dx, 0 + jb short loc_4C1A + test dx, 0FFF0h + jnz short loc_4C1A + 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_4C01 + ja short loc_4BFC + mov dx, bx + mov ax, 4 + jmp short loc_4C1D +; --------------------------------------------------------------------------- + +loc_4BFC: ; CODE XREF: sub_4BA5+4Ej + call sub_4B41 + jmp short loc_4C1D +; --------------------------------------------------------------------------- + +loc_4C01: ; CODE XREF: sub_4BA5+4Cj + call sub_4AC5 + jmp short loc_4C1D +; --------------------------------------------------------------------------- + +loc_4C06: ; CODE XREF: sub_4BA5+25j + push dx + push ax + push cs + call near ptr sub_4A48 + add sp, 4 + jmp short loc_4C1D +; --------------------------------------------------------------------------- + +loc_4C11: ; CODE XREF: sub_4BA5+2Bj + push bx + push ax + push cs + call near ptr sub_490B + add sp, 4 + +loc_4C1A: ; CODE XREF: sub_4BA5+33j sub_4BA5+39j + xor ax, ax + cwd + +loc_4C1D: ; CODE XREF: sub_4BA5+55j sub_4BA5+5Aj ... + mov ds, cs:word_47D1 + pop di + pop si + pop bp + retf +sub_4BA5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_4C26 proc near ; CODE XREF: __brk+31p __sbrk+74p + +var_2 = word ptr -2 +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+var_2], ax + mov ax, segx + sub [bp+var_2], ax + mov ax, [bp+var_2] + add ax, 3Fh ; '?' + mov cl, 6 + shr ax, cl + mov [bp+var_2], ax + cmp ax, word_11CC0 +sub_4C26 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function + +sub_4C4C proc near ; CODE XREF: sub_A142+22Fp + ; DATA XREF: dseg:off_EFE6o + jz short loc_4C8A + mov cl, 6 + shl word ptr [bp-2], cl + mov dx, word_F06E + mov ax, [bp-2] + add ax, segx + cmp ax, dx + jbe short loc_4C6B + mov ax, dx + sub ax, segx + mov [bp-2], ax + +loc_4C6B: ; CODE XREF: sub_4C4C+14j + push word ptr [bp-2] ; newsize + push segx ; segx + nop + push cs + call near ptr _setblock + pop cx + pop cx + mov dx, ax + cmp dx, 0FFFFh + jnz short loc_4C9C + mov ax, [bp-2] + mov cl, 6 + shr ax, cl + mov word_11CC0, ax + +loc_4C8A: ; CODE XREF: sub_4C4Cj + mov dx, [bp+6] + mov ax, [bp+4] + mov word_F06A, dx + mov word_F068, ax + mov ax, 1 + jmp short loc_4CAC +; --------------------------------------------------------------------------- + +loc_4C9C: ; CODE XREF: sub_4C4C+32j + mov ax, segx + add ax, dx + mov word_F06E, ax + mov word_F06C, 0 + xor ax, ax + +loc_4CAC: ; CODE XREF: sub_4C4C+4Ej + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_4C4C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +__brk proc near ; CODE XREF: sub_47D7:loc_4833p + ; sub_4B41+59p + +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov cx, word_F066 + mov bx, word_F064 + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + jb short loc_4CEC + mov cx, word_F06E + mov bx, word_F06C + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + call N_PCMP@ + ja short loc_4CEC + push [bp+arg_2] + push [bp+arg_0] + call sub_4C26 + or ax, ax + jnz short loc_4CF1 + +loc_4CEC: ; CODE XREF: __brk+16j __brk+29j + mov ax, 0FFFFh + jmp short loc_4CF3 +; --------------------------------------------------------------------------- + +loc_4CF1: ; CODE XREF: __brk+36j + xor ax, ax + +loc_4CF3: ; 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_4934+Ap sub_4934+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_F06A + xor dx, dx + mov cl, 4 + call near ptr N_LXLSH@ + add ax, word_F068 + adc dx, 0 + add ax, [bp+arg_0] + adc dx, [bp+arg_2] + cmp dx, 0Fh + jl short loc_4D22 + jg short loc_4D72 + cmp ax, 0FFFFh + ja short loc_4D72 + +loc_4D22: ; CODE XREF: __sbrk+22j + mov dx, word_F06A + mov ax, word_F068 + mov cx, [bp+arg_2] + mov bx, [bp+arg_0] + call near ptr N_PADD@ + mov [bp+var_2], dx + mov [bp+var_4], ax + mov cx, word_F066 + mov bx, word_F064 + call N_PCMP@ + jb short loc_4D72 + mov cx, word_F06E + mov bx, word_F06C + mov dx, [bp+var_2] + mov ax, [bp+var_4] + call N_PCMP@ + ja short loc_4D72 + mov dx, word_F06A + mov ax, word_F068 + mov [bp+var_6], dx + mov [bp+var_8], ax + push [bp+var_2] + push [bp+var_4] + call sub_4C26 + or ax, ax + jnz short loc_4D7A + +loc_4D72: ; CODE XREF: __sbrk+24j __sbrk+29j ... + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_4D80 +; --------------------------------------------------------------------------- + +loc_4D7A: ; CODE XREF: __sbrk+79j + mov dx, [bp+var_6] + mov ax, [bp+var_8] + +loc_4D80: ; 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_11CCE + mov ax, word_11CCC + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_4DAF + cmp ax, 1 + jz short loc_4DEC + +loc_4DAF: ; CODE XREF: seg000:4DA8j + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_4DC3 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4DCD + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4DCD + +loc_4DC3: ; CODE XREF: seg000:4DB5j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4DCD: ; CODE XREF: seg000:4DBBj seg000:4DC1j + mov word_11CCE, 0 + mov word_11CCC, 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_4DEC: ; CODE XREF: seg000:4DADj + 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_11CCE + mov ax, word_11CCC + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_4E21 + cmp ax, 1 + jz short loc_4E5E + +loc_4E21: ; CODE XREF: seg000:4E1Aj + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_4E35 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4E3F + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4E3F + +loc_4E35: ; CODE XREF: seg000:4E27j + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4E3F: ; CODE XREF: seg000:4E2Dj seg000:4E33j + mov word_11CCE, 0 + mov word_11CCC, 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_4E5E: ; CODE XREF: seg000:4E1Fj + 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_11CC6 + mov ax, word_11CC4 + mov [bp-2], dx + mov [bp-4], ax + or dx, dx + jnz short loc_4E95 + cmp ax, 1 + jz short loc_4EDA + +loc_4E95: ; CODE XREF: seg000:4E8Ej + mov ax, [bp-4] + or ax, [bp-2] + jz short loc_4EA9 + cmp word ptr [bp-2], 0FFFFh + jnz short loc_4EB3 + cmp word ptr [bp-4], 0FFFFh + jnz short loc_4EB3 + +loc_4EA9: ; CODE XREF: seg000:4E9Bj + mov ax, 1 + push ax + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + +loc_4EB3: ; CODE XREF: seg000:4EA1j seg000:4EA7j + mov word_11CC6, 0 + mov word_11CC4, 0 + push word_141B2 + push word_141B0 + 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_4EDA: ; CODE XREF: seg000:4E93j + 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_4EE9 proc far ; CODE XREF: seg000:4F32p sub_4FF0+Cp + +arg_0 = word ptr 6 + + push bp + mov bp, sp + push si + push di + xor dx, dx + +loc_4EF0: ; CODE XREF: sub_4EE9+1Cj + mov bx, dx + mov al, [bx+2CFCh] + mov ah, 0 + cmp ax, [bp+arg_0] + jnz short loc_4F01 + mov ax, dx + jmp short loc_4F0A +; --------------------------------------------------------------------------- + +loc_4F01: ; CODE XREF: sub_4EE9+12j + inc dx + cmp dx, 6 + jl short loc_4EF0 + mov ax, 0FFFFh + +loc_4F0A: ; CODE XREF: sub_4EE9+16j + pop di + pop si + pop bp + retf +sub_4EE9 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + sub sp, 6 + push si + push di + cmp byte_11CC3, 0 + jnz short loc_4F2E + mov word_141AA, seg seg000 + mov word_141A8, 4F0Eh + mov byte_11CC3, 1 + +loc_4F2E: ; CODE XREF: seg000:4F1Bj + push word ptr [bp+6] + push cs + call near ptr sub_4EE9 + pop cx + mov [bp-2], ax + cmp ax, 0FFFFh + jnz short loc_4F4D + mov word_F05E, 13h + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp loc_4FEA +; --------------------------------------------------------------------------- + +loc_4F4D: ; CODE XREF: seg000:4F3Cj + mov bx, [bp-2] + mov cl, 2 + shl bx, cl + mov dx, [bx+2CE6h] + mov ax, [bx+2CE4h] + 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+2CE6h], dx + mov [bx+2CE4h], ax + cmp word ptr [bp+6], 2 + jnz short loc_4FB7 + cmp byte_11CC2, 0 + jnz short loc_4F98 + mov ax, 23h ; '#' + push ax + nop + push cs + call near ptr _getvect + pop cx + mov word_141B2, dx + mov word_141B0, ax + mov byte_11CC2, 1 + +loc_4F98: ; CODE XREF: seg000:4F80j + mov ax, [bp+8] + or ax, [bp+0Ah] + jnz short loc_4FAA + push word_141B2 + push word_141B0 + jmp short loc_4FB2 +; --------------------------------------------------------------------------- + +loc_4FAA: ; CODE XREF: seg000:4F9Ej + mov ax, seg seg000 + push ax + mov ax, 4E6Ah + push ax + +loc_4FB2: ; CODE XREF: seg000:4FA8j + mov ax, 23h ; '#' + jmp short loc_4FDB +; --------------------------------------------------------------------------- + +loc_4FB7: ; CODE XREF: seg000:4F79j + cmp word ptr [bp+6], 8 + jnz short loc_4FE4 + mov ax, seg seg000 + push ax + mov ax, 4D86h + 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, 4DF8h + push ax + mov ax, 4 + +loc_4FDB: ; CODE XREF: seg000:4FB5j + push ax + nop + push cs + call near ptr _setvect + add sp, 6 + +loc_4FE4: ; CODE XREF: seg000:4FBBj + mov dx, [bp-4] + mov ax, [bp-6] + +loc_4FEA: ; CODE XREF: seg000:4F4Aj + 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_4FF0 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_4EE9 + pop cx + mov [bp+var_2], ax + cmp ax, 0FFFFh + jnz short loc_500D + mov ax, 1 + jmp short loc_5081 +; --------------------------------------------------------------------------- + +loc_500D: ; CODE XREF: sub_4FF0+16j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov dx, [bx+2CE6h] + mov ax, [bx+2CE4h] + mov word ptr [bp+var_6+2], dx + mov word ptr [bp+var_6], ax + or dx, dx + jnz short loc_502B + cmp ax, 1 + jz short loc_507F + +loc_502B: ; CODE XREF: sub_4FF0+34j + mov ax, word ptr [bp+var_6] + or ax, word ptr [bp+var_6+2] + jnz short loc_505A + mov ax, [bp+arg_0] + cmp ax, 2 + jz short loc_5045 + cmp ax, 16h + jnz short loc_504E + nop + push cs + call near ptr sub_3B18 +; --------------------------------------------------------------------------- + +loc_5045: ; CODE XREF: sub_4FF0+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_504E: ; CODE XREF: sub_4FF0+4Ej + mov ax, 1 + push ax ; status + nop + push cs + call near ptr __exit +; --------------------------------------------------------------------------- + pop cx + jmp short loc_507F +; --------------------------------------------------------------------------- + +loc_505A: ; CODE XREF: sub_4FF0+41j + mov bx, [bp+var_2] + mov cl, 2 + shl bx, cl + mov word ptr [bx+2CE6h], 0 + mov word ptr [bx+2CE4h], 0 + mov bx, [bp+var_2] + mov al, [bx+2D02h] + mov ah, 0 + push ax + push [bp+arg_0] + call [bp+var_6] + pop cx + pop cx + +loc_507F: ; CODE XREF: sub_4FF0+39j sub_4FF0+68j + xor ax, ax + +loc_5081: ; CODE XREF: sub_4FF0+1Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_4FF0 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_5A5D+A8p sub_A0B9+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_50A6 + jmp short loc_50BE +; --------------------------------------------------------------------------- + +loc_50A6: ; CODE XREF: __access+1Bj + test [bp+arg_4], 2 + jz short loc_50B1 + test dl, 1 + jnz short loc_50B5 + +loc_50B1: ; CODE XREF: __access+23j + xor ax, ax + jmp short loc_50BE +; --------------------------------------------------------------------------- + +loc_50B5: ; CODE XREF: __access+28j + mov word_F05E, 5 + mov ax, 0FFFFh + +loc_50BE: ; 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, 8, 2Dh, 0Bh, 6, 0Ah, 2Dh, 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, 0Ch, 2Dh, 0B8h + dw seg dseg +; --------------------------------------------------------------------------- + mov word ptr dword_11CE8, si + mov word ptr dword_11CE8+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_510B proc far ; CODE XREF: sub_5130+35p + ; sub_554E+24Bp ... + +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_11CE8 + +loc_5119: ; CODE XREF: sub_510B+1Dj + mov dx, es:[bx] + or dx, dx + jz short loc_512B + cmp al, dl + jb short loc_512B + inc bx + inc bx + cmp al, dh + ja short loc_5119 + inc cx + +loc_512B: ; CODE XREF: sub_510B+13j sub_510B+17j + xchg ax, cx + pop di + pop si + pop bp + retf +sub_510B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5130 proc far ; CODE XREF: sub_54DB+23p + ; sub_554E+175p ... + +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_5146: ; CODE XREF: sub_5130+4Fj + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5153 + xor cx, cx + jmp short loc_5181 +; --------------------------------------------------------------------------- + +loc_5153: ; CODE XREF: sub_5130+1Dj + cmp cx, 1 + jnz short loc_515D + mov cx, 2 + jmp short loc_5174 +; --------------------------------------------------------------------------- + +loc_515D: ; CODE XREF: sub_5130+26j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + push cs + call near ptr sub_510B + pop cx + or ax, ax + jz short loc_5172 + mov cx, 1 + jmp short loc_5174 +; --------------------------------------------------------------------------- + +loc_5172: ; CODE XREF: sub_5130+3Bj + xor cx, cx + +loc_5174: ; CODE XREF: sub_5130+2Bj sub_5130+40j + mov ax, word ptr [bp+var_4] + cmp ax, [bp+arg_4] + jnb short loc_5181 + inc word ptr [bp+var_4] + jmp short loc_5146 +; --------------------------------------------------------------------------- + +loc_5181: ; CODE XREF: sub_5130+21j sub_5130+4Aj + or cx, cx + jnz short loc_518A + mov ax, 1 + jmp short loc_518C +; --------------------------------------------------------------------------- + +loc_518A: ; CODE XREF: sub_5130+53j + xor ax, ax + +loc_518C: ; CODE XREF: sub_5130+58j + pop di + pop si + mov sp, bp + pop bp + retf +sub_5130 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_51AB + xchg ax, cx + jmp short loc_51AF +; --------------------------------------------------------------------------- + +loc_51AB: ; CODE XREF: __chmod+14j + push ax + call __IOERROR + +loc_51AF: ; 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_51CB + nop + push cs + call near ptr _flushall + jmp loc_527C +; --------------------------------------------------------------------------- + +loc_51CB: ; CODE XREF: _fflush+Ej + les bx, [bp+stream] + mov ax, es:[bx+12h] + cmp ax, word ptr [bp+stream] + jz short loc_51DA + jmp loc_5277 +; --------------------------------------------------------------------------- + +loc_51DA: ; CODE XREF: _fflush+22j + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_5231 + test byte ptr es:[bx+2], 8 + jnz short loc_5202 + mov dx, es:[bx+0Eh] + mov ax, word ptr [bp+stream] + add ax, 5 + cmp dx, word ptr [bp+stream+2] + jz short loc_51FC + jmp loc_527C +; --------------------------------------------------------------------------- + +loc_51FC: ; CODE XREF: _fflush+44j + cmp es:[bx+0Ch], ax + jnz short loc_527C + +loc_5202: ; 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_527C + cmp es:[bx+0Ch], ax + jnz short loc_527C + mov dx, es:[bx+0Ah] + mov ax, es:[bx+8] + mov es:[bx+0Eh], dx + mov es:[bx+0Ch], ax + jmp short loc_527C +; --------------------------------------------------------------------------- + +loc_5231: ; 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_527C + les bx, [bp+stream] + test byte ptr es:[bx+3], 2 + jnz short loc_527C + or word ptr es:[bx+2], 10h + +loc_5277: ; CODE XREF: _fflush+24j + mov ax, 0FFFFh + jmp short loc_527E +; --------------------------------------------------------------------------- + +loc_527C: ; CODE XREF: _fflush+15j _fflush+46j ... + xor ax, ax + +loc_527E: ; 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_119F4 + mov [bp+var_6], ax + mov word ptr [bp+stream+2], ds + mov word ptr [bp+stream], 2884h + jmp short loc_52BD +; --------------------------------------------------------------------------- + +loc_52A1: ; CODE XREF: _flushall+41j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_52B9 + 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_52B9: ; CODE XREF: _flushall+25j + add word ptr [bp+stream], 14h + +loc_52BD: ; CODE XREF: _flushall+1Bj + mov ax, [bp+var_6] + dec [bp+var_6] + or ax, ax + jnz short loc_52A1 + 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_52D0 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_52ED + mov cx, es:[bx+6] + add cx, es:[bx] + inc cx + mov ax, cx + jmp short loc_52FA +; --------------------------------------------------------------------------- + +loc_52ED: ; CODE XREF: sub_52D0+Fj + les bx, [bp+arg_0] + mov ax, es:[bx] + cwd + xor ax, dx + sub ax, dx + mov cx, ax + +loc_52FA: ; CODE XREF: sub_52D0+1Bj + mov [bp+var_2], ax + les bx, [bp+arg_0] + test byte ptr es:[bx+2], 40h + jnz short loc_534E + 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_5347 + jmp short loc_532F +; --------------------------------------------------------------------------- + +loc_5320: ; CODE XREF: sub_52D0+64j + dec word ptr [bp+var_6] + les bx, [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_532F + inc [bp+var_2] + +loc_532F: ; CODE XREF: sub_52D0+4Ej sub_52D0+5Aj + mov ax, cx + dec cx + or ax, ax + jnz short loc_5320 + jmp short loc_534E +; --------------------------------------------------------------------------- + +loc_5338: ; CODE XREF: sub_52D0+7Cj + les bx, [bp+var_6] + inc word ptr [bp+var_6] + cmp byte ptr es:[bx], 0Ah + jnz short loc_5347 + inc [bp+var_2] + +loc_5347: ; CODE XREF: sub_52D0+4Cj sub_52D0+72j + mov ax, cx + dec cx + or ax, ax + jnz short loc_5338 + +loc_534E: ; CODE XREF: sub_52D0+35j sub_52D0+66j + mov ax, [bp+var_2] + pop di + pop si + mov sp, bp + pop bp + retn 4 +sub_52D0 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_5374 + mov ax, 0FFFFh + jmp short loc_53D7 +; --------------------------------------------------------------------------- + +loc_5374: ; CODE XREF: _fseek+14j + cmp [bp+whence], 1 + jnz short loc_5391 + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jle short loc_5391 + push word ptr [bp+stream+2] + push bx + call sub_52D0 + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_5391: ; 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_53D5 + cmp ax, 0FFFFh + jnz short loc_53D5 + mov ax, 0FFFFh + jmp short loc_53D7 +; --------------------------------------------------------------------------- + +loc_53D5: ; CODE XREF: _fseek+70j _fseek+75j + xor ax, ax + +loc_53D7: ; 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_540F + cmp ax, 0FFFFh + jnz short loc_540F + jmp loc_54B0 +; --------------------------------------------------------------------------- + +loc_540F: ; CODE XREF: _ftell+2Aj _ftell+2Fj + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jl short loc_541B + jmp loc_54A0 +; --------------------------------------------------------------------------- + +loc_541B: ; CODE XREF: _ftell+3Bj + mov al, es:[bx+4] + cbw + add ax, ax + mov bx, ax + test byte ptr [bx+2A17h], 8 + jz short loc_548E + 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_5456 + cmp ax, 0FFFFh + jnz short loc_5456 + jmp short loc_54B6 +; --------------------------------------------------------------------------- + +loc_5456: ; 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_5482 + cmp ax, 0FFFFh + jnz short loc_5482 + mov dx, 0FFFFh + mov ax, 0FFFFh + jmp short loc_54B6 +; --------------------------------------------------------------------------- + +loc_5482: ; 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_548E: ; CODE XREF: _ftell+4Ej + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_52D0 + cwd + add word ptr [bp+_offset], ax + adc word ptr [bp+_offset+2], dx + jmp short loc_54B0 +; --------------------------------------------------------------------------- + +loc_54A0: ; CODE XREF: _ftell+3Dj + push word ptr [bp+stream+2] + push word ptr [bp+stream] + call sub_52D0 + cwd + sub word ptr [bp+_offset], ax + sbb word ptr [bp+_offset+2], dx + +loc_54B0: ; CODE XREF: _ftell+31j _ftell+C3j + mov dx, word ptr [bp+_offset+2] + mov ax, word ptr [bp+_offset] + +loc_54B6: ; 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_54BC proc near ; CODE XREF: sub_54DB+Ep sub_554E+44p ... + +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_54CE + cmp ax, 2Fh ; '/' + jnz short loc_54D3 + +loc_54CE: ; CODE XREF: sub_54BC+Bj + mov ax, 1 + jmp short loc_54D5 +; --------------------------------------------------------------------------- + +loc_54D3: ; CODE XREF: sub_54BC+10j + xor ax, ax + +loc_54D5: ; CODE XREF: sub_54BC+15j + pop di + pop si + pop bp + retn 2 +sub_54BC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_54DB proc near ; CODE XREF: sub_554E+94p + ; sub_554E+122p ... + +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_54BC + or ax, ax + jz short loc_550D + 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_5130 + add sp, 8 + or ax, ax + jz short loc_550D + mov ax, 1 + jmp short loc_550F +; --------------------------------------------------------------------------- + +loc_550D: ; CODE XREF: sub_54DB+13j sub_54DB+2Bj + xor ax, ax + +loc_550F: ; CODE XREF: sub_54DB+30j + pop di + pop si + pop bp + retn 8 +sub_54DB endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_5515 proc far ; CODE XREF: sub_5A5D+10Dp + +var_C = dword ptr -0Ch +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 12h + push si + push di + mov ax, 0A1h ; '¡' + push ax + nop + push cs + call near ptr sub_4A3E + pop cx + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jnz short loc_5534 + jmp loc_5777 +; --------------------------------------------------------------------------- + +loc_5534: ; CODE XREF: sub_5515+1Aj + mov dx, [bp+arg_6] + mov ax, [bp+arg_4] + mov word ptr [bp+var_C+2], dx + mov word ptr [bp+var_C], ax + les bx, [bp+var_C] + mov al, es:[bx] + cbw + mov bx, ax + test byte ptr [bx+2AB5h], 0Ch +sub_5515 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_554E proc far ; CODE XREF: sub_A142+22Fp + ; DATA XREF: dseg:off_EFE4o + jz short loc_5574 + mov bx, [bp-0Ch] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jnz short loc_5574 + mov al, es:[bx] + cbw + mov [bp-10h], ax + push ax ; ch + nop + push cs + call near ptr _toupper + pop cx + add ax, 0FFC0h + mov [bp-12h], ax + add word ptr [bp-0Ch], 2 + jmp short loc_558A +; --------------------------------------------------------------------------- + +loc_5574: ; CODE XREF: sub_554Ej sub_554E+Aj + push ss + lea ax, [bp-12h] + push ax ; drive + nop + push cs + call near ptr __dos_getdrive + pop cx + pop cx + mov ax, [bp-12h] + add ax, 41h ; 'A' + dec ax + mov [bp-10h], ax + +loc_558A: ; CODE XREF: sub_554E+24j + les bx, [bp-0Ch] + mov al, es:[bx] + cbw + push ax + call sub_54BC + or ax, ax + jnz short loc_55F2 + mov ax, 0A1h ; '¡' + push ax ; len + push word ptr [bp-2] + push word ptr [bp-4] ; buf + push word ptr [bp-12h] ; drive + nop + push cs + call near ptr __getdcwd + add sp, 8 + or ax, dx + jnz short loc_55C2 + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + jmp loc_5777 +; --------------------------------------------------------------------------- + +loc_55C2: ; CODE XREF: sub_554E+62j + push word ptr [bp-2] + push word ptr [bp-4] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + mov dx, [bp-2] + add ax, [bp-4] + mov [bp-6], dx + mov [bp-8], ax + push dx + push word ptr [bp-4] + dec ax + push dx + push ax + call sub_54DB + or ax, ax + jnz short loc_5614 + les bx, [bp-8] + mov byte ptr es:[bx], 5Ch ; '\' + jmp short loc_5611 +; --------------------------------------------------------------------------- + +loc_55F2: ; CODE XREF: sub_554E+49j + mov dx, [bp-2] + mov ax, [bp-4] + mov [bp-6], dx + mov [bp-8], ax + les bx, [bp-8] + mov al, [bp-10h] + mov es:[bx], al + inc word ptr [bp-8] + les bx, [bp-8] + mov byte ptr es:[bx], 3Ah ; ':' + +loc_5611: ; CODE XREF: sub_554E+A2j + inc word ptr [bp-8] + +loc_5614: ; CODE XREF: sub_554E+99j + push word ptr [bp-0Ah] + push word ptr [bp-0Ch] ; src + push word ptr [bp-6] + push word ptr [bp-8] ; dest + nop + push cs + call near ptr _strcpy + add sp, 8 + mov dx, [bp-2] + mov ax, [bp-4] + mov [bp-6], dx + mov [bp-8], ax + mov [bp-0Ah], dx + mov [bp-0Ch], ax + +loc_563A: ; CODE XREF: sub_554E+253j + ; sub_554E+25Fj ... + les bx, [bp-0Ch] + inc word ptr [bp-0Ch] + mov al, es:[bx] + cbw + mov [bp-0Eh], ax + or ax, ax + jz short loc_5656 + push ax + call sub_54BC + or ax, ax + jnz short loc_5656 + jmp loc_5788 +; --------------------------------------------------------------------------- + +loc_5656: ; CODE XREF: sub_554E+FBj + ; sub_554E+103j + les bx, [bp-8] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_567D + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + add ax, 0FFFEh + push word ptr [bp-6] + push ax + call sub_54DB + or ax, ax + jz short loc_567D + sub word ptr [bp-8], 2 + jmp short loc_56F4 +; --------------------------------------------------------------------------- + +loc_567D: ; CODE XREF: sub_554E+110j + ; sub_554E+127j + les bx, [bp-8] + cmp byte ptr es:[bx-1], 2Eh ; '.' + jnz short loc_56F4 + cmp byte ptr es:[bx-2], 2Eh ; '.' + jnz short loc_56F4 + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + add ax, 0FFFDh + push word ptr [bp-6] + push ax + call sub_54DB + or ax, ax + jz short loc_56F4 + sub word ptr [bp-8], 3 + les bx, [bp-8] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_56DD + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_5130 + add sp, 8 + or ax, ax + jz short loc_56DD + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + jmp loc_5777 +; --------------------------------------------------------------------------- + +loc_56DD: ; CODE XREF: sub_554E+163j + ; sub_554E+17Dj ... + push word ptr [bp-2] + push word ptr [bp-4] + dec word ptr [bp-8] + mov ax, [bp-8] + push word ptr [bp-6] + push ax + call sub_54DB + or ax, ax + jz short loc_56DD + +loc_56F4: ; CODE XREF: sub_554E+12Dj + ; sub_554E+137j ... + cmp word ptr [bp-0Eh], 0 + jz short loc_56FD + jmp loc_577D +; --------------------------------------------------------------------------- + +loc_56FD: ; CODE XREF: sub_554E+1AAj + push word ptr [bp-2] + push word ptr [bp-4] + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + call sub_54DB + or ax, ax + jz short loc_5715 + dec word ptr [bp-8] + +loc_5715: ; CODE XREF: sub_554E+1C2j + les bx, [bp-8] + cmp byte ptr es:[bx-1], 3Ah ; ':' + jnz short loc_5743 + mov ax, [bp-8] + dec ax + push word ptr [bp-6] + push ax + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_5130 + add sp, 8 + or ax, ax + jz short loc_5743 + les bx, [bp-8] + mov byte ptr es:[bx], 5Ch ; '\' + inc word ptr [bp-8] + +loc_5743: ; CODE XREF: sub_554E+1CFj + ; sub_554E+1E9j + les bx, [bp-8] + mov byte ptr es:[bx], 0 + push word ptr [bp-2] + push word ptr [bp-4] ; s + nop + push cs + call near ptr _strlen + pop cx + pop cx + inc ax + mov dx, ax + mov ax, [bp+6] + or ax, [bp+8] + jnz short loc_5765 + jmp loc_57E9 +; --------------------------------------------------------------------------- + +loc_5765: ; CODE XREF: sub_554E+212j + cmp dx, [bp+0Eh] + jbe short loc_57C2 + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + +loc_5777: ; CODE XREF: sub_5515+1Cj sub_554E+71j ... + xor dx, dx + xor ax, ax + jmp short loc_57F8 +; --------------------------------------------------------------------------- + +loc_577D: ; CODE XREF: sub_554E+1ACj + les bx, [bp-8] + mov al, [bp-0Eh] + mov es:[bx], al + jmp short loc_57BC +; --------------------------------------------------------------------------- + +loc_5788: ; CODE XREF: sub_554E+105j + les bx, [bp-8] + mov al, [bp-0Eh] + mov es:[bx], al + inc word ptr [bp-8] + push word ptr [bp-0Eh] + nop + push cs + call near ptr sub_510B + pop cx + or ax, ax + jnz short loc_57A4 + jmp loc_563A +; --------------------------------------------------------------------------- + +loc_57A4: ; CODE XREF: sub_554E+251j + les bx, [bp-0Ch] + cmp byte ptr es:[bx], 0 + jnz short loc_57B0 + jmp loc_563A +; --------------------------------------------------------------------------- + +loc_57B0: ; CODE XREF: sub_554E+25Dj + mov al, es:[bx] + les bx, [bp-8] + mov es:[bx], al + inc word ptr [bp-0Ch] + +loc_57BC: ; CODE XREF: sub_554E+238j + inc word ptr [bp-8] + jmp loc_563A +; --------------------------------------------------------------------------- + +loc_57C2: ; CODE XREF: sub_554E+21Aj + push word ptr [bp-2] + push word ptr [bp-4] ; src + push word ptr [bp+8] + push word ptr [bp+6] ; dest + nop + push cs + call near ptr _strcpy + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_490B + add sp, 0Ch + mov dx, [bp+8] + mov ax, [bp+6] + jmp short loc_57F8 +; --------------------------------------------------------------------------- + +loc_57E9: ; CODE XREF: sub_554E+214j + push dx + push word ptr [bp-2] + push word ptr [bp-4] + nop + push cs + call near ptr sub_4BA5 + add sp, 6 + +loc_57F8: ; CODE XREF: sub_554E+22Dj + ; sub_554E+299j + pop di + pop si + mov sp, bp + pop bp + retf +sub_554E 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_554E+5Ap sub_5A5D+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_581A + mov ah, 19h + int 21h ; DOS - GET DEFAULT DISK NUMBER + mov ah, 0 + inc ax + mov [bp+var_2], ax + +loc_581A: ; 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_5876 + 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_5855 + mov word_F05E, 22h ; '"' + jmp short loc_5876 +; --------------------------------------------------------------------------- + +loc_5855: ; CODE XREF: __getdcwd+4Dj + mov ax, word ptr [bp+dest] + or ax, word ptr [bp+dest+2] + jnz short loc_587C + push [bp+len] + nop + push cs + call near ptr sub_4A3E + pop cx + mov word ptr [bp+dest+2], dx + mov word ptr [bp+dest], ax + or ax, dx + jnz short loc_587C + mov word_F05E, 8 + +loc_5876: ; CODE XREF: __getdcwd+3Cj + ; __getdcwd+55j + xor dx, dx + xor ax, ax + jmp short loc_5895 +; --------------------------------------------------------------------------- + +loc_587C: ; 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_5895: ; 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_A142+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_58CC + mov al, 0 + mov ah, es:[di] + mov cx, 0FFFFh + cld + repne scasb + not cx + dec cx + jz short loc_58CC + les di, dword_11D14 + mov word ptr [bp+var_4+2], es + mov bx, es + or bx, di + mov word ptr [bp+var_4], di + jnz short loc_58D9 + +loc_58CC: ; CODE XREF: _getenv+Fj _getenv+1Fj ... + xor dx, dx + xor ax, ax + jmp short loc_5905 +; --------------------------------------------------------------------------- + +loc_58D2: ; CODE XREF: _getenv+50j _getenv+58j ... + add word ptr [bp+var_4], 4 + les di, [bp+var_4] + +loc_58D9: ; CODE XREF: _getenv+2Fj + les di, es:[di] + mov bx, es + or bx, di + jz short loc_58CC + mov al, es:[di] + or al, al + jz short loc_58CC + cmp ah, al + jnz short loc_58D2 + mov bx, cx + cmp byte ptr es:[bx+di], 3Dh ; '=' + jnz short loc_58D2 + push ds + lds si, [bp+_name] + repe cmpsb + pop ds + xchg cx, bx + jnz short loc_58D2 + inc di + mov ax, di + mov dx, es + +loc_5905: ; 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_592C + 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_592C: ; 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_7117+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_594B + movsb + +loc_594B: ; 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_5972 + jcxz short loc_5979 + stosb + dec cx + +loc_5972: ; CODE XREF: _setmem+15j + shr cx, 1 + rep stosw + jnb short loc_5979 + stosb + +loc_5979: ; 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_7DC3+CFp seg003:09D6P + +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_59BC + std + mov ax, 1 + jmp short loc_59BF +; --------------------------------------------------------------------------- + +loc_59BC: ; CODE XREF: _movmem+15j + cld + xor ax, ax + +loc_59BF: ; CODE XREF: _movmem+1Bj + lds si, [bp+src] + les di, [bp+dest] + mov cx, [bp+_length] + or ax, ax + jz short loc_59D2 + add si, cx + dec si + add di, cx + dec di + +loc_59D2: ; CODE XREF: _movmem+2Bj + test di, 1 + jz short loc_59DC + jcxz short loc_59EB + movsb + dec cx + +loc_59DC: ; CODE XREF: _movmem+37j + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short loc_59EB + add si, ax + add di, ax + movsb + +loc_59EB: ; 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:0992P seg003:09BBP + +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_A0B9+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_5A3D + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 2D18h + +loc_5A3D: ; 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_5A5D + 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_5A5D(char *src, __int32, char *pathname) +sub_5A5D 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_5A82 + xor dx, dx + jmp short loc_5A91 +; --------------------------------------------------------------------------- + +loc_5A82: ; CODE XREF: sub_5A5D+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_5A91: ; CODE XREF: sub_5A5D+23j sub_5A5D+F4j ... + les bx, [bp+pathname] + add bx, dx + mov byte ptr es:[bx], 0 + or dx, dx + jz short loc_5AE6 + mov bx, dx + add bx, word ptr [bp+pathname] + mov bl, es:[bx-1] + mov al, bl + cmp al, 5Ch ; '\' + jz short loc_5AB7 + cmp bl, 2Fh ; '/' + jz short loc_5AB7 + cmp bl, 3Ah ; ':' + jnz short loc_5AD3 + +loc_5AB7: ; CODE XREF: sub_5A5D+4Ej sub_5A5D+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_5130 + add sp, 8 + or ax, ax + jnz short loc_5AE6 + +loc_5AD3: ; CODE XREF: sub_5A5D+58j + push ds + mov ax, 2D1Ah + 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_5AE6: ; CODE XREF: sub_5A5D+3Fj sub_5A5D+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_5B5A + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5B21 + les bx, [bp+pathname] + mov byte ptr es:[bx], 0 + jmp short loc_5B99 +; --------------------------------------------------------------------------- + +loc_5B21: ; CODE XREF: sub_5A5D+B9j + xor dx, dx + jmp short loc_5B39 +; --------------------------------------------------------------------------- + +loc_5B25: ; CODE XREF: sub_5A5D+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_5B39: ; CODE XREF: sub_5A5D+C6j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 3Bh ; ';' + jz short loc_5B48 + cmp byte ptr es:[bx], 0 + jnz short loc_5B25 + +loc_5B48: ; CODE XREF: sub_5A5D+E3j + les bx, [bp+arg_4] + cmp byte ptr es:[bx], 0 + jnz short loc_5B54 + jmp loc_5A91 +; --------------------------------------------------------------------------- + +loc_5B54: ; CODE XREF: sub_5A5D+F2j + inc word ptr [bp+arg_4] + jmp loc_5A91 +; --------------------------------------------------------------------------- + +loc_5B5A: ; CODE XREF: sub_5A5D+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_5515 + add sp, 0Ah + mov [bp+var_2], dx + mov [bp+var_4], ax + or ax, dx + jz short loc_5B99 + 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_490B + add sp, 0Ch + +loc_5B99: ; CODE XREF: sub_5A5D+C2j + ; sub_5A5D+11Bj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5A5D 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:43E5p seg000:441Ep + +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_5BB3 + jmp loc_5C8A +; --------------------------------------------------------------------------- + +loc_5BB3: ; CODE XREF: _setvbuf+Fj + cmp [bp+_type], 2 + jle short loc_5BBC + jmp loc_5C8A +; --------------------------------------------------------------------------- + +loc_5BBC: ; CODE XREF: _setvbuf+18j + cmp [bp+_size], 7FFFh + jbe short loc_5BC6 + jmp loc_5C8A +; --------------------------------------------------------------------------- + +loc_5BC6: ; CODE XREF: _setvbuf+22j + cmp word_11CFE, 0 + jnz short loc_5BDC + cmp word ptr [bp+stream], 2898h + jnz short loc_5BDC + mov word_11CFE, 1 + jmp short loc_5BF0 +; --------------------------------------------------------------------------- + +loc_5BDC: ; CODE XREF: _setvbuf+2Cj _setvbuf+33j + cmp word_11CFC, 0 + jnz short loc_5BF0 + cmp word ptr [bp+stream], 2884h + jnz short loc_5BF0 + mov word_11CFC, 1 + +loc_5BF0: ; CODE XREF: _setvbuf+3Bj _setvbuf+42j ... + les bx, [bp+stream] + cmp word ptr es:[bx], 0 + jz short loc_5C0D + 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_5C0D: ; CODE XREF: _setvbuf+58j + les bx, [bp+stream] + test byte ptr es:[bx+2], 4 + jz short loc_5C26 + push word ptr es:[bx+0Ah] + push word ptr es:[bx+8] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + +loc_5C26: ; 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_5CBA + cmp [bp+_size], 0 + jbe short loc_5CBA + mov word ptr off_11858+2, seg seg000 + mov word ptr off_11858, 5FC8h + mov ax, word ptr [bp+buf] + or ax, word ptr [bp+buf+2] + jnz short loc_5C8F + push [bp+_size] + nop + push cs + call near ptr sub_4A3E + pop cx + mov word ptr [bp+buf+2], dx + mov word ptr [bp+buf], ax + or ax, dx + jz short loc_5C8A + les bx, [bp+stream] + or word ptr es:[bx+2], 4 + jmp short loc_5C8F +; --------------------------------------------------------------------------- + +loc_5C8A: ; CODE XREF: _setvbuf+11j _setvbuf+1Aj ... + mov ax, 0FFFFh + jmp short loc_5CBC +; --------------------------------------------------------------------------- + +loc_5C8F: ; 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_5CBA + or word ptr es:[bx+2], 8 + +loc_5CBA: ; CODE XREF: _setvbuf+B2j _setvbuf+B8j ... + xor ax, ax + +loc_5CBC: ; 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_5A5D+83p sub_5A5D+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_5CF0 + movsb + dec cx + +loc_5CF0: ; CODE XREF: _strcat+2Cj + shr cx, 1 + rep movsw + jnb short loc_5CF7 + movsb + +loc_5CF7: ; 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_554E+D4p + ; sub_554E+282p ... + +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_A142+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_5D6D: ; CODE XREF: _stricmp+1Ej _stricmp+37j + lodsb + mov bl, es:[di] + or al, al + jz short loc_5D91 + scasb + jz short loc_5D6D + cmp al, ch + jb short loc_5D82 + cmp al, cl + ja short loc_5D82 + sub al, 20h ; ' ' + +loc_5D82: ; CODE XREF: _stricmp+22j _stricmp+26j + cmp bl, ch + jb short loc_5D8D + cmp bl, cl + ja short loc_5D8D + sub bl, 20h ; ' ' + +loc_5D8D: ; CODE XREF: _stricmp+2Cj _stricmp+30j + cmp al, bl + jz short loc_5D6D + +loc_5D91: ; 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_5DAC + cmp ax, di + jz short loc_5DB6 + +loc_5DAC: ; CODE XREF: _strlen+Dj + cld + mov cx, 0FFFFh + repne scasb + xchg ax, cx + not ax + dec ax + +loc_5DB6: ; 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_5DBA(char *s, char) +sub_5DBA proc far ; CODE XREF: sub_A142+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_5DF9 +; --------------------------------------------------------------------------- + +loc_5DE2: ; CODE XREF: sub_5DBA+41j + dec word ptr [bp+var_4] + les bx, [bp+var_4] + mov al, es:[bx] + cmp al, [bp+arg_4] + jnz short loc_5DF8 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_5E01 +; --------------------------------------------------------------------------- + +loc_5DF8: ; CODE XREF: sub_5DBA+34j + dec cx + +loc_5DF9: ; CODE XREF: sub_5DBA+26j + or cx, cx + jnz short loc_5DE2 + xor dx, dx + xor ax, ax + +loc_5E01: ; CODE XREF: sub_5DBA+3Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_5DBA 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_119F4 + jb short loc_5E23 + mov ax, 6 + push ax + call __IOERROR + jmp loc_5F67 +; --------------------------------------------------------------------------- + +loc_5E23: ; CODE XREF: ___write+10j + mov ax, [bp+len] + inc ax + cmp ax, 2 + jnb short loc_5E31 + xor ax, ax + jmp loc_5F67 +; --------------------------------------------------------------------------- + +loc_5E31: ; CODE XREF: ___write+23j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+2A17h], 8 + jz short loc_5E50 + 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_5E50: ; CODE XREF: ___write+34j + mov bx, [bp+handle] + add bx, bx + test byte ptr [bx+2A17h], 40h + jnz short loc_5E73 + 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_5F67 +; --------------------------------------------------------------------------- + +loc_5E73: ; CODE XREF: ___write+53j + mov bx, [bp+handle] + add bx, bx + and word ptr [bx+2A16h], 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_5F0D +; --------------------------------------------------------------------------- + +loc_5E92: ; 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_5EAF + les bx, [bp+var_6] + mov byte ptr es:[bx], 0Dh + inc word ptr [bp+var_6] + +loc_5EAF: ; 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_5F17 + jnz short loc_5ED5 + cmp dx, 80h ; '€' + jb short loc_5F17 + +loc_5ED5: ; 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_5F0D + cmp dx, 0FFFFh + jnz short loc_5F05 + mov ax, 0FFFFh + jmp short loc_5F62 +; --------------------------------------------------------------------------- + +loc_5F05: ; CODE XREF: ___write+F7j + mov ax, [bp+len] + sub ax, [bp+var_8] + jmp short loc_5F5D +; --------------------------------------------------------------------------- + +loc_5F0D: ; 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_5F17: ; CODE XREF: ___write+C4j ___write+CCj + cmp [bp+var_8], 0 + jz short loc_5F20 + jmp loc_5E92 +; --------------------------------------------------------------------------- + +loc_5F20: ; 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_5F64 + 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_5F64 + cmp dx, 0FFFFh + jnz short loc_5F5A + mov ax, 0FFFFh + jmp short loc_5F62 +; --------------------------------------------------------------------------- + +loc_5F5A: ; CODE XREF: ___write+14Cj + mov ax, [bp+len] + +loc_5F5D: ; CODE XREF: ___write+104j + add ax, dx + sub ax, [bp+var_2] + +loc_5F62: ; CODE XREF: ___write+FCj + ; ___write+151j + jmp short loc_5F67 +; --------------------------------------------------------------------------- + +loc_5F64: ; CODE XREF: ___write+12Ej + ; ___write+147j + mov ax, [bp+len] + +loc_5F67: ; 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+2A16h], 1 + jz short loc_5F84 + mov ax, 5 + push ax + jmp short loc_5FA5 +; --------------------------------------------------------------------------- + +loc_5F84: ; 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_5FA4 + push ax + mov bx, [bp+handle] + add bx, bx + or word ptr [bx+2A16h], 1000h + pop ax + jmp short loc_5FA8 +; --------------------------------------------------------------------------- + +loc_5FA4: ; CODE XREF: __rtl_write+26j + push ax + +loc_5FA5: ; CODE XREF: __rtl_write+15j + call __IOERROR + +loc_5FA8: ; 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], 2884h + jmp short loc_5FFB +; --------------------------------------------------------------------------- + +loc_5FDF: ; CODE XREF: __xfflush+37j + les bx, [bp+stream] + test byte ptr es:[bx+2], 3 + jz short loc_5FF4 + push word ptr [bp+stream+2] + push bx ; stream + nop + push cs + call near ptr _fflush + pop cx + pop cx + +loc_5FF4: ; CODE XREF: __xfflush+1Fj + dec [bp+var_6] + add word ptr [bp+stream], 14h + +loc_5FFB: ; CODE XREF: __xfflush+15j + cmp [bp+var_6], 0 + jnz short loc_5FDF + 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_6028 + 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_6046 + +loc_6028: ; 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_6046: ; 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_6141 + db 4 dup(0), 41h, 61h + dw seg seg000 + db 4, 0, 0FAh, 0FFh, 6 dup(0), 62h, 60h + dw seg seg000 + db 0DCh, 0FFh, 2 dup(0), 5, 3 dup(0), 6Ah, 60h + +; =============== 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_EB72+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, 6078h + 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, 60FEh + 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, 6141h + 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_6141 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:6062o + db 0Dh dup(0), 2, 0, 2, 0, 83h, 61h + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0D0h, 61h + 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_61CA + 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_61C8 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_61CC +; --------------------------------------------------------------------------- + +loc_61C8: ; CODE XREF: seg000:61B7j + jmp short loc_61CC +; --------------------------------------------------------------------------- + +loc_61CA: ; CODE XREF: seg000:618Ej + xor ax, ax + +loc_61CC: ; CODE XREF: seg000:61C6j + ; seg000:loc_61C8j + 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, 0A2h, 63h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0), 76h, 65h + 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), 8, 62h + +; =============== 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, 6216h + 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_625B + 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_62AD + +loc_625B: ; 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_629D + 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_629D: ; 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_62AD: ; 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_6576 + 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), 0D3h, 62h + +; =============== 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:40AAp seg000:4172p ... + +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, 62E1h + 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_6326 + 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_637C + +loc_6326: ; 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_636C + 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_636C: ; 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_637C: ; 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:4241p seg000:42F0p ... + +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_63FC + 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_63FC + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_63FC: ; CODE XREF: xmsg::~xmsg(void)+1Dj + ; xmsg::~xmsg(void)+4Bj + pop di + pop si + pop bp + retf +@xmsg@$bdtr$qv endp + +; --------------------------------------------------------------------------- + dd byte_653E + db 5 dup(0), 64h + dw seg seg000 + db 0E2h, 0FFh + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; xmsg::raise(void) +@xmsg@raise$qv proc far + +src = byte ptr -22h +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + sub sp, 22h + push si + push di + mov ax, seg seg000 + mov bx, 6408h + 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, 62F7h + 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, 653Eh + 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_6576 + 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), 61h, 64h + +; =============== 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, 646Fh + 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_64A8 + cmp ax, word ptr [bp+arg_4] + jz short loc_6526 + +loc_64A8: ; 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_6516 + 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_6516: ; 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_6526: ; 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_653E db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg000:6400o + db 0Dh dup(0), 1, 0, 1, 0, 0A2h, 63h + dw seg seg000 + db 5, 0, 34h, 0, 78h, 6Dh, 73h, 67h, 0Eh dup(0) +byte_6576 db 4, 0, 10h, 20h, 0Ah, 0, 89h, 65h ; DATA XREF: seg000:62D3o + ; seg000:6461o + 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, 9, 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_65CF 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_65E3 + mov dx, ds + mov ax, 2D22h + jmp short loc_65F0 +; --------------------------------------------------------------------------- + +loc_65E3: ; CODE XREF: sub_65CF+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_65F0: ; CODE XREF: sub_65CF+12j + pop di + pop si + pop bp + retf +sub_65CF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_65F4 proc far ; CODE XREF: sub_6691+69p + ; sub_6691+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_660C + cmp ax, word ptr [bp+arg_4] + jz short loc_6688 + +loc_660C: ; CODE XREF: sub_65F4+11j + les bx, [bp+arg_0] + mov ax, es:[bx+2] + les bx, [bp+arg_4] + cmp ax, es:[bx+2] + jnz short loc_6680 + les bx, [bp+arg_0] + mov ax, es:[bx] + les bx, [bp+arg_4] + cmp ax, es:[bx] + jnz short loc_6680 + 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_6680 + 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_6662: ; CODE XREF: sub_65F4+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_6684 + +loc_6680: ; CODE XREF: sub_65F4+26j sub_65F4+34j ... + xor ax, ax + jmp short loc_668B +; --------------------------------------------------------------------------- + +loc_6684: ; CODE XREF: sub_65F4+8Aj + or dx, dx + jnz short loc_6662 + +loc_6688: ; CODE XREF: sub_65F4+16j + mov ax, 1 + +loc_668B: ; CODE XREF: sub_65F4+8Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_65F4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6691 proc near ; CODE XREF: sub_6691+9Bp + ; sub_6691+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_66AC: ; CODE XREF: sub_6691+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_6740 + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jnz short loc_6739 + cmp [bp+arg_C], 0 + jz short loc_66E8 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_66E8 + mov ax, 1 + jmp short loc_66EA +; --------------------------------------------------------------------------- + +loc_66E8: ; CODE XREF: sub_6691+41j sub_6691+50j + xor ax, ax + +loc_66EA: ; CODE XREF: sub_6691+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_65F4 + add sp, 8 + or ax, ax + jz short loc_670D + cmp [bp+var_6], 0 + jz short loc_670D + jmp loc_67D0 +; --------------------------------------------------------------------------- + +loc_670D: ; CODE XREF: sub_6691+71j sub_6691+77j + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_6739 + 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_6691 + add sp, 0Eh + or ax, ax + jz short loc_6739 + jmp loc_67D0 +; --------------------------------------------------------------------------- + +loc_6739: ; CODE XREF: sub_6691+3Bj sub_6691+84j ... + add word ptr [bp+var_4], 8 + jmp loc_66AC +; --------------------------------------------------------------------------- + +loc_6740: ; CODE XREF: sub_6691+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_6753: ; CODE XREF: sub_6691+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_67DC + cmp [bp+arg_C], 0 + jz short loc_6785 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_6785 + mov ax, 1 + jmp short loc_6787 +; --------------------------------------------------------------------------- + +loc_6785: ; CODE XREF: sub_6691+DEj sub_6691+EDj + xor ax, ax + +loc_6787: ; CODE XREF: sub_6691+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_65F4 + add sp, 8 + or ax, ax + jz short loc_67A7 + cmp [bp+var_6], 0 + jnz short loc_67D0 + +loc_67A7: ; CODE XREF: sub_6691+10Ej + les bx, [bp+var_A] + test byte ptr es:[bx+8], 4 + jz short loc_67D5 + 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_6691 + add sp, 0Eh + or ax, ax + jz short loc_67D5 + +loc_67D0: ; CODE XREF: sub_6691+79j sub_6691+A5j ... + mov ax, 1 + jmp short loc_67DE +; --------------------------------------------------------------------------- + +loc_67D5: ; CODE XREF: sub_6691+11Ej + ; sub_6691+13Dj + add word ptr [bp+var_4], 8 + jmp loc_6753 +; --------------------------------------------------------------------------- + +loc_67DC: ; CODE XREF: sub_6691+D8j + xor ax, ax + +loc_67DE: ; CODE XREF: sub_6691+142j + pop di + pop si + mov sp, bp + pop bp + retn +sub_6691 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_67E4 proc near ; CODE XREF: sub_69ED+1Dp sub_69ED+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_67EF: ; CODE XREF: sub_67E4+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_6802 + cmp ax, word ptr [bp+arg_4] + jnz short loc_6802 + jmp loc_6917 +; --------------------------------------------------------------------------- + +loc_6802: ; CODE XREF: sub_67E4+14j sub_67E4+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_6892 + and [bp+var_2], 3300h + and [bp+var_4], 3300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jnz short loc_6835 + jmp loc_68D8 +; --------------------------------------------------------------------------- + +loc_6835: ; CODE XREF: sub_67E4+4Cj + or cx, cx + jz short loc_683C + jmp loc_6950 +; --------------------------------------------------------------------------- + +loc_683C: ; CODE XREF: sub_67E4+53j + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jz short loc_6872 + mov ax, [bp+var_4] + and ax, 300h + not ax + and ax, [bp+var_2] + test ah, 3 + jz short loc_6860 + jmp loc_6950 +; --------------------------------------------------------------------------- + +loc_6860: ; CODE XREF: sub_67E4+77j + or [bp+var_2], 300h + or [bp+var_4], 300h + mov ax, [bp+var_2] + cmp ax, [bp+var_4] + jz short loc_68D8 + +loc_6872: ; CODE XREF: sub_67E4+67j + mov ax, [bp+var_2] + or ax, 3000h + mov dx, [bp+var_4] + or dx, 3000h + cmp ax, dx + jz short loc_6886 + jmp loc_6950 +; --------------------------------------------------------------------------- + +loc_6886: ; CODE XREF: sub_67E4+9Dj + test byte ptr [bp+var_2+1], 10h + jnz short loc_688F + jmp loc_6950 +; --------------------------------------------------------------------------- + +loc_688F: ; CODE XREF: sub_67E4+A6j + jmp loc_6917 +; --------------------------------------------------------------------------- + +loc_6892: ; CODE XREF: sub_67E4+3Aj + mov ax, [bp+var_2] + and ax, [bp+var_4] + test ah, 4 + jz short loc_6900 + 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_68B7 + cmp ax, es:[bx+0Ah] + jz short loc_68D8 + +loc_68B7: ; CODE XREF: sub_67E4+CBj + or cx, cx + jz short loc_68BE + jmp loc_6950 +; --------------------------------------------------------------------------- + +loc_68BE: ; CODE XREF: sub_67E4+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_6950 + +loc_68D8: ; CODE XREF: sub_67E4+4Ej sub_67E4+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_67EF +; --------------------------------------------------------------------------- + +loc_6900: ; CODE XREF: sub_67E4+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_65F4 + add sp, 8 + or ax, ax + jz short loc_691C + +loc_6917: ; CODE XREF: sub_67E4+1Bj + ; sub_67E4:loc_688Fj + mov ax, 1 + jmp short loc_6952 +; --------------------------------------------------------------------------- + +loc_691C: ; CODE XREF: sub_67E4+131j + test byte ptr [bp+var_2], 2 + jz short loc_6950 + test byte ptr [bp+var_4], 1 + jz short loc_6950 + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 4 + jz short loc_6950 + 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_6691 + add sp, 0Eh + jmp short loc_6952 +; --------------------------------------------------------------------------- + +loc_6950: ; CODE XREF: sub_67E4+55j sub_67E4+79j ... + xor ax, ax + +loc_6952: ; CODE XREF: sub_67E4+136j + ; sub_67E4+16Aj + pop di + pop si + mov sp, bp + pop bp + retn +sub_67E4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6958 proc far ; CODE XREF: sub_7117+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_4A3E + 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_69A8 + cmp [bp+arg_0], 80h ; '€' + ja short loc_698A + les bx, ss:16h + test byte ptr es:[bx+4], 1 + jz short loc_698F + +loc_698A: ; CODE XREF: sub_6958+24j + nop + push cs + call near ptr _abort +; --------------------------------------------------------------------------- + +loc_698F: ; CODE XREF: sub_6958+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_69AE +; --------------------------------------------------------------------------- + +loc_69A8: ; CODE XREF: sub_6958+1Dj + mov dx, [bp+var_2] + mov ax, [bp+var_4] + +loc_69AE: ; CODE XREF: sub_6958+4Ej + pop di + pop si + mov sp, bp + pop bp + retf +sub_6958 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_69DC + cmp ax, [bp+6] + jnz short loc_69DC + les bx, ss:16h + and word ptr es:[bx+4], 0FFFEh + jmp short loc_69E9 +; --------------------------------------------------------------------------- + +loc_69DC: ; CODE XREF: seg000:69C9j seg000:69CEj + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + +loc_69E9: ; CODE XREF: seg000:69DAj + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_69ED proc near ; CODE XREF: sub_827E+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_67E4 + add sp, 0Eh + or ax, ax + jz short loc_6A17 + jmp loc_6AB3 +; --------------------------------------------------------------------------- + +loc_6A17: ; CODE XREF: sub_69ED+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_6AA7 + 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_67E4 + add sp, 0Eh + or ax, ax + jnz short loc_6AB3 + 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_6AEA + 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_67E4 + add sp, 0Eh + or ax, ax + jnz short loc_6AB3 + mov ax, [bp+var_2] + and ax, 3000h + mov dx, [bp+var_4] + and dx, 3000h + cmp ax, dx + jnz short loc_6AEA + +loc_6AA7: ; CODE XREF: sub_69ED+42j + test byte ptr [bp+var_4], 10h + jz short loc_6AEA + test [bp+arg_C], 1 + jz short loc_6AB8 + +loc_6AB3: ; CODE XREF: sub_69ED+27j sub_69ED+67j ... + mov ax, 1 + jmp short loc_6AEC +; --------------------------------------------------------------------------- + +loc_6AB8: ; CODE XREF: sub_69ED+C4j + test byte ptr [bp+var_2], 10h + jz short loc_6AEA + test byte ptr [bp+var_2+1], 20h + jz short loc_6ACA + test byte ptr [bp+var_4+1], 20h + jz short loc_6AEA + +loc_6ACA: ; CODE XREF: sub_69ED+D5j + test byte ptr [bp+var_4], 40h + jz short loc_6AEA + mov ax, [bp+var_2] + and ax, 300h + mov dx, [bp+var_4] + and dx, 300h + cmp ax, dx + jnz short loc_6AE6 + mov ax, 1 + jmp short loc_6AE8 +; --------------------------------------------------------------------------- + +loc_6AE6: ; CODE XREF: sub_69ED+F2j + xor ax, ax + +loc_6AE8: ; CODE XREF: sub_69ED+F7j + jmp short loc_6AEC +; --------------------------------------------------------------------------- + +loc_6AEA: ; CODE XREF: sub_69ED+88j sub_69ED+B8j ... + xor ax, ax + +loc_6AEC: ; CODE XREF: sub_69ED+C9j + ; sub_69ED:loc_6AE8j + pop di + pop si + mov sp, bp + pop bp + retn +sub_69ED endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6AF2 proc near ; CODE XREF: sub_7117+263p + ; sub_7DC3+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_6B1D + or [bp+var_4], 2 + +loc_6B1D: ; CODE XREF: sub_6AF2+25j + test byte ptr [bp+arg_C], 2 + jz short loc_6B31 + or [bp+var_4], 4 + test byte ptr [bp+arg_C+1], 1 + jnz short loc_6B31 + or [bp+var_4], 20h + +loc_6B31: ; CODE XREF: sub_6AF2+2Fj sub_6AF2+39j + test byte ptr [bp+arg_C], 20h + jz short loc_6B3B + or [bp+var_4], 8 + +loc_6B3B: ; CODE XREF: sub_6AF2+43j + test byte ptr [bp+arg_C], 80h + jz short loc_6B45 + or [bp+var_4], 10h + +loc_6B45: ; CODE XREF: sub_6AF2+4Dj + test byte ptr [bp+arg_C+1], 10h + jnz short loc_6B4E + jmp loc_6CD3 +; --------------------------------------------------------------------------- + +loc_6B4E: ; CODE XREF: sub_6AF2+57j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_6B59 + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6B59: ; CODE XREF: sub_6AF2+62j + add bx, bx + jmp cs:off_6E10[bx] + +loc_6B60: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:off_6E10o + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + add sp, 6 + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6B72: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6DD9 +; --------------------------------------------------------------------------- + +loc_6B84: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_6BAA +; --------------------------------------------------------------------------- + +loc_6B98: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6BAA: ; CODE XREF: sub_6AF2+A4j + add sp, 0Ah + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6BB0: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6BBF: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_4] + push word ptr [bp+arg_0] + call [bp+arg_8] + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6BCE: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_6BF4 +; --------------------------------------------------------------------------- + +loc_6BE2: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6BF4: ; CODE XREF: sub_6AF2+EEj + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6BF7: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + push bx + pop bx + call word ptr [bp+arg_8] + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6C07: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov dx, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + xor ax, ax + +loc_6C0F: ; CODE XREF: sub_6AF2+254j + push bx + pop bx + call [bp+arg_8] + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6C17: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6C25: ; CODE XREF: sub_6AF2+263j + call word ptr [bp+arg_8] + jmp short loc_6C3B +; --------------------------------------------------------------------------- + +loc_6C2A: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6C38: ; CODE XREF: sub_6AF2+272j + call [bp+arg_8] + +loc_6C3B: ; CODE XREF: sub_6AF2+136j + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6C3E: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + call word ptr [bp+arg_8] + jmp short loc_6C58 +; --------------------------------------------------------------------------- + +loc_6C4C: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + xor ax, ax + push ax + +loc_6C55: ; CODE XREF: sub_6AF2+205j + call [bp+arg_8] + +loc_6C58: ; CODE XREF: sub_6AF2+158j + ; sub_6AF2+1FCj + pop cx + pop cx + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6C5D: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + xor ax, ax + push ax + call word ptr [bp+arg_8] + add sp, 6 + pop ds + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6C74: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6DD9 +; --------------------------------------------------------------------------- + +loc_6C8B: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_6C94: ; CODE XREF: sub_6AF2+234j + call word ptr [bp+arg_8] + jmp short loc_6CA5 +; --------------------------------------------------------------------------- + +loc_6C99: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + mov si, word ptr [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_4] + +loc_6CA2: ; CODE XREF: sub_6AF2+23Dj + call [bp+arg_8] + +loc_6CA5: ; CODE XREF: sub_6AF2+1A5j + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6CA8: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + push ds + lds si, [bp+arg_0] + xor ax, ax + push ax + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop ds + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6CBC: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+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_6DD9 +; --------------------------------------------------------------------------- + +loc_6CD0: ; CODE XREF: sub_6AF2+69j + ; sub_6AF2+1EEj + ; DATA XREF: ... + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6CD3: ; CODE XREF: sub_6AF2+59j + mov bx, [bp+var_4] + cmp bx, 17h + jbe short loc_6CDE + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6CDE: ; CODE XREF: sub_6AF2+1E7j + add bx, bx + jmp cs:off_6DE0[bx] + +loc_6CE5: ; DATA XREF: seg000:off_6DE0o + push [bp+arg_4] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp loc_6C58 +; --------------------------------------------------------------------------- + +loc_6CF1: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DE2o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_6C55 +; --------------------------------------------------------------------------- + +loc_6CFA: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DE4o + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_8] + jmp short loc_6D1A +; --------------------------------------------------------------------------- + +loc_6D0B: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DE6o + 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_6D1A: ; CODE XREF: sub_6AF2+217j + add sp, 8 + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6D20: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DE8o + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_6C94 +; --------------------------------------------------------------------------- + +loc_6D29: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DEAo + push [bp+arg_4] + push word ptr [bp+arg_0] + jmp loc_6CA2 +; --------------------------------------------------------------------------- + +loc_6D32: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DF0o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + push bx + pop bx + call word ptr [bp+arg_8] + jmp loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6D40: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DF2o + mov ax, word ptr [bp+arg_0] + mov bx, [bp+arg_4] + jmp loc_6C0F +; --------------------------------------------------------------------------- + +loc_6D49: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DECo ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6C25 +; --------------------------------------------------------------------------- + +loc_6D58: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6DEEo ... + push [bp+arg_6] + push [bp+arg_4] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + jmp loc_6C38 +; --------------------------------------------------------------------------- + +loc_6D67: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E00o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop cx + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6D73: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E02o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + pop cx + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6D7F: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E04o + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop cx + pop cx + pop ds + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6D91: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E06o + 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_6DD9 +; --------------------------------------------------------------------------- + +loc_6DA3: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E08o + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call word ptr [bp+arg_8] + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6DAE: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E0Ao + mov si, word ptr [bp+arg_0] + push [bp+arg_4] + call [bp+arg_8] + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6DB9: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E0Co + push ds + lds si, [bp+arg_0] + push [bp+arg_6] + push [bp+arg_4] + call word ptr [bp+arg_8] + pop ds + jmp short loc_6DD9 +; --------------------------------------------------------------------------- + +loc_6DC9: ; CODE XREF: sub_6AF2+1EEj + ; DATA XREF: seg000:6E0Eo + 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_6DD9: ; CODE XREF: sub_6AF2+64j sub_6AF2+7Dj ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6AF2 endp + +; --------------------------------------------------------------------------- +off_6DE0 dw offset loc_6CE5 ; DATA XREF: sub_6AF2+1EEr + dw offset loc_6CF1 + dw offset loc_6CFA + dw offset loc_6D0B + dw offset loc_6D20 + dw offset loc_6D29 + dw offset loc_6D49 + dw offset loc_6D58 + dw offset loc_6D32 + dw offset loc_6D40 + dw offset loc_6D49 + dw offset loc_6D58 + dw offset loc_6DD9 + dw offset loc_6DD9 + dw offset loc_6DD9 + dw offset loc_6DD9 + dw offset loc_6D67 + dw offset loc_6D73 + dw offset loc_6D7F + dw offset loc_6D91 + dw offset loc_6DA3 + dw offset loc_6DAE + dw offset loc_6DB9 + dw offset loc_6DC9 +off_6E10 dw offset loc_6B60 ; DATA XREF: sub_6AF2+69r + dw offset loc_6B72 + dw offset loc_6B84 + dw offset loc_6B98 + dw offset loc_6BB0 + dw offset loc_6BBF + dw offset loc_6BCE + dw offset loc_6BE2 + dw offset loc_6BF7 + dw offset loc_6C07 + dw offset loc_6C17 + dw offset loc_6C2A + dw offset loc_6CD0 + dw offset loc_6CD0 + dw offset loc_6CD0 + dw offset loc_6CD0 + dw offset loc_6C3E + dw offset loc_6C4C + dw offset loc_6C5D + dw offset loc_6C74 + dw offset loc_6C8B + dw offset loc_6C99 + dw offset loc_6CA8 + dw offset loc_6CBC + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6E40 proc near ; CODE XREF: sub_7117+2BCp + ; sub_7ACF+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_6E53 + mov ax, 2 + jmp short loc_6E55 +; --------------------------------------------------------------------------- + +loc_6E53: ; CODE XREF: sub_6E40+Cj + xor ax, ax + +loc_6E55: ; CODE XREF: sub_6E40+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_6E7B + or [bp+var_6], 2 + +loc_6E7B: ; CODE XREF: sub_6E40+35j + test byte ptr [bp+arg_8], 2 + jz short loc_6E8F + or [bp+var_6], 4 + test byte ptr [bp+arg_8+1], 1 + jnz short loc_6E8F + or [bp+var_6], 20h + +loc_6E8F: ; CODE XREF: sub_6E40+3Fj sub_6E40+49j + test byte ptr [bp+arg_8], 20h + jz short loc_6E99 + or [bp+var_6], 8 + +loc_6E99: ; CODE XREF: sub_6E40+53j + test byte ptr [bp+arg_8], 80h + jz short loc_6EA3 + or [bp+var_6], 10h + +loc_6EA3: ; CODE XREF: sub_6E40+5Dj + mov bx, [bp+var_6] + cmp bx, 17h + jbe short loc_6EAE + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6EAE: ; CODE XREF: sub_6E40+69j + add bx, bx + jmp cs:off_6FC8[bx] + +loc_6EB5: ; DATA XREF: seg000:off_6FC8o + push [bp+var_2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_4] + pop cx + pop cx + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6EC3: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FCAo + push [bp+var_2] + push word ptr [bp+arg_0] + call [bp+arg_4] + pop cx + pop cx + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6ED1: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FCCo + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_4] + add sp, 6 + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6EE3: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FCEo + 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_6FC1 +; --------------------------------------------------------------------------- + +loc_6EF5: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FD0o + push [bp+var_2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_4] + jmp short loc_6F5B +; --------------------------------------------------------------------------- + +loc_6F00: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FD2o + push [bp+var_2] + push word ptr [bp+arg_0] + jmp short loc_6F58 +; --------------------------------------------------------------------------- + +loc_6F08: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FD4o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call word ptr [bp+arg_4] + jmp short loc_6F22 +; --------------------------------------------------------------------------- + +loc_6F16: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FD6o + push [bp+var_2] + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + call [bp+arg_4] + +loc_6F22: ; CODE XREF: sub_6E40+D4j + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F25: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FD8o + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call word ptr [bp+arg_4] + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F33: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FDAo + mov bx, word ptr [bp+arg_0] + mov ax, [bp+var_2] + push bx + pop bx + call [bp+arg_4] + jmp loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F41: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FDCo + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + call word ptr [bp+arg_4] + jmp short loc_6F5B +; --------------------------------------------------------------------------- + +loc_6F4F: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FDEo + push word ptr [bp+arg_0+2] + push word ptr [bp+arg_0] + mov ax, [bp+var_2] + +loc_6F58: ; CODE XREF: sub_6E40+C6j + call [bp+arg_4] + +loc_6F5B: ; CODE XREF: sub_6E40+BEj + ; sub_6E40+10Dj + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F5D: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FE8o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call word ptr [bp+arg_4] + pop cx + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F69: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FEAo + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F75: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FECo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call word ptr [bp+arg_4] + pop cx + pop ds + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F83: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FEEo + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop cx + pop ds + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F91: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FF0o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call word ptr [bp+arg_4] + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6F9C: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FF2o + mov si, word ptr [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6FA7: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FF4o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call word ptr [bp+arg_4] + pop ds + jmp short loc_6FC1 +; --------------------------------------------------------------------------- + +loc_6FB4: ; CODE XREF: sub_6E40+70j + ; DATA XREF: seg000:6FF6o + push ds + lds si, [bp+arg_0] + push [bp+var_2] + call [bp+arg_4] + pop ds + jmp short $+2 + +loc_6FC1: ; CODE XREF: sub_6E40+6Bj sub_6E40+70j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6E40 endp + +; --------------------------------------------------------------------------- +off_6FC8 dw offset loc_6EB5 ; DATA XREF: sub_6E40+70r + dw offset loc_6EC3 + dw offset loc_6ED1 + dw offset loc_6EE3 + dw offset loc_6EF5 + dw offset loc_6F00 + dw offset loc_6F08 + dw offset loc_6F16 + dw offset loc_6F25 + dw offset loc_6F33 + dw offset loc_6F41 + dw offset loc_6F4F + dw offset loc_6FC1 + dw offset loc_6FC1 + dw offset loc_6FC1 + dw offset loc_6FC1 + dw offset loc_6F5D + dw offset loc_6F69 + dw offset loc_6F75 + dw offset loc_6F83 + dw offset loc_6F91 + dw offset loc_6F9C + dw offset loc_6FA7 + dw offset loc_6FB4 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_6FF8 proc near ; CODE XREF: sub_8C3F+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_7023 + or [bp+var_4], 2 + +loc_7023: ; CODE XREF: sub_6FF8+25j + test byte ptr [bp+arg_8], 2 + jz short loc_702D + or [bp+var_4], 4 + +loc_702D: ; CODE XREF: sub_6FF8+2Fj + test byte ptr [bp+arg_8], 20h + jz short loc_7037 + or [bp+var_4], 8 + +loc_7037: ; CODE XREF: sub_6FF8+39j + mov bx, [bp+var_4] + cmp bx, 0Bh + ja short loc_70AA + add bx, bx + jmp cs:off_70B1[bx] + +loc_7046: ; DATA XREF: seg000:off_70B1o + push [bp+arg_0] + call word ptr [bp+arg_4] + pop cx + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_704F: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70B3o + push [bp+arg_0] + call [bp+arg_4] + pop cx + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_7058: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70B5o + push [bp+arg_2] + push [bp+arg_0] + call word ptr [bp+arg_4] + jmp short loc_706C +; --------------------------------------------------------------------------- + +loc_7063: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70B7o + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_706C: ; CODE XREF: sub_6FF8+69j + pop cx + pop cx + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_7070: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70B9o + push [bp+arg_0] + call word ptr [bp+arg_4] + jmp short loc_707E +; --------------------------------------------------------------------------- + +loc_7078: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70BBo + push [bp+arg_0] + call [bp+arg_4] + +loc_707E: ; CODE XREF: sub_6FF8+7Ej + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_7080: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70C1o + mov bx, [bp+arg_0] + push bx + pop bx + call word ptr [bp+arg_4] + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_708A: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70C3o + mov bx, [bp+arg_0] + push bx + pop bx + call [bp+arg_4] + jmp short loc_70AA +; --------------------------------------------------------------------------- + +loc_7094: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70BDo ... + push [bp+arg_2] + push [bp+arg_0] + call word ptr [bp+arg_4] + jmp short loc_70A8 +; --------------------------------------------------------------------------- + +loc_709F: ; CODE XREF: sub_6FF8+49j + ; DATA XREF: seg000:70BFo ... + push [bp+arg_2] + push [bp+arg_0] + call [bp+arg_4] + +loc_70A8: ; CODE XREF: sub_6FF8+A5j + jmp short $+2 + +loc_70AA: ; CODE XREF: sub_6FF8+45j sub_6FF8+55j ... + pop ds + pop di + pop si + mov sp, bp + pop bp + retn +sub_6FF8 endp + +; --------------------------------------------------------------------------- +off_70B1 dw offset loc_7046 ; DATA XREF: sub_6FF8+49r + dw offset loc_704F + dw offset loc_7058 + dw offset loc_7063 + dw offset loc_7070 + dw offset loc_7078 + dw offset loc_7094 + dw offset loc_709F + dw offset loc_7080 + dw offset loc_708A + dw offset loc_7094 + dw offset loc_709F + db 4 dup(0), 87h, 73h + dw seg seg000 + db 14h dup(0), 0E0h, 73h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0C9h, 70h + dw seg seg000 + db 2 dup(0), 4, 3 dup(0), 3, 0, 0E1h, 70h + 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_7117(int, int, void *src, int, int, int, int, int, int, int, int, int, int, int, int) +sub_7117 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, 70F9h + 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_71A3 +; --------------------------------------------------------------------------- + +loc_7180: ; CODE XREF: sub_7117+93j + les bx, ss:16h + mov ax, es:[bx+1Ch] + add ax, 7Fh ; '' + cmp ax, word ptr [bp+var_38] + jbe short loc_71A0 + 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_71A0: ; CODE XREF: sub_7117+78j + inc word ptr [bp+var_34] + +loc_71A3: ; CODE XREF: sub_7117+67j + les bx, [bp+var_34] + cmp byte ptr es:[bx], 0 + jnz short loc_7180 + 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_7200 + les bx, [bp+var_22] + mov ax, es:[bx+8] + jmp short loc_7202 +; --------------------------------------------------------------------------- + +loc_7200: ; CODE XREF: sub_7117+DEj + xor ax, ax + +loc_7202: ; CODE XREF: sub_7117+E7j + mov [bp+var_2C], ax + test byte ptr [bp+var_2A], 30h + jz short loc_721C + 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_721C: ; CODE XREF: sub_7117+F2j + mov ax, [bp+n] + add ax, 3Ah ; ':' + push ax + push cs + call near ptr sub_6958 + 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], 69B4h + 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_73A6 + 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_6AF2 + add sp, 0Eh + mov [bp+var_12], 0 + jmp short loc_7391 +; --------------------------------------------------------------------------- + align 2 + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7391: ; CODE XREF: sub_7117+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_73A6: ; CODE XREF: sub_7117+22Dj + cmp [bp+arg_1E], 0 + jnz short loc_73EA + test byte ptr [bp+var_2C], 2 + jz short loc_73EA + 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_6E40 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_73EA +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + align 2 + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_73EA: ; CODE XREF: sub_7117+293j + ; sub_7117+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_7117 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:40D4p + ; 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_7117 + 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_74DA + nop + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + +loc_74DA: ; 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_7526 + mov dx, word ptr [bp+var_8+2] + mov ax, word ptr [bp+var_8] + add ax, 3Ah ; ':' + jmp short loc_752F +; --------------------------------------------------------------------------- + +loc_7526: ; CODE XREF: _ReThrowException(uint,uchar *)+7Aj + les bx, [bp+var_8] + mov ax, es:[bx+36h] + mov dx, ss + +loc_752F: ; 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_7117 + 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_7549 proc far ; CODE XREF: sub_754E+22p + push si + push di + pop di + pop si + retf +sub_7549 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_754E 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_7568 + inc [bp+var_4] + +loc_7568: ; CODE XREF: sub_754E+15j + mov ax, ss:14h + mov [bp+var_2], ax + push cs + call near ptr sub_7549 + jmp short loc_75B6 +; --------------------------------------------------------------------------- + +loc_7575: ; CODE XREF: sub_754E+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_75A0 + mov ax, dx + jmp short loc_75D4 +; --------------------------------------------------------------------------- + +loc_75A0: ; CODE XREF: sub_754E+4Cj + cmp [bp+var_4], 0 + jz short loc_75AD + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_75AD: ; CODE XREF: sub_754E+56j + mov bx, [bp+var_2] + mov ax, ss:[bx] + mov [bp+var_2], ax + +loc_75B6: ; CODE XREF: sub_754E+25j + cmp [bp+var_2], 0FFFFh + jz short loc_75C4 + mov ax, [bp+var_2] + cmp ax, [bp+arg_6] + jnz short loc_7575 + +loc_75C4: ; CODE XREF: sub_754E+6Cj + cmp [bp+var_4], 0 + jz short loc_75D1 + mov ax, [bp+var_2] + mov ss:14h, ax + +loc_75D1: ; CODE XREF: sub_754E+7Aj + mov ax, 1 + +loc_75D4: ; CODE XREF: sub_754E+50j + pop di + pop si + mov sp, bp + pop bp + retf +sub_754E 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_7605 + 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_7605: ; 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_754E + 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_7621 proc far ; CODE XREF: _RaiseException+16p + push si + push di + pop di + pop si + retf +sub_7621 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +_RaiseException proc far ; CODE XREF: sub_7117+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 7A98 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_7621 + pop cx + pushf + pop ax + mov word ptr [bp+src+2], ax + cmp byte ptr word_11CBE, 3 + jnb short loc_764F + jmp loc_7705 +; --------------------------------------------------------------------------- + +loc_764F: ; 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_774E +; --------------------------------------------------------------------------- + +loc_7705: ; 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_774E: ; 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_777F + cmp [bp+arg_0], 0FACEh + jnz short loc_777F + les bx, [bp+arg_C] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + jmp short loc_778D +; --------------------------------------------------------------------------- + +loc_777F: ; 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_778D: ; 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_785E + mov [bp+arg_A], 0 + mov [bp+arg_8], 0 + +loc_785E: ; CODE XREF: _RaiseException+22Cj + cmp [bp+arg_A], 0 + jb short loc_7876 + ja short loc_786C + cmp [bp+arg_8], 0Fh + jbe short loc_7876 + +loc_786C: ; CODE XREF: _RaiseException+23Ej + mov [bp+arg_A], 0 + mov [bp+arg_8], 0Fh + +loc_7876: ; CODE XREF: _RaiseException+23Cj + ; _RaiseException+244j + mov ax, [bp+arg_8] + mov [bp+var_48], ax + mov [bp+var_2], 0 + jmp short loc_78AC +; --------------------------------------------------------------------------- + +loc_7883: ; 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_78AC: ; CODE XREF: _RaiseException+25Bj + mov ax, [bp+var_2] + xor dx, dx + cmp dx, [bp+arg_A] + jb short loc_7883 + jnz short loc_78BD + cmp ax, [bp+arg_8] + jb short loc_7883 + +loc_78BD: ; 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_754E + add sp, 8 + or ax, ax + jnz short loc_7908 + test byte ptr [bp+arg_4], 1 + jz short loc_7928 + 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_78BD +; --------------------------------------------------------------------------- + +loc_7908: ; 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_754E + add sp, 8 + or ax, ax + jz short loc_7928 + jmp loc_7A93 +; --------------------------------------------------------------------------- + +loc_7928: ; CODE XREF: _RaiseException+2B4j + ; _RaiseException+2FDj + cmp byte ptr word_11CBE, 3 + jnb short loc_7932 + jmp loc_7A12 +; --------------------------------------------------------------------------- + +loc_7932: ; 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_7A98 +; --------------------------------------------------------------------------- + +loc_7A12: ; 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_7A98 +; --------------------------------------------------------------------------- + +loc_7A93: ; CODE XREF: _RaiseException+2FFj + nop + push cs + call near ptr ___call_terminate +_RaiseException endp + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR _RaiseException + +loc_7A98: ; 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), 7, 7Bh + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 0A5h, 7Ah + 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_7ACF proc near ; CODE XREF: sub_7B1F+58p sub_7B1F+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, 7ABDh + 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_6E40 + add sp, 0Ch + mov [bp+var_12], 0 + jmp short loc_7B11 +; --------------------------------------------------------------------------- + align 2 + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + db 90h +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_7B11: ; CODE XREF: sub_7ACF+36j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retn +sub_7ACF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7B1F proc near ; CODE XREF: _CatchCleanup(void)+5Ap + ; sub_8069+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_7B9A + les bx, [bp+arg_0] + test byte ptr es:[bx+16h], 2 + jz short loc_7B92 + 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_7ACF + 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_7B92: ; CODE XREF: sub_7B1F+1Aj + les bx, [bp+arg_0] + mov byte ptr es:[bx+38h], 0 + +loc_7B9A: ; CODE XREF: sub_7B1F+10j + les bx, [bp+arg_0] + cmp byte ptr es:[bx+39h], 0 + jz short loc_7BF1 + 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_7BE9 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_7BE9 + 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_7ACF + add sp, 0Ah + +loc_7BE9: ; CODE XREF: sub_7B1F+9Ej sub_7B1F+A8j + les bx, [bp+arg_0] + mov byte ptr es:[bx+39h], 0 + +loc_7BF1: ; CODE XREF: sub_7B1F+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_7B1F 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_7117+277p ... + +var_6 = word ptr -6 +var_4 = dword ptr -4 +arg_0 = dword ptr 6 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + sub sp, 6 + push si + push di + les bx, ss:16h + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + les bx, [bp+var_4] + mov dx, es:[bx+2] + mov ax, es:[bx] + les bx, ss:16h + mov es:[bx+2], dx + mov es:[bx], ax + les bx, [bp+var_4] + mov ax, es:[bx+24h] + mov [bp+var_6], ax + mov bx, [bp+var_6] + les ax, ss:[bx+arg_0] + mov bx, [bp+var_6] + add ax, ss:[bx+arg_6] + mov bx, ax + mov ax, es:[bx] + mov bx, [bp+var_6] + mov ss:[bx+arg_6], ax + push word ptr [bp+var_4+2] + push word ptr [bp+var_4] + call sub_7B1F + 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_7C74 proc near ; CODE XREF: sub_7C74+A0p sub_7D40+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_7C7C: ; CODE XREF: sub_7C74+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_7C99 + xor ax, ax + jmp loc_7D3A +; --------------------------------------------------------------------------- + +loc_7C99: ; CODE XREF: sub_7C74+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_7CC5 + 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_7CC5: ; CODE XREF: sub_7C74+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_65F4 + add sp, 8 + or ax, ax + jnz short loc_7D1E + les bx, [bp+var_4] + test byte ptr es:[bx+2], 2 + jz short loc_7D33 + 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_7D33 + 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_7C74 + add sp, 0Ch + or ax, ax + jz short loc_7D33 + +loc_7D1E: ; CODE XREF: sub_7C74+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_7D3A +; --------------------------------------------------------------------------- + +loc_7D33: ; CODE XREF: sub_7C74+70j sub_7C74+8Bj ... + add word ptr [bp+arg_0], 8 + jmp loc_7C7C +; --------------------------------------------------------------------------- + +loc_7D3A: ; CODE XREF: sub_7C74+22j sub_7C74+BDj + pop di + pop si + mov sp, bp + pop bp + retn +sub_7C74 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7D40 proc far ; CODE XREF: sub_7DC3+159p + ; sub_7DC3+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_7DB1 + 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_7C74 + add sp, 0Ch + or ax, ax + jnz short loc_7DB1 + 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_7C74 + add sp, 0Ch + or ax, ax + jz short loc_7DB9 + +loc_7DB1: ; CODE XREF: sub_7D40+Ej sub_7D40+3Ej + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + jmp short loc_7DBD +; --------------------------------------------------------------------------- + +loc_7DB9: ; CODE XREF: sub_7D40+6Fj + xor dx, dx + xor ax, ax + +loc_7DBD: ; CODE XREF: sub_7D40+77j + pop di + pop si + mov sp, bp + pop bp + retf +sub_7D40 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_7DC3 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_7DF2 + jmp loc_8063 +; --------------------------------------------------------------------------- + +loc_7DF2: ; CODE XREF: sub_7DC3+2Aj + les bx, [bp+arg_0] + test byte ptr es:[bx+8], 80h + jz short loc_7DFF + jmp loc_8063 +; --------------------------------------------------------------------------- + +loc_7DFF: ; CODE XREF: sub_7DC3+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_7E73 + 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_7E73: ; CODE XREF: sub_7DC3+96j + test cl, 10h + jz short loc_7E9B + les bx, [bp+arg_6] + test byte ptr es:[bx+0Ch], 1 + jz short loc_7E9B + 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_7FC6 +; --------------------------------------------------------------------------- + +loc_7E9B: ; CODE XREF: sub_7DC3+B3j sub_7DC3+BDj + test dl, 1 + jnz short loc_7EA3 + jmp loc_7F47 +; --------------------------------------------------------------------------- + +loc_7EA3: ; CODE XREF: sub_7DC3+DBj + test cl, 30h + jnz short loc_7EAB + jmp loc_7F47 +; --------------------------------------------------------------------------- + +loc_7EAB: ; CODE XREF: sub_7DC3+E3j + test cl, 20h + jz short loc_7EB2 + jmp short loc_7ED5 +; --------------------------------------------------------------------------- + +loc_7EB2: ; CODE XREF: sub_7DC3+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_7EDC + mov ax, word ptr [bp+src] + mov word ptr [bp+src+2], ds + mov word ptr [bp+src], ax + +loc_7ED5: ; CODE XREF: sub_7DC3+EDj + mov [bp+var_14], 1 + jmp short $+2 + +loc_7EDC: ; CODE XREF: sub_7DC3+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_65F4 + add sp, 8 + or ax, ax + jnz short loc_7F3D + 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_7D40 + 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_7F38 + cmp ax, [bp+var_18] + jz short loc_7F3D + +loc_7F38: ; CODE XREF: sub_7DC3+16Ej + mov [bp+var_14], 1 + +loc_7F3D: ; CODE XREF: sub_7DC3+133j + ; sub_7DC3+173j + push [bp+n] + push ss + lea ax, [bp+src] + jmp loc_8011 +; --------------------------------------------------------------------------- + +loc_7F47: ; CODE XREF: sub_7DC3+DDj sub_7DC3+E5j + les bx, [bp+arg_6] + test byte ptr es:[bx+14h], 1 + jz short loc_7FCD + 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_65F4 + add sp, 8 + or ax, ax + jnz short loc_7F96 + 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_7D40 + add sp, 0Ch + mov word ptr [bp+src+2], dx + mov word ptr [bp+src], ax + mov [bp+var_14], 1 + +loc_7F96: ; CODE XREF: sub_7DC3+1A8j + les bx, [bp+var_8] + test byte ptr es:[bx+8], 1 + jz short loc_8014 + 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_6AF2 + add sp, 0Eh + +loc_7FC6: ; CODE XREF: sub_7DC3+D5j + ; sub_7DC3+227j + mov [bp+var_14], 1 + jmp short loc_802D +; --------------------------------------------------------------------------- + +loc_7FCD: ; CODE XREF: sub_7DC3+18Cj + test cl, 20h + jz short loc_7FEC + 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_7FC6 +; --------------------------------------------------------------------------- + +loc_7FEC: ; CODE XREF: sub_7DC3+20Dj + test cl, 10h + jz short loc_8014 + les bx, [bp+arg_6] + mov ax, es:[bx+0Eh] + cmp ax, [bp+n] + jz short loc_8014 + les bx, [bp+src] + +loc_8000: ; DATA XREF: sub_E354+1o + 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_8011: ; CODE XREF: sub_7DC3+181j + push ax + jmp short loc_801D +; --------------------------------------------------------------------------- + +loc_8014: ; CODE XREF: sub_7DC3+1DBj + ; sub_7DC3+22Cj ... + push [bp+n] ; n + push word ptr [bp+src+2] + push word ptr [bp+src] ; src + +loc_801D: ; CODE XREF: sub_7DC3+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_802D: ; CODE XREF: sub_7DC3+208j + cmp [bp+var_14], 0 + jnz short loc_8063 + les bx, [bp+var_8] + test byte ptr es:[bx+8], 2 + jz short loc_805B + 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_7ACF + add sp, 0Ah + +loc_805B: ; CODE XREF: sub_7DC3+278j + les bx, [bp+arg_6] + mov byte ptr es:[bx+38h], 0 + +loc_8063: ; CODE XREF: sub_7DC3+2Cj sub_7DC3+39j ... + pop di + pop si + mov sp, bp + pop bp + retn +sub_7DC3 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8069 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_820E +; --------------------------------------------------------------------------- + +loc_80C1: ; CODE XREF: sub_8069+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_80FC + jmp loc_820B +; --------------------------------------------------------------------------- + +loc_80FC: ; CODE XREF: sub_8069+8Ej + add bx, bx + jmp cs:off_8228[bx] + +loc_8103: ; DATA XREF: seg000:off_8228o + les bx, [bp+var_4] + add bx, [bp+var_12] + mov dx, es:[bx+6] + mov ax, es:[bx+4] + mov word ptr dword_141B4+2, dx + mov word ptr dword_141B4, 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_141B4 + pop bp + pop ds + mov bx, [bp+arg_0] + mov ss:[bx+arg_E], 0 + jmp loc_820B +; --------------------------------------------------------------------------- + +loc_813E: ; CODE XREF: sub_8069+95j + ; DATA XREF: seg000:8230o + add [bp+var_12], 4 + mov dx, ss:18h + mov ax, ss:16h + jmp short loc_816D +; --------------------------------------------------------------------------- + +loc_814D: ; CODE XREF: sub_8069+11Cj + les bx, [bp+var_16] + assume es:nothing + mov ax, es:[bx+24h] + cmp ax, [bp+arg_0] + jnz short loc_8167 + les bx, [bp+var_16] + mov ax, es:[bx+2Ah] + cmp ax, [bp+var_6] + jnz short loc_8167 + jmp short loc_8187 +; --------------------------------------------------------------------------- + +loc_8167: ; CODE XREF: sub_8069+EEj sub_8069+FAj + mov dx, word ptr [bp+var_16+2] + mov ax, word ptr [bp+var_16] + +loc_816D: ; CODE XREF: sub_8069+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_814D + +loc_8187: ; CODE XREF: sub_8069+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_7B1F + 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_820B +; --------------------------------------------------------------------------- + +loc_81C0: ; CODE XREF: sub_8069+95j + ; DATA XREF: seg000:8232o + 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_8C3F + add sp, 0Ch + mov [bp+var_E], ax + jmp short $+2 + +loc_820B: ; CODE XREF: sub_8069+90j sub_8069+95j ... + mov ax, [bp+var_8] + +loc_820E: ; CODE XREF: sub_8069+55j + mov [bp+var_6], ax + cmp [bp+var_6], 0 + jz short loc_8222 + mov ax, [bp+var_6] + cmp ax, [bp+arg_2] + jz short loc_8222 + jmp loc_80C1 +; --------------------------------------------------------------------------- + +loc_8222: ; CODE XREF: sub_8069+1ACj + ; sub_8069+1B4j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8069 endp + +; --------------------------------------------------------------------------- +off_8228 dw offset loc_8103 ; DATA XREF: sub_8069+95r + dw offset loc_820B + dw offset loc_820B + dw offset loc_820B + dw offset loc_813E + dw offset loc_81C0 + +; =============== 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_8069 + 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_8069 + 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_827E 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_82EC +; --------------------------------------------------------------------------- + +loc_8297: ; CODE XREF: sub_827E+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_82E0 + 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_69ED + add sp, 10h + or ax, ax + jz short loc_82E8 + +loc_82E0: ; CODE XREF: sub_827E+30j + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_82FC +; --------------------------------------------------------------------------- + +loc_82E8: ; CODE XREF: sub_827E+60j + add word ptr [bp+var_4], 10h + +loc_82EC: ; CODE XREF: sub_827E+17j + les bx, [bp+var_4] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8297 + xor dx, dx + xor ax, ax + +loc_82FC: ; CODE XREF: sub_827E+68j + pop di + pop si + mov sp, bp + pop bp + retn +sub_827E 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_8396 + jmp loc_843E +; --------------------------------------------------------------------------- + +loc_8396: ; CODE XREF: __ExceptionHandler+87j + xor ax, ax + push ax + push [bp+var_4] + call sub_8069 + pop cx + pop cx + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_83AF + jmp loc_8671 +; --------------------------------------------------------------------------- + +loc_83AF: ; CODE XREF: __ExceptionHandler+A0j + cmp word ptr ss:[bx], 0FACEh + jz short loc_83B9 + jmp loc_8671 +; --------------------------------------------------------------------------- + +loc_83B9: ; 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_83D4 + jmp loc_8671 +; --------------------------------------------------------------------------- + +loc_83D4: ; CODE XREF: __ExceptionHandler+C5j + jmp short loc_8412 +; --------------------------------------------------------------------------- + +loc_83D6: ; 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_69ED + add sp, 10h + or ax, ax + jz short loc_840E + jmp loc_8671 +; --------------------------------------------------------------------------- + +loc_840E: ; CODE XREF: __ExceptionHandler+FFj + add word ptr [bp+var_20], 4 + +loc_8412: ; CODE XREF: __ExceptionHandler:loc_83D4j + les bx, [bp+var_20] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_83D6 + 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_8671 +; --------------------------------------------------------------------------- + +loc_843E: ; CODE XREF: __ExceptionHandler+89j + mov bx, [bp+var_4] + mov ax, ss:[bx+arg_6] + jmp loc_8665 +; --------------------------------------------------------------------------- + +loc_8448: ; 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_8479 + jmp loc_8662 +; --------------------------------------------------------------------------- + +loc_8479: ; CODE XREF: __ExceptionHandler+16Aj + add bx, bx + jmp cs:off_867A[bx] + +loc_8480: ; DATA XREF: seg000:8680o + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jz short loc_848E + jmp loc_8662 +; --------------------------------------------------------------------------- + +loc_848E: ; CODE XREF: __ExceptionHandler+17Fj + cmp word ptr ss:[bx], 0FACEh + jz short loc_8498 + jmp loc_8662 +; --------------------------------------------------------------------------- + +loc_8498: ; 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_827E + 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_84D2 + jmp loc_8662 +; --------------------------------------------------------------------------- + +loc_84D2: ; 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_8506: ; 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_8069 + 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_8558 + 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_7DC3 + add sp, 10h + +loc_8558: ; 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_8662 +; --------------------------------------------------------------------------- + +loc_8571: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:867Co + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_8586 + cmp word ptr ss:[bx], 0FACEh + jnz short loc_8586 + jmp loc_8662 +; --------------------------------------------------------------------------- + +loc_8586: ; 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_141B8+2, dx + mov word ptr dword_141B8, 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_141B8 + pop bp + pop ds + pop si + mov [bp+var_38], ax + jmp short loc_861D +; --------------------------------------------------------------------------- + +loc_85E8: ; CODE XREF: __ExceptionHandler+171j + ; DATA XREF: seg000:867Eo + mov bx, [bp+var_2] + cmp word ptr ss:[bx+2], 0EEFh + jnz short loc_85FC + cmp word ptr ss:[bx], 0FACEh + jnz short loc_85FC + jmp short loc_8662 +; --------------------------------------------------------------------------- + +loc_85FC: ; 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_861D: ; CODE XREF: __ExceptionHandler+2DCj + cmp [bp+var_38], 0 + jge short loc_863B + mov bx, [bp+var_2] + test byte ptr ss:[bx+4], 1 + jz short loc_8637 + mov bx, [bp+var_4] + mov ax, [bp+var_14] + mov ss:[bx+arg_6], ax + +loc_8637: ; CODE XREF: __ExceptionHandler+321j + xor ax, ax + jmp short loc_8674 +; --------------------------------------------------------------------------- + +loc_863B: ; CODE XREF: __ExceptionHandler+317j + cmp [bp+var_38], 0 + jnz short loc_8643 + jmp short loc_8662 +; --------------------------------------------------------------------------- + +loc_8643: ; 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_8506 +; --------------------------------------------------------------------------- + +loc_8662: ; CODE XREF: __ExceptionHandler+16Cj + ; __ExceptionHandler+171j ... + mov ax, [bp+var_14] + +loc_8665: ; CODE XREF: __ExceptionHandler+13Bj + mov [bp+var_12], ax + cmp [bp+var_12], 0 + jz short loc_8671 + jmp loc_8448 +; --------------------------------------------------------------------------- + +loc_8671: ; CODE XREF: __ExceptionHandler+A2j + ; __ExceptionHandler+ACj ... + mov ax, 1 + +loc_8674: ; CODE XREF: __ExceptionHandler+32Fj + pop di + pop si + mov sp, bp + pop bp + retf +__ExceptionHandler endp + +; --------------------------------------------------------------------------- +off_867A dw offset loc_8662 ; DATA XREF: __ExceptionHandler+171r + dw offset loc_8571 + dw offset loc_85E8 + dw offset loc_8480 + dw offset loc_8662 + dw offset loc_8662 + db 4 dup(0), 19h, 87h + dw seg seg000 + db 14h dup(0), 29h, 87h + dw seg seg000 + db 14h dup(0), 0E2h, 0FFh, 2 dup(0), 3, 0, 9Eh, 86h + dw seg seg000 + db 2 dup(0), 4, 0, 6, 0, 3, 0, 2 dup(86h) + 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_86D4 proc far ; CODE XREF: sub_87C1+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, 86B6h + 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_6E40 + add sp, 0Ch + mov [bp+var_12], 6 + jmp short loc_8722 +; --------------------------------------------------------------------------- + align 2 + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_8722: ; CODE XREF: sub_86D4+43j + mov [bp+var_12], 0 + jmp short loc_8732 +; --------------------------------------------------------------------------- + align 2 + push cs + call near ptr ___call_terminate +; --------------------------------------------------------------------------- + push cs + call near ptr @_CatchCleanup$qv ; _CatchCleanup(void) + +loc_8732: ; CODE XREF: sub_86D4+53j + push [bp+var_1E] + nop + push cs + call near ptr ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_86D4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8740 proc far ; CODE XREF: sub_87C1+DCp + ; sub_87C1+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_87AF +; --------------------------------------------------------------------------- + +loc_874D: ; CODE XREF: sub_8740+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_8775 + 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_8775: ; CODE XREF: sub_8740+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_87AF + 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_87C1 + add sp, 10h + xor cx, cx + +loc_87AF: ; CODE XREF: sub_8740+Bj sub_8740+4Dj + sub word ptr [bp+arg_4], 8 + mov ax, word ptr [bp+arg_4] + cmp ax, [bp+arg_8] + jnb short loc_874D + pop di + pop si + mov sp, bp + pop bp + retf +sub_8740 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_87C1 proc far ; CODE XREF: sub_8740+67p + ; sub_87C1+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_87D8 + les bx, [bp+arg_4] + mov ax, es:[bx+1Ah] + jmp short loc_87DF +; --------------------------------------------------------------------------- + +loc_87D8: ; CODE XREF: sub_87C1+Cj + les bx, [bp+arg_4] + mov ax, es:[bx+1Ch] + +loc_87DF: ; CODE XREF: sub_87C1+15j + mov [bp+var_1A], 0 + mov [bp+var_1C], ax + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_8801 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, [bp+var_1A] + jb short loc_881A + jnz short loc_8801 + cmp ax, [bp+var_1C] + jb short loc_881A + +loc_8801: ; CODE XREF: sub_87C1+2Cj sub_87C1+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_86D4 + add sp, 0Ah + jmp loc_8A86 +; --------------------------------------------------------------------------- + +loc_881A: ; CODE XREF: sub_87C1+37j sub_87C1+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_88B3 + +loc_8845: ; CODE XREF: sub_87C1+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_88B3 + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_88AD + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_88A6 + jnz short loc_887C + cmp bx, [bp+var_1C] + jb short loc_88A6 + +loc_887C: ; CODE XREF: sub_87C1+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_8896: ; CODE XREF: sub_87C1+2BBj + push [bp+arg_2] + push [bp+arg_0] + push cs + call near ptr sub_8740 + add sp, 12h + jmp loc_8A86 +; --------------------------------------------------------------------------- + +loc_88A6: ; CODE XREF: sub_87C1+B2j sub_87C1+B9j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_88AD: ; CODE XREF: sub_87C1+A4j + add word ptr [bp+var_10], 8 + jmp short loc_8845 +; --------------------------------------------------------------------------- + +loc_88B3: ; CODE XREF: sub_87C1+82j sub_87C1+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_88CC: ; CODE XREF: sub_87C1+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_8942 + les bx, [bp+var_22+2] + test byte ptr es:[bx+8], 2 + jz short loc_893C + les bx, [bp+var_22+2] + mov bx, es:[bx+1Ch] + xor ax, ax + cmp ax, [bp+var_1A] + jb short loc_8935 + jnz short loc_8903 + cmp bx, [bp+var_1C] + jb short loc_8935 + +loc_8903: ; CODE XREF: sub_87C1+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_8740 + add sp, 12h + cmp [bp+arg_C], 0 + jnz short loc_8932 + jmp loc_8A86 +; --------------------------------------------------------------------------- + +loc_8932: ; CODE XREF: sub_87C1+16Cj + jmp loc_8A66 +; --------------------------------------------------------------------------- + +loc_8935: ; CODE XREF: sub_87C1+139j + ; sub_87C1+140j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + +loc_893C: ; CODE XREF: sub_87C1+12Bj + add word ptr [bp+var_8], 8 + jmp short loc_88CC +; --------------------------------------------------------------------------- + +loc_8942: ; CODE XREF: sub_87C1+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_895B: ; CODE XREF: sub_87C1+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_8995 + 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_8995: ; CODE XREF: sub_87C1+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_89B9 + jb short loc_89AF + cmp bx, [bp+var_1C] + jnb short loc_89B9 + +loc_89AF: ; CODE XREF: sub_87C1+1E7j + sub [bp+var_1C], bx + sbb [bp+var_1A], 0 + jmp loc_8A7F +; --------------------------------------------------------------------------- + +loc_89B9: ; CODE XREF: sub_87C1+1E5j + ; sub_87C1+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_8A05 + 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_8A8C + add sp, 0Eh + jmp short loc_8A25 +; --------------------------------------------------------------------------- + +loc_8A05: ; CODE XREF: sub_87C1+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_87C1 + add sp, 10h + +loc_8A25: ; CODE XREF: sub_87C1+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_8A3E + jmp loc_89B9 +; --------------------------------------------------------------------------- + +loc_8A3E: ; CODE XREF: sub_87C1+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_8740 + add sp, 12h + cmp [bp+arg_C], 0 + jz short loc_8A86 + +loc_8A66: ; CODE XREF: sub_87C1:loc_8932j + 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_8896 +; --------------------------------------------------------------------------- + +loc_8A7F: ; CODE XREF: sub_87C1+1F5j + add word ptr [bp+var_18], 6 + jmp loc_895B +; --------------------------------------------------------------------------- + +loc_8A86: ; CODE XREF: sub_87C1+56j sub_87C1+E2j ... + pop di + pop si + mov sp, bp + pop bp + retf +sub_87C1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8A8C proc far ; CODE XREF: sub_87C1+23Cp + ; sub_8C3F+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_8AE6 + 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_8AE6: ; CODE XREF: sub_8A8C+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_8B76 + push [bp+arg_C] + mov ax, 1 + push ax + push [bp+arg_A] + push [bp+arg_8] + jmp short loc_8B63 +; --------------------------------------------------------------------------- + +loc_8B44: ; CODE XREF: sub_8A8C+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_8B63: ; CODE XREF: sub_8A8C+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_87C1 + add sp, 10h + +loc_8B76: ; CODE XREF: sub_8A8C+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_8B44 + pop di + pop si + mov sp, bp + pop bp + retf +sub_8A8C endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8B8E proc far ; CODE XREF: sub_8C3F+1B1p + ; sub_8C3F+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_8C33 + les bx, [bp+var_4] + cmp word ptr es:[bx+6], 0FFFFh + jz short loc_8C33 + 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_8BED + 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_8BF6 +; --------------------------------------------------------------------------- + +loc_8BED: ; CODE XREF: sub_8B8E+4Ej + les bx, [bp+var_8] + mov ax, es:[bx] + mov word ptr [bp+var_8+2], ds + +loc_8BF6: ; CODE XREF: sub_8B8E+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_8C33: ; CODE XREF: sub_8B8E+27j sub_8B8E+31j + mov dx, [bp+arg_2] + mov ax, [bp+arg_0] + pop di + pop si + mov sp, bp + pop bp + retf +sub_8B8E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_8C3F proc near ; CODE XREF: sub_8069+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_8C55 + jmp loc_9042 +; --------------------------------------------------------------------------- + +loc_8C55: ; CODE XREF: sub_8C3F+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_8CAE + 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_8CAE: ; CODE XREF: sub_8C3F+57j + les bx, [bp+arg_0] + test byte ptr es:[bx+5], 1 + jz short loc_8CC5 + les bx, [bp+arg_0] + les bx, es:[bx] + mov ax, es:[bx+1Ch] + jmp loc_9044 +; --------------------------------------------------------------------------- + +loc_8CC5: ; CODE XREF: sub_8C3F+77j + cmp [bp+var_6], 0 + jg short loc_8CF7 + jnz short loc_8CD3 + cmp [bp+var_8], 0 + ja short loc_8CF7 + +loc_8CD3: ; CODE XREF: sub_8C3F+8Cj + les bx, [bp+arg_0] + mov ax, es:[bx+4] + and ax, 3 + cmp ax, 3 + jz short loc_8CE5 + jmp loc_9042 +; --------------------------------------------------------------------------- + +loc_8CE5: ; CODE XREF: sub_8C3F+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_8E5C +; --------------------------------------------------------------------------- + +loc_8CF7: ; CODE XREF: sub_8C3F+8Aj sub_8C3F+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_8D03: ; CODE XREF: sub_8C3F+21Aj + les bx, [bp+var_C] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_8D16 + sub word ptr [bp+var_C], 0Ah + jmp loc_8E5C +; --------------------------------------------------------------------------- + +loc_8D16: ; CODE XREF: sub_8C3F+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_8D3E + jmp loc_8E08 +; --------------------------------------------------------------------------- + +loc_8D3E: ; CODE XREF: sub_8C3F+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_8D62 + jmp loc_8E08 +; --------------------------------------------------------------------------- + +loc_8D62: ; CODE XREF: sub_8C3F+11Ej + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jnz short loc_8D6F + jmp loc_8E08 +; --------------------------------------------------------------------------- + +loc_8D6F: ; CODE XREF: sub_8C3F+12Bj + les bx, [bp+var_C] + test byte ptr es:[bx+4], 8 + jnz short loc_8D7C + jmp loc_8E08 +; --------------------------------------------------------------------------- + +loc_8D7C: ; CODE XREF: sub_8C3F+138j + les bx, [bp+var_C] + test byte ptr es:[bx+4], 4 + jz short loc_8D95 + 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_8DA3 +; --------------------------------------------------------------------------- + +loc_8D95: ; CODE XREF: sub_8C3F+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_8DA3: ; CODE XREF: sub_8C3F+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_8DCB + les bx, [bp+driver] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], dx + jmp short loc_8DD4 +; --------------------------------------------------------------------------- + +loc_8DCB: ; CODE XREF: sub_8C3F+17Bj + les bx, [bp+driver] + mov ax, es:[bx] + mov word ptr [bp+var_1C+2], ds + +loc_8DD4: ; CODE XREF: sub_8C3F+18Aj + mov word ptr [bp+var_1C], ax + les bx, [bp+var_C] + test byte ptr es:[bx+4], 40h + jz short loc_8DE5 + add word ptr [bp+var_1C], 4 + +loc_8DE5: ; CODE XREF: sub_8C3F+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_8B8E + 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_8E08: ; CODE XREF: sub_8C3F+FCj + ; sub_8C3F+120j ... + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8E2D + 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_8E2D: ; CODE XREF: sub_8C3F+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_8E4B + jnz short loc_8E5C + cmp ax, [bp+var_8] + jnb short loc_8E5C + +loc_8E4B: ; CODE XREF: sub_8C3F+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_8D03 +; --------------------------------------------------------------------------- + +loc_8E5C: ; CODE XREF: sub_8C3F+B5j sub_8C3F+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_8E8B + 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_8E99 +; --------------------------------------------------------------------------- + +loc_8E8B: ; CODE XREF: sub_8C3F+23Bj + les bx, [bp+var_C] + mov dx, es:[bx+8] + mov ax, es:[bx+6] + mov word ptr [bp+var_16], dx + +loc_8E99: ; CODE XREF: sub_8C3F+24Aj + mov [bp+var_18], ax + test byte ptr [bp+var_16+2], 11h + jnz short loc_8EA5 + jmp loc_8F2F +; --------------------------------------------------------------------------- + +loc_8EA5: ; CODE XREF: sub_8C3F+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_8ED7 + les bx, [bp+var_1C] + mov dx, es:[bx+2] + mov ax, es:[bx] + mov word ptr [bp+var_16], dx + jmp short loc_8EE0 +; --------------------------------------------------------------------------- + +loc_8ED7: ; CODE XREF: sub_8C3F+287j + les bx, [bp+var_1C] + mov ax, es:[bx] + mov word ptr [bp+var_16], ds + +loc_8EE0: ; CODE XREF: sub_8C3F+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_8EFE + add [bp+var_18], 4 + +loc_8EFE: ; CODE XREF: sub_8C3F+2B9j + les bx, [bp+var_12] + test byte ptr es:[bx+2], 2 + jz short loc_8F2F + les bx, [bp+var_12] + test byte ptr es:[bx+8], 20h + jz short loc_8F2F + test byte ptr [bp+var_16+2], 8 + jz short loc_8F2F + lea ax, [bp+var_12] + push ax + push word ptr [bp+var_16] + push [bp+var_18] + push cs + call near ptr sub_8B8E + add sp, 6 + mov word ptr [bp+var_16], dx + mov [bp+var_18], ax + +loc_8F2F: ; CODE XREF: sub_8C3F+263j + ; sub_8C3F+2C7j ... + cmp [bp+var_E], 0 + jnz short loc_8F7D + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8F5D + 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_8A8C + add sp, 0Eh + jmp short loc_8F7D +; --------------------------------------------------------------------------- + +loc_8F5D: ; CODE XREF: sub_8C3F+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_87C1 + add sp, 10h + +loc_8F7D: ; CODE XREF: sub_8C3F+2F4j + ; sub_8C3F+31Cj + mov ax, word ptr [bp+var_16+2] + and ax, 3 + cmp ax, 3 + jz short loc_8F8B + jmp loc_9029 +; --------------------------------------------------------------------------- + +loc_8F8B: ; CODE XREF: sub_8C3F+347j + mov ax, word ptr [bp+var_16+2] + and ax, 48h + cmp ax, 48h ; 'H' + jnz short loc_8F9A + sub word ptr [bp+driver], 4 + +loc_8F9A: ; CODE XREF: sub_8C3F+355j + les bx, [bp+var_12] + test byte ptr es:[bx+3], 4 + jz short loc_8FE9 + 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_8FD6 + 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_9008 +; --------------------------------------------------------------------------- + +loc_8FD6: ; CODE XREF: sub_8C3F+381j + test byte ptr [bp+var_16+2], 80h + jz short loc_9029 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; font + nop + push cs + call near ptr _registerbgifont + jmp short loc_9027 +; --------------------------------------------------------------------------- + +loc_8FE9: ; CODE XREF: sub_8C3F+363j + les bx, [bp+var_12] + mov ax, es:[bx+0Eh] + or ax, es:[bx+10h] + jz short loc_9016 + 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_9008: ; CODE XREF: sub_8C3F+395j + push word ptr [bp+driver+2] + push word ptr [bp+driver] + call sub_6FF8 + add sp, 0Ah + jmp short loc_9029 +; --------------------------------------------------------------------------- + +loc_9016: ; CODE XREF: sub_8C3F+3B5j + test byte ptr [bp+var_16+2], 80h + jz short loc_9029 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + +loc_9027: ; CODE XREF: sub_8C3F+3A8j + pop cx + pop cx + +loc_9029: ; CODE XREF: sub_8C3F+349j + ; sub_8C3F+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_9042 + jmp loc_8E5C +; --------------------------------------------------------------------------- + +loc_9042: ; CODE XREF: sub_8C3F+13j sub_8C3F+A3j ... + xor ax, ax + +loc_9044: ; CODE XREF: sub_8C3F+83j + pop di + pop si + mov sp, bp + pop bp + retn +sub_8C3F 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_908D + 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, 2D2Bh + 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_9092 + +loc_908D: ; CODE XREF: __CurrExcContext+12j + mov ax, 0FFFFh + jmp short loc_9099 +; --------------------------------------------------------------------------- + +loc_9092: ; CODE XREF: __CurrExcContext+41j + mov bx, [bp+var_2] + mov ax, ss:[bx+arg_6] + +loc_9099: ; 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_90F5 + 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_9133 + +loc_90F5: ; CODE XREF: typeinfo::typeinfo(typeinfo &)+Ej + les bx, [bp+arg_0] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 96D1h + 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, 96B3h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_9133: ; 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_917E + les bx, [bp+driver] + mov word ptr es:[bx+2], seg seg000 + mov word ptr es:[bx], 96D1h + test dl, 1 + jz short loc_917E + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + +loc_917E: ; 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_65F4 + 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_91E2 + xor ax, ax + jmp short loc_923B +; --------------------------------------------------------------------------- + +loc_91E2: ; CODE XREF: typeinfo::before(typeinfo &)+13j + les bx, [bp+arg_4] + mov ax, es:[bx+4] + or ax, es:[bx+6] + jnz short loc_91F4 + mov ax, 1 + jmp short loc_923B +; --------------------------------------------------------------------------- + +loc_91F4: ; 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_9239 + mov ax, 1 + jmp short loc_923B +; --------------------------------------------------------------------------- + +loc_9239: ; CODE XREF: typeinfo::before(typeinfo &)+69j + xor ax, ax + +loc_923B: ; 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_65CF + 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_929D + 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, 51DCh + push ax ; src + push cs ; int + mov ax, 969Dh + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_929D: ; 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_92DE proc near ; CODE XREF: sub_92DE+143p + ; sub_92DE+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_9319 + 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_65F4 + add sp, 8 + or ax, ax + jnz short loc_9323 + +loc_9319: ; CODE XREF: sub_92DE+22j + les bx, [bp+arg_4] + test byte ptr es:[bx+8], 4 + jnz short loc_932A + +loc_9323: ; CODE XREF: sub_92DE+39j + xor dx, dx + xor ax, ax + jmp loc_951E +; --------------------------------------------------------------------------- + +loc_932A: ; CODE XREF: sub_92DE+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_933C: ; CODE XREF: sub_92DE+21Ej + mov word ptr [bp+var_4+2], dx + mov word ptr [bp+var_4], ax + +loc_9342: ; CODE XREF: sub_92DE+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_935D + jmp loc_94E6 +; --------------------------------------------------------------------------- + +loc_935D: ; CODE XREF: sub_92DE+7Aj + les bx, [bp+var_4] + test byte ptr es:[bx+6], 8 + jz short loc_936A + jmp loc_94DF +; --------------------------------------------------------------------------- + +loc_936A: ; CODE XREF: sub_92DE+87j + cmp [bp+arg_1A], 0 + jz short loc_9384 + les bx, [bp+var_4] + mov ax, es:[bx+6] + and ax, 3 + cmp ax, 3 + jnz short loc_9384 + mov ax, 1 + jmp short loc_9386 +; --------------------------------------------------------------------------- + +loc_9384: ; CODE XREF: sub_92DE+90j sub_92DE+9Fj + xor ax, ax + +loc_9386: ; CODE XREF: sub_92DE+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_93CD + 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_93CD: ; CODE XREF: sub_92DE+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_65F4 + add sp, 8 + or ax, ax + jnz short loc_944F + les bx, [bp+var_1C] + test byte ptr es:[bx+8], 4 + jnz short loc_93F1 + jmp loc_94DF +; --------------------------------------------------------------------------- + +loc_93F1: ; CODE XREF: sub_92DE+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_92DE + 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_9438 + jmp loc_94DF +; --------------------------------------------------------------------------- + +loc_9438: ; CODE XREF: sub_92DE+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_94AC +; --------------------------------------------------------------------------- + +loc_944F: ; CODE XREF: sub_92DE+104j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_9470 + mov dx, [bp+arg_A] + mov ax, [bp+arg_8] + cmp dx, word ptr [bp+var_14+2] + jnz short loc_94DF + cmp ax, word ptr [bp+var_14] + jnz short loc_94DF + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + jmp loc_951E +; --------------------------------------------------------------------------- + +loc_9470: ; CODE XREF: sub_92DE+177j + mov ax, [bp+arg_10] + or ax, [bp+arg_12] + jz short loc_94AC + 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_92DE + add sp, 20h + or ax, dx + jz short loc_94DF + +loc_94AC: ; CODE XREF: sub_92DE+16Fj + ; sub_92DE+198j + cmp [bp+var_E], 0 + jz short loc_94CA + mov dx, word ptr [bp+var_14+2] + mov ax, word ptr [bp+var_14] + cmp dx, [bp+var_A] + jnz short loc_94CA + cmp ax, [bp+var_C] + jnz short loc_94CA + mov ax, [bp+var_10] + or [bp+var_8], ax + jmp short loc_94DF +; --------------------------------------------------------------------------- + +loc_94CA: ; CODE XREF: sub_92DE+1D2j + ; sub_92DE+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_94DF: ; CODE XREF: sub_92DE+89j + ; sub_92DE+110j ... + add word ptr [bp+var_4], 8 + jmp loc_9342 +; --------------------------------------------------------------------------- + +loc_94E6: ; CODE XREF: sub_92DE+7Cj + cmp [bp+var_6], 0 + jnz short loc_94FF + 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_933C +; --------------------------------------------------------------------------- + +loc_94FF: ; CODE XREF: sub_92DE+20Cj + mov bx, [bp+arg_18] + mov ax, [bp+var_8] + mov ss:[bx], ax + cmp [bp+var_E], 1 + jz short loc_9518 + mov [bp+var_A], 0 + mov [bp+var_C], 0 + +loc_9518: ; CODE XREF: sub_92DE+22Ej + mov dx, [bp+var_A] + mov ax, [bp+var_C] + +loc_951E: ; CODE XREF: sub_92DE+49j + ; sub_92DE+18Fj + pop di + pop si + mov sp, bp + pop bp + retn +sub_92DE 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_954F + jmp loc_9653 +; --------------------------------------------------------------------------- + +loc_954F: ; 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_95A5 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + push cs + call near ptr sub_65F4 + add sp, 8 + or ax, ax + jz short loc_95AE + +loc_95A5: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+68j + mov dx, [bp+var_E] + mov ax, [bp+var_10] + jmp loc_9683 +; --------------------------------------------------------------------------- + +loc_95AE: ; 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_65F4 + add sp, 8 + or ax, ax + jnz short loc_9607 + 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_92DE + 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_964B + +loc_9607: ; 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_92DE + 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_9653 + cmp [bp+var_16], 0 + jz short loc_9653 + +loc_964B: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+E1j + mov dx, [bp+var_12] + mov ax, [bp+var_14] + jmp short loc_9683 +; --------------------------------------------------------------------------- + +loc_9653: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+28j + ; __DynamicCast(void *,void *,void *,void *,int)+11Fj ... + cmp [bp+arg_10], 0 + jz short loc_967F + 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, 51DDh + push ax ; src + push cs ; int + mov ax, 9689h + push ax ; int + push cs + call near ptr @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_967F: ; CODE XREF: __DynamicCast(void *,void *,void *,void *,int)+133j + xor dx, dx + xor ax, ax + +loc_9683: ; 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, 0D5h, 96h + dw seg seg000 +aTypeinfo db 'typeinfo *',0 + db 0, 0D5h, 96h + dw seg seg000 + db 4 dup(0), 4Eh, 91h + 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, 4Eh, 91h + 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_A142:loc_A2ADp + +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_973A + 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_973A: ; 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_9764 +; --------------------------------------------------------------------------- + +loc_9748: ; 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_9764: ; CODE XREF: __DOSCMD+35j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_9748 + push [bp+var_2] + nop + push cs + call near ptr sub_4A3E + pop cx + mov word ptr [bp+var_A+2], dx + mov word ptr [bp+var_A], ax + or ax, dx + jnz short loc_978A + xor dx, dx + xor ax, ax + jmp loc_9840 +; --------------------------------------------------------------------------- + +loc_978A: ; 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_97CD + 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_97CD: ; CODE XREF: __DOSCMD+96j + mov ax, [bp+arg_8] + or ax, [bp+arg_A] + jz short loc_981B + 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_980F +; --------------------------------------------------------------------------- + +loc_97E3: ; 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_980F: ; CODE XREF: __DOSCMD+D0j + les bx, [bp+var_6] + mov ax, es:[bx] + or ax, es:[bx+2] + jnz short loc_97E3 + +loc_981B: ; 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_9840: ; CODE XREF: __DOSCMD+76j + pop di + pop si + mov sp, bp + pop bp + retn 0Ch +__DOSCMD endp + +; --------------------------------------------------------------------------- + db 8Fh dup(0) +word_98D7 dw 0 ; DATA XREF: __exec+28w + db 50h dup(0) +byte_9929 db 0 ; DATA XREF: __exec+50w +byte_992A 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_99A8 db 0FFh, 0 ; DATA XREF: __exec+22Dr +word_99AA dw 0 ; DATA XREF: __exec+1D0w +word_99AC dw 0 ; DATA XREF: __exec+Ew + ; __exec:loc_9BA8r ... +byte_99AE 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_F056 + mov cs:word_99AC, 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_99D3 + jmp loc_9BE1 +; --------------------------------------------------------------------------- + +loc_99D3: ; CODE XREF: __exec+1Fj + mov es, segx + mov cs:word_98D7, 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_9929, al + +loc_9A03: ; CODE XREF: __exec+63j + mov al, [si] + cmp al, 20h ; ' ' + jz short loc_9A14 + cmp al, 9 + jz short loc_9A14 + cmp al, 0Dh + jz short loc_9A14 + inc si + jmp short loc_9A03 +; --------------------------------------------------------------------------- + +loc_9A14: ; 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_992A, 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_F05C, 3 + jnb short loc_9A33 + sub bx, 280h + +loc_9A33: ; 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_9A48 + xor ax, ax + mov di, ax + jmp short loc_9A65 +; --------------------------------------------------------------------------- + +loc_9A48: ; CODE XREF: __exec+91j + mov es, dx + mov di, ax + push di + mov cx, 0FFFFh + xor ax, ax + +loc_9A52: ; CODE XREF: __exec+A8j + repne scasb + cmp es:[di], al + jnz short loc_9A52 + dec cx + add di, 3 + repne scasb + dec cx + mov ax, cx + neg ax + pop di + +loc_9A65: ; 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_F056 + dec si + mov es, si + cmp ax, es:3 + jbe short loc_9A8D + dec cs:byte_99AE + inc ax + sub [bp+var_4], ax + +loc_9A8D: ; CODE XREF: __exec+D3j + lds si, [bp+arg_0] + push cs + pop es + assume es:seg000 + mov di, 98D9h + +loc_9A95: ; CODE XREF: __exec+EAj + lodsb + stosb + or al, al + jnz short loc_9A95 + mov bx, [bp+var_2] + push ds + pop es + assume es:dseg + push cs + pop ds + assume ds:seg000 + mov di, 9848h + 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_9AD7 + cmp word ptr [di+0E3h], 5A4Dh + jz short loc_9AE3 + mov ax, es:[si-5] + or ah, 20h + cmp ax, 632Eh + jnz short loc_9AD4 + mov ax, es:[si-3] + or ax, 2020h + cmp ax, 6D6Fh + jnz short loc_9AD4 + jmp short loc_9B1F +; --------------------------------------------------------------------------- + +loc_9AD4: ; CODE XREF: __exec+115j __exec+121j + mov ax, 0Bh + +loc_9AD7: ; 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_9BE1 +; --------------------------------------------------------------------------- + +loc_9AE3: ; 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_9AFD: ; CODE XREF: __exec+152j + shr dx, 1 + rcr ax, 1 + loop loc_9AFD + 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_9B49 +; --------------------------------------------------------------------------- + +loc_9B1F: ; 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_9B2B: ; CODE XREF: __exec+180j + shr dx, 1 + rcr ax, 1 + loop loc_9B2B + 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_9B49: ; 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_9B5F + jmp loc_9AD7 +; --------------------------------------------------------------------------- + +loc_9B5F: ; 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_9B76 + jmp loc_9AD7 +; --------------------------------------------------------------------------- + +loc_9B76: ; CODE XREF: __exec+1C2j + add bx, [di+8Fh] + mov dx, bx + sub bx, 17h + mov cs:word_99AA, bx + mov es, bx + mov cx, 0B0h ; '°' + mov si, 9848h + xor di, di + rep movsw + mov es, [bp+var_C] + mov cx, [bp+var_6] + cmp cs:byte_99AE, 0 + jnz short loc_9BA8 + mov ah, 48h ; 'H' + mov bx, cx + int 21h ; DOS - 2+ - ALLOCATE MEMORY + ; BX = number of 16-byte paragraphs desired + jb short loc_9BE1 + jmp short loc_9BAC +; --------------------------------------------------------------------------- + +loc_9BA8: ; CODE XREF: __exec+1EDj + mov ax, cs:word_99AC + +loc_9BAC: ; 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_99AE, 0 + jnz short loc_9BDB + mov es, cs:word_99AC + mov ah, 49h + int 21h ; DOS - 2+ - FREE MEMORY + ; ES = segment address of area to be freed + +loc_9BDB: ; CODE XREF: __exec+221j + pop cx + jmp dword ptr cs:byte_99A8 +; --------------------------------------------------------------------------- + +loc_9BE1: ; 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_A39C:loc_A43BP + ; sub_A447+7CP ... + +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, 99AFh + push ax ; int + call sub_A142 + 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_4C4C+28p + +_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_9C26 + mov ax, 0FFFFh + jmp short loc_9C2C +; --------------------------------------------------------------------------- + +loc_9C26: ; CODE XREF: _setblock+Fj + push bx + push ax + call __IOERROR + pop ax + +loc_9C2C: ; CODE XREF: _setblock+14j + pop di + pop si + pop bp + retf +_setblock endp + +; --------------------------------------------------------------------------- + push si + push di + mov es, word_F056 + xor di, di + push es + push word_F058 + nop + push cs + call near ptr sub_4A3E + pop bx + mov bx, ax + pop es + mov word ptr dword_11D14, ax + mov word ptr dword_11D14+2, dx + push ds + mov ds, dx + or ax, dx + jnz short loc_9C59 + nop + nop + jmp near ptr sub_3B18 +; --------------------------------------------------------------------------- + +loc_9C59: ; CODE XREF: seg000:9C52j + xor ax, ax + mov cx, 0FFFFh + cmp byte ptr es:[di], 0 + jz short loc_9C73 + +loc_9C64: ; CODE XREF: seg000:9C71j + mov [bx], di + mov word ptr [bx+2], es + add bx, 4 + repne scasb + cmp es:[di], al + jnz short loc_9C64 + +loc_9C73: ; CODE XREF: seg000:9C62j + mov [bx], ax + mov [bx+2], ax + pop ds + pop di + pop si + mov ax, word ptr dword_11D14+2 + mov word_F052, ax + mov ax, word ptr dword_11D14 + 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_E403 + db 4 dup(0), 8Dh, 9Ch + 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_9CE2 + 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_9CE0 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9CE4 +; --------------------------------------------------------------------------- + +loc_9CE0: ; CODE XREF: seg000:9CCFj + jmp short loc_9CE4 +; --------------------------------------------------------------------------- + +loc_9CE2: ; CODE XREF: seg000:9CA6j + xor ax, ax + +loc_9CE4: ; CODE XREF: seg000:9CDEj + ; seg000:loc_9CE0j + 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_E5AB + dd byte_E55D + db 4 dup(0), 0B6h, 1 + dw seg seg003 + db 87h, 20h, 0FCh, 0FFh, 6 dup(0), 0EDh, 9Ch + dw seg seg000 + db 0DEh, 0FFh, 2 dup(0), 5, 3 dup(0), 2 dup(0FFh), 6, 0 + db 5, 3 dup(0), 0F9h, 9Ch +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + mov ax, [bp+6] + or ax, [bp+8] + jz short loc_9D64 + 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_9D62 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9D66 +; --------------------------------------------------------------------------- + +loc_9D62: ; CODE XREF: seg000:9D51j + jmp short loc_9D66 +; --------------------------------------------------------------------------- + +loc_9D64: ; CODE XREF: seg000:9D28j + xor ax, ax + +loc_9D66: ; CODE XREF: seg000:9D60j + ; seg000:loc_9D62j + 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_9DB1 + 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_9DAF + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9DB3 +; --------------------------------------------------------------------------- + +loc_9DAF: ; CODE XREF: seg000:9D9Ej + jmp short loc_9DB3 +; --------------------------------------------------------------------------- + +loc_9DB1: ; CODE XREF: seg000:9D75j + xor ax, ax + +loc_9DB3: ; CODE XREF: seg000:9DADj + ; seg000:loc_9DAFj + 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_9DBC db 0 ; DATA XREF: seg000:9DC0o + db 0 + db 0 + db 0 + dd unk_9DBC + db 0E2h, 0FFh, 0FEh, 0Bh + dw seg seg003 + db 4 dup(0), 0C4h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FEh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ch, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 0C6h, 9Dh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 0CEh, 9Dh, 6, 0 + db 5, 0, 1, 0, 0E6h, 9Dh, 0FEh, 0Bh + dw seg seg003 + db 4 dup(0), 0C4h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FEh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ch, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 0Ah, 9Eh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 12h, 9Eh, 6, 0, 5 + db 0, 1, 0, 2Ah, 9Eh, 0FEh, 0Bh + dw seg seg003 + db 4 dup(0), 0C4h, 0Bh + dw seg seg003 + db 4, 0, 0FCh, 0FFh, 2 dup(0), 0FEh, 0Bh + dw seg seg003 + db 4, 0, 0F8h, 0FFh, 6 dup(0), 8Ch, 0Bh + dw seg seg003 + db 0, 2 dup(1), 7 dup(0), 4Eh, 9Eh + dw seg seg000 + db 0DAh, 0FFh, 2 dup(0), 5, 3 dup(0), 56h, 9Eh, 6, 0, 5 + db 0, 1, 0, 6Eh, 9Eh, 4 dup(0), 92h, 9Eh + dw seg seg000 +byte_9E9A db 0E2h, 0FFh, 4Ah, 0Bh ; DATA XREF: seg000:9EA8o + dw seg seg003 + dd byte_EF8E + dd 0 + dd byte_9E9A+2 + db 0E2h, 0FFh, 4 dup(0), 0AEh, 9Eh + dw seg seg000 + db 0E2h, 0FFh, 4Ah, 0Bh + dw seg seg003 + dd byte_EE8C + db 4 dup(0), 0B8h, 9Eh + dw seg seg000 + db 0E2h, 0FFh, 4 dup(0), 0CAh, 9Eh + dw seg seg000 +byte_9ED2 db 0E2h, 0FFh, 4Ah, 0Bh ; DATA XREF: seg000:9EE0o + dw seg seg003 + dd byte_EE8C + dd 0 + dd byte_9ED2+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_9F62 + 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_9F60 + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9F64 +; --------------------------------------------------------------------------- + +loc_9F60: ; CODE XREF: seg000:9F4Fj + jmp short loc_9F64 +; --------------------------------------------------------------------------- + +loc_9F62: ; CODE XREF: seg000:9F26j + xor ax, ax + +loc_9F64: ; CODE XREF: seg000:9F5Ej + ; seg000:loc_9F60j + 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_9FAF + 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_9FAD + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9FB1 +; --------------------------------------------------------------------------- + +loc_9FAD: ; CODE XREF: seg000:9F9Cj + jmp short loc_9FB1 +; --------------------------------------------------------------------------- + +loc_9FAF: ; CODE XREF: seg000:9F73j + xor ax, ax + +loc_9FB1: ; CODE XREF: seg000:9FABj + ; seg000:loc_9FADj + 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_9FFC + 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_9FFA + push word ptr [bp+8] + push word ptr [bp+6] + nop + push cs + call near ptr _registerbgidriver + pop cx + pop cx + jmp short loc_9FFE +; --------------------------------------------------------------------------- + +loc_9FFA: ; CODE XREF: seg000:9FE9j + jmp short loc_9FFE +; --------------------------------------------------------------------------- + +loc_9FFC: ; CODE XREF: seg000:9FC0j + xor ax, ax + +loc_9FFE: ; CODE XREF: seg000:9FF8j + ; seg000:loc_9FFAj + pop di + pop si + pop bp + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_A002 proc far ; CODE XREF: _main+2FP + push si + push di + cmp byte_11D7E, 0 + jz short loc_A015 + mov byte_11D7E, 0 + mov al, byte_11D7F + jmp short loc_A01A +; --------------------------------------------------------------------------- + +loc_A015: ; CODE XREF: sub_A002+7j + mov ax, 700h + int 21h ; DOS - DIRECT STDIN INPUT, NO ECHO + +loc_A01A: ; CODE XREF: sub_A002+11j + mov ah, 0 + pop di + pop si + retf +sub_A002 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_11D7E, 0 + jz short loc_A02D + mov ax, 1 + jmp short loc_A032 +; --------------------------------------------------------------------------- + +loc_A02D: ; 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_A032: ; 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_A035 proc far ; CODE XREF: sub_A142+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_A0A6 +; --------------------------------------------------------------------------- + +loc_A04B: ; CODE XREF: sub_A035+78j + les bx, [bp+var_4] + mov al, es:[bx] + push ax + nop + push cs + call near ptr sub_510B + pop cx + or ax, ax + jz short loc_A06A + inc word ptr [bp+var_4] + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_A0A3 + jmp short loc_A0AF +; --------------------------------------------------------------------------- + +loc_A06A: ; CODE XREF: sub_A035+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_A089 +; --------------------------------------------------------------------------- + +loc_A078: ; CODE XREF: sub_A035+5Bj + les bx, [bp+var_4] + mov al, es:[bx] + les bx, [bp+var_8] + cmp al, es:[bx] + jz short loc_A092 + inc word ptr [bp+var_8] + +loc_A089: ; CODE XREF: sub_A035+41j + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jnz short loc_A078 + +loc_A092: ; CODE XREF: sub_A035+4Fj + les bx, [bp+var_8] + cmp byte ptr es:[bx], 0 + jz short loc_A0A3 + mov dx, word ptr [bp+var_4+2] + mov ax, word ptr [bp+var_4] + jmp short loc_A0B3 +; --------------------------------------------------------------------------- + +loc_A0A3: ; CODE XREF: sub_A035+31j sub_A035+64j + inc word ptr [bp+var_4] + +loc_A0A6: ; CODE XREF: sub_A035+14j + les bx, [bp+var_4] + cmp byte ptr es:[bx], 0 + jnz short loc_A04B + +loc_A0AF: ; CODE XREF: sub_A035+33j + xor dx, dx + xor ax, ax + +loc_A0B3: ; CODE XREF: sub_A035+6Cj + pop di + pop si + mov sp, bp + pop bp + retf +sub_A035 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl __far sub_A0B9(int, int, char *pathname, char *src, int) +sub_A0B9 proc far ; CODE XREF: sub_A142+7Fp sub_A142+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_A10D + push word ptr [bp+pathname+2] + push word ptr [bp+pathname] ; pathname + push ds + mov ax, 2DA0h + 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_A13A + jmp short loc_A135 +; --------------------------------------------------------------------------- + +loc_A10D: ; CODE XREF: sub_A0B9+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_A13A + +loc_A135: ; CODE XREF: sub_A0B9+52j + mov ax, 1 + jmp short loc_A13C +; --------------------------------------------------------------------------- + +loc_A13A: ; CODE XREF: sub_A0B9+50j sub_A0B9+7Aj + xor ax, ax + +loc_A13C: ; CODE XREF: sub_A0B9+7Fj + pop di + pop si + mov sp, bp + pop bp + retf +sub_A0B9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +; int __cdecl sub_A142(int, char *s, int, int, int, int, int) +sub_A142 proc near ; CODE XREF: _execl+19p + +pathname = word ptr -9Ch +var_1A = word ptr -1Ah +var_18 = word ptr -18h +var_16 = word ptr -16h +var_14 = dword ptr -14h +s1 = dword ptr -10h +var_C = word ptr -0Ch +var_A = word ptr -0Ah +var_8 = word ptr -8 +var_6 = word ptr -6 +var_4 = word ptr -4 +var_2 = word ptr -2 +s = dword ptr 6 +arg_6 = word ptr 0Ah +arg_8 = word ptr 0Ch +arg_A = word ptr 0Eh +arg_C = word ptr 10h +arg_E = word ptr 12h + + push bp + mov bp, sp + sub sp, 9Ch + push si + push di + les bx, [bp+s] + mov al, es:[bx] + cbw + mov dx, ax + cmp ax, 61h ; 'a' + jb short loc_A15C + sub dx, 20h ; ' ' + +loc_A15C: ; CODE XREF: sub_A142+15j + cmp dx, 41h ; 'A' + jb short loc_A170 + cmp dx, 5Ah ; 'Z' + ja short loc_A170 + les bx, [bp+s] + cmp byte ptr es:[bx+1], 3Ah ; ':' + jz short loc_A186 + +loc_A170: ; CODE XREF: sub_A142+1Dj sub_A142+22j + push ds + mov ax, 2DA5h + push ax + push word ptr [bp+s+2] + push word ptr [bp+s] + push cs + call near ptr sub_A035 + add sp, 8 + or ax, dx + jz short loc_A18B + +loc_A186: ; CODE XREF: sub_A142+2Cj + mov [bp+arg_E], 0 + +loc_A18B: ; CODE XREF: sub_A142+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_5DBA + add sp, 6 + mov word ptr [bp+s1+2], dx + mov word ptr [bp+s1], ax + or ax, dx + jz short loc_A1EA + push [bp+arg_E] ; int + push ds + mov ax, 2DA8h + 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_A0B9 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A1D1 + jmp loc_A255 +; --------------------------------------------------------------------------- + +loc_A1D1: ; CODE XREF: sub_A142+8Aj + push ds + mov ax, 2DA9h + 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_A255 + jmp short loc_A250 +; --------------------------------------------------------------------------- + +loc_A1EA: ; CODE XREF: sub_A142+68j + push [bp+arg_E] ; int + push ds + mov ax, 2DAEh + 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_A0B9 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A255 + push [bp+arg_E] ; int + push ds + mov ax, 2DB3h + 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_A0B9 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jnz short loc_A255 + push [bp+arg_E] ; int + push ds + mov ax, 2DB8h + 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_A0B9 + add sp, 0Eh + mov [bp+var_18], ax + or ax, ax + jz short loc_A255 + +loc_A250: ; CODE XREF: sub_A142+A6j + mov [bp+var_1A], 1 + +loc_A255: ; CODE XREF: sub_A142+8Cj sub_A142+A4j ... + cmp [bp+var_18], 0 + jz short loc_A277 + cmp [bp+var_1A], 0 + jz short loc_A280 + push ds + mov ax, 2DBDh + 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_A280 + +loc_A277: ; CODE XREF: sub_A142+117j + mov word_F05E, 2 + jmp loc_A346 +; --------------------------------------------------------------------------- + +loc_A280: ; CODE XREF: sub_A142+11Dj + ; sub_A142+133j + cmp [bp+var_1A], 0 + jz short loc_A299 + push [bp+var_2] + push [bp+var_4] + push ds + mov ax, 2DC5h + push ax + push [bp+arg_8] + push [bp+arg_6] + jmp short loc_A2AD +; --------------------------------------------------------------------------- + +loc_A299: ; CODE XREF: sub_A142+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_A2AD: ; CODE XREF: sub_A142+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_A2C7 + mov word_F05E, 8 + jmp loc_A346 +; --------------------------------------------------------------------------- + +loc_A2C7: ; CODE XREF: sub_A142+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_A2F0 + mov word_F05E, 14h + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + jmp short loc_A346 +; --------------------------------------------------------------------------- + +loc_A2F0: ; CODE XREF: sub_A142+197j + mov ax, [bp+arg_A] + or ax, [bp+arg_C] + jnz short loc_A305 + mov dx, word ptr dword_11D14+2 + mov ax, word ptr dword_11D14 + mov [bp+arg_C], dx + mov [bp+arg_A], ax + +loc_A305: ; CODE XREF: sub_A142+1B4j + push [bp+arg_C] ; int + push [bp+arg_A] ; int + cmp [bp+var_1A], 0 + jz short loc_A319 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_A31F +; --------------------------------------------------------------------------- + +loc_A319: ; CODE XREF: sub_A142+1CDj + mov dx, ss + lea ax, [bp+pathname] + +loc_A31F: ; CODE XREF: sub_A142+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_A34B + mov word_F05E, 8 + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_490B + pop cx + pop cx + +loc_A346: ; CODE XREF: sub_A142+13Bj + ; sub_A142+182j ... + mov ax, 0FFFFh + jmp short loc_A396 +; --------------------------------------------------------------------------- + +loc_A34B: ; CODE XREF: sub_A142+1EFj + call off_11858 + push [bp+var_A] + push [bp+var_C] + push [bp+var_6] + push [bp+var_8] + cmp [bp+var_1A], 0 + jz short loc_A369 + mov dx, [bp+var_2] + mov ax, [bp+var_4] + jmp short loc_A36F +; --------------------------------------------------------------------------- + +loc_A369: ; CODE XREF: sub_A142+21Dj + mov dx, ss + lea ax, [bp+pathname] + +loc_A36F: ; CODE XREF: sub_A142+225j + push dx + push ax + ; Hack + db 0ffh + db 056h + db 004h + + add sp, 0Ch + mov [bp+var_16], ax + push word ptr [bp+var_14+2] + push word ptr [bp+var_14] + nop + push cs + call near ptr sub_490B + push [bp+var_6] + push [bp+var_8] + nop + push cs + call near ptr sub_490B + add sp, 8 + mov ax, [bp+var_16] + +loc_A396: ; CODE XREF: sub_A142+207j + pop di + pop si + mov sp, bp + pop bp + retn +sub_A142 endp ; sp-analysis failed + +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_A39C proc near ; CODE XREF: sub_A9D6:loc_AA91p + push bp + mov bp, sp + push si + push di + les bx, dword_11DCC + mov byte ptr es:[bx+1Ah], 0 + mov byte ptr es:[bx+1Fh], 0 + mov byte ptr es:[bx+13h], 0 + mov al, es:[bx+0Fh] + mov es:[bx+0Dh], al + mov al, es:[bx+10h] + mov es:[bx+0Eh], al + call sub_D12D + or ax, ax + jnz short loc_A443 + xor si, si + jmp short loc_A400 +; --------------------------------------------------------------------------- + +loc_A3CF: ; CODE XREF: sub_A39C+67j + les bx, dword_11DCC + add bx, si + mov byte ptr es:[bx+20h], 0 + mov bx, word ptr dword_11DCC + add bx, si + mov byte ptr es:[bx+44h], 0 + xor di, di + jmp short loc_A3FA +; --------------------------------------------------------------------------- + +loc_A3E9: ; CODE XREF: sub_A39C+61j + mov ax, di + shl ax, 3 + les bx, dword_11DCC + add bx, ax + mov byte ptr es:[bx+si+4Ch], 0 + inc di + +loc_A3FA: ; CODE XREF: sub_A39C+4Bj + cmp di, 6 + jl short loc_A3E9 + inc si + +loc_A400: ; CODE XREF: sub_A39C+31j + cmp si, 8 + jl short loc_A3CF + call sub_BC83 + call sub_BB0E + push 20Ah + call sub_DC76 + call sub_D7EC + les bx, dword_11DCC + cmp byte ptr es:[bx+17h], 0 + jnz short loc_A430 + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + jmp short loc_A43B +; --------------------------------------------------------------------------- + +loc_A430: ; CODE XREF: sub_A39C+85j + push large 0 + push ds + push offset path ; "deb" + push ds + push offset path ; "deb" + +loc_A43B: ; CODE XREF: sub_A39C+92j + call _execl + add sp, 0Ch + +loc_A443: ; CODE XREF: sub_A39C+2Dj + pop di + pop si + pop bp + retn +sub_A39C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A447 proc near ; CODE XREF: sub_A9D6:loc_AAE1p + push bp + mov bp, sp + push si + push di + les bx, dword_11DCC + mov byte ptr es:[bx+1Fh], 0 + mov byte ptr es:[bx+13h], 6 + mov byte ptr es:[bx+0Dh], 3 + mov byte ptr es:[bx+0Eh], 3 + call sub_D12D + or ax, ax + jnz short loc_A4CB + xor si, si + jmp short loc_A4A0 +; --------------------------------------------------------------------------- + +loc_A46F: ; CODE XREF: sub_A447+5Cj + les bx, dword_11DCC + add bx, si + mov byte ptr es:[bx+20h], 0 + mov bx, word ptr dword_11DCC + add bx, si + mov byte ptr es:[bx+44h], 0 + xor di, di + jmp short loc_A49A +; --------------------------------------------------------------------------- + +loc_A489: ; CODE XREF: sub_A447+56j + mov ax, di + shl ax, 3 + les bx, dword_11DCC + add bx, ax + mov byte ptr es:[bx+si+4Ch], 0 + inc di + +loc_A49A: ; CODE XREF: sub_A447+40j + cmp di, 6 + jl short loc_A489 + inc si + +loc_A4A0: ; CODE XREF: sub_A447+26j + cmp si, 8 + jl short loc_A46F + call sub_BC83 + call sub_BB0E + push 20Ah + call sub_DC76 + call sub_D7EC + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + call _execl + add sp, 0Ch + +loc_A4CB: ; CODE XREF: sub_A447+22j + pop di + pop si + pop bp + retn +sub_A447 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A4CF proc near ; CODE XREF: _main+E2p + push bp + mov bp, sp + push si + les bx, dword_11DCC + mov byte ptr es:[bx+1Ah], 0 + mov byte ptr es:[bx+13h], 0 + mov byte ptr es:[bx+0Dh], 3 + mov byte ptr es:[bx+0Eh], 3 + inc byte ptr es:[bx+1Fh] + cmp byte ptr es:[bx+1Fh], 4 + jbe short loc_A4FB + mov byte ptr es:[bx+1Fh], 1 + +loc_A4FB: ; CODE XREF: sub_A4CF+25j + cmp word_12A72, 0Ch + jnz short loc_A535 + cmp byte_1411F, 0 + jz short loc_A529 + cmp byte_14120, 0 + jz short loc_A529 + cmp byte_14121, 0 + jz short loc_A529 + cmp byte_14122, 0 + jz short loc_A529 + les bx, dword_11DCC + mov byte ptr es:[bx+1Fh], 5 + jmp short loc_A535 +; --------------------------------------------------------------------------- + +loc_A529: ; CODE XREF: sub_A4CF+38j sub_A4CF+3Fj ... + les bx, dword_11DCC + mov byte ptr es:[bx+1Fh], 0 + jmp loc_A5E9 +; --------------------------------------------------------------------------- + +loc_A535: ; CODE XREF: sub_A4CF+31j sub_A4CF+58j + les bx, dword_11DCC + mov al, es:[bx+1Fh] + mov ah, 0 + dec ax + mov bx, ax + cmp bx, 4 + ja short loc_A5A4 + add bx, bx + jmp cs:off_A5EC[bx] + +loc_A54E: ; DATA XREF: seg001:off_A5ECo + les bx, dword_11DCC + mov byte ptr es:[bx+14h], 0 + mov byte ptr es:[bx+1Dh], 3 + jmp short loc_A5A4 +; --------------------------------------------------------------------------- + +loc_A55E: ; CODE XREF: sub_A4CF+7Aj + ; DATA XREF: seg001:025Eo + les bx, dword_11DCC + mov byte ptr es:[bx+14h], 1 + mov byte ptr es:[bx+1Dh], 1 + jmp short loc_A5A4 +; --------------------------------------------------------------------------- + +loc_A56E: ; CODE XREF: sub_A4CF+7Aj + ; DATA XREF: seg001:0260o + les bx, dword_11DCC + mov byte ptr es:[bx+14h], 2 + mov byte ptr es:[bx+1Dh], 2 + jmp short loc_A5A4 +; --------------------------------------------------------------------------- + +loc_A57E: ; CODE XREF: sub_A4CF+7Aj + ; DATA XREF: seg001:0262o + les bx, dword_11DCC + mov byte ptr es:[bx+14h], 3 + mov byte ptr es:[bx+1Dh], 4 + jmp short loc_A5A4 +; --------------------------------------------------------------------------- + +loc_A58E: ; CODE XREF: sub_A4CF+7Aj + ; DATA XREF: seg001:0264o + les bx, dword_11DCC + mov byte ptr es:[bx+14h], 2 + mov byte ptr es:[bx+1Dh], 6 + push 208h + call sub_DC76 + +loc_A5A4: ; CODE XREF: sub_A4CF+76j sub_A4CF+8Dj ... + xor si, si + jmp short loc_A5BF +; --------------------------------------------------------------------------- + +loc_A5A8: ; CODE XREF: sub_A4CF+F3j + les bx, dword_11DCC + add bx, si + mov byte ptr es:[bx+20h], 0 + mov bx, word ptr dword_11DCC + add bx, si + mov byte ptr es:[bx+44h], 0 + inc si + +loc_A5BF: ; CODE XREF: sub_A4CF+D7j + cmp si, 8 + jl short loc_A5A8 + call sub_BC83 + call sub_BB0E + push 1 + call sub_644 + call sub_D7EC + push large 0 + push ds + push offset aMain ; "main" + push ds + push offset aMain ; "main" + call _execl + add sp, 0Ch + +loc_A5E9: ; CODE XREF: sub_A4CF+63j + pop si + pop bp + retn +sub_A4CF endp + +; --------------------------------------------------------------------------- +off_A5EC dw offset loc_A54E ; DATA XREF: sub_A4CF+7Ar + dw offset loc_A55E + dw offset loc_A56E + dw offset loc_A57E + dw offset loc_A58E + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A5F6 proc near ; CODE XREF: sub_A9D6+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, 0FAh ; 'ú' + mov di, ax + push 100h + push ax + push large 800010h + call sub_E2D8 + push 0C0h ; 'À' + push [bp+arg_0] + call sub_EE2 + mov [bp+var_2], si + mov bx, si + cmp bx, 5 + ja short loc_A69A + add bx, bx + jmp cs:off_A70B[bx] + +loc_A634: ; DATA XREF: seg001:off_A70Bo + push large 11000FAh + push 0Ah + call sub_E114 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov ah, 0 + add ax, 16h + mov [bp+var_2], ax + jmp short loc_A69A +; --------------------------------------------------------------------------- + +loc_A653: ; CODE XREF: sub_A5F6+39j + ; DATA XREF: seg001:037Do + cmp byte_14116, 0 + +loc_A658: ; CODE XREF: sub_A4CF+7Aj + jnz short loc_A665 + push large 0C00002h + call sub_EE2 + +loc_A665: ; CODE XREF: sub_A5F6:loc_A658j + push large 110010Eh + push 0Bh + jmp short loc_A695 +; --------------------------------------------------------------------------- + +loc_A66F: ; CODE XREF: sub_A5F6+39j + ; DATA XREF: seg001:037Fo + push large 1100122h + push 0Ch + jmp short loc_A695 +; --------------------------------------------------------------------------- + +loc_A679: ; CODE XREF: sub_A5F6+39j + ; DATA XREF: seg001:0381o + push large 1100136h + push 0Dh + jmp short loc_A695 +; --------------------------------------------------------------------------- + +loc_A683: ; CODE XREF: sub_A5F6+39j + ; DATA XREF: seg001:0383o + push large 110014Ah + push 0Eh + jmp short loc_A695 +; --------------------------------------------------------------------------- + +loc_A68D: ; CODE XREF: sub_A5F6+39j + ; DATA XREF: seg001:0385o + push large 110015Eh + push 0Fh + +loc_A695: ; CODE XREF: sub_A5F6+77j sub_A5F6+81j ... + call sub_E114 + +loc_A69A: ; CODE XREF: sub_A5F6+35j sub_A5F6+5Bj + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + cmp [bp+arg_0], 0Eh + jnz short loc_A705 + push 100h + push di + push 23h ; '#' + call sub_D758 + push 160h + push di + push 24h ; '$' + call sub_D758 + push large 180h + push large 2800010h + call sub_E2D8 + mov word_F9BE, 2 + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+94h] ; s + call _strlen + add sp, 4 + shl ax, 3 + mov dx, 270h + sub dx, ax + push dx + push large 1800009h + mov bx, [bp+var_2] + shl bx, 2 + push large dword ptr [bx+94h] + call far ptr loc_D436 + +loc_A705: ; CODE XREF: sub_A5F6+AEj + pop di + pop si + leave + retn 4 +sub_A5F6 endp + +; --------------------------------------------------------------------------- +off_A70B dw offset loc_A634 ; DATA XREF: sub_A5F6+39r + dw offset loc_A653 + dw offset loc_A66F + dw offset loc_A679 + dw offset loc_A683 + dw offset loc_A68D + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A717 proc near ; CODE XREF: sub_ABCF+37p + ; sub_ABCF+22Dp ... + +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, 0FAh ; 'ú' + mov [bp+var_4], ax + cmp [bp+arg_2], 7 + jnz short loc_A737 + mov [bp+var_4], 16Eh + +loc_A737: ; CODE XREF: sub_A717+19j + push 0E0h ; 'à' + push [bp+var_4] + push large 0C00010h + call sub_E2D8 + push 0C0h ; 'À' + push [bp+arg_0] + call sub_EE2 + mov bx, [bp+arg_2] + cmp bx, 7 + ja loc_A8DA + add bx, bx + jmp cs:off_A958[bx] + +loc_A764: ; DATA XREF: seg001:off_A958o + push large 0E000FAh + push 10h + call sub_E114 + push large 14000FAh + les bx, dword_11DCC + mov al, es:[bx+11h] + mov ah, 0 + add ax, 15h + push ax + call sub_E114 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov ah, 0 + add ax, 6 + +loc_A797: ; CODE XREF: sub_A717+11Dj + ; sub_A717+16Aj ... + mov si, ax + jmp loc_A8DA +; --------------------------------------------------------------------------- + +loc_A79C: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05CAo + push large 0E0010Ah + push 11h + call sub_E114 + push large 140010Ah + les bx, dword_11DCC + mov al, es:[bx+0Fh] + mov ah, 0 + push ax + call sub_E114 + mov si, 0Ah + jmp loc_A8DA +; --------------------------------------------------------------------------- + +loc_A7C5: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05CCo + push large 0E0011Ah + push 12h + call sub_E114 + push large 140011Ah + les bx, dword_11DCC + mov al, es:[bx+10h] + mov ah, 0 + push ax + call sub_E114 + mov si, 0Bh + jmp loc_A8DA +; --------------------------------------------------------------------------- + +loc_A7EE: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05CEo + push large 0E0012Ah + push 13h + call sub_E114 + les bx, dword_11DCC + cmp byte ptr es:[bx+12h], 0 + jnz short loc_A80B + mov ax, 1Ch + jmp short loc_A818 +; --------------------------------------------------------------------------- + +loc_A80B: ; CODE XREF: sub_A717+EDj + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + add ax, 18h + +loc_A818: ; CODE XREF: sub_A717+F2j + mov [bp+var_2], ax + push large 140012Ah + push ax + call sub_E114 + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + add ax, 0Ch + jmp loc_A797 +; --------------------------------------------------------------------------- + +loc_A837: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05D0o + push large 0E0013Ah + push 14h + call sub_E114 + les bx, dword_11DCC + cmp byte ptr es:[bx+15h], 0 + jnz short loc_A854 + mov ax, 1Ch + jmp short loc_A865 +; --------------------------------------------------------------------------- + +loc_A854: ; CODE XREF: sub_A717+136j + les bx, dword_11DCC + +loc_A858: ; CODE XREF: sub_A5F6+39j + mov al, es:[bx+15h] + mov ah, 0 + push ax + mov ax, 1Fh + pop dx + sub ax, dx + +loc_A865: ; CODE XREF: sub_A717+13Bj + mov [bp+var_2], ax + push large 140013Ah + push ax + call sub_E114 + les bx, dword_11DCC + mov al, es:[bx+15h] + mov ah, 0 + add ax, 0Fh + jmp loc_A797 +; --------------------------------------------------------------------------- + +loc_A884: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05D2o + push large 110014Ah + les bx, dword_11DCC + mov al, es:[bx+16h] + mov ah, 0 + mov dx, 21h ; '!' + sub dx, ax + push dx + call sub_E114 + mov di, 100h + les bx, dword_11DCC + mov al, es:[bx+16h] + mov ah, 0 + add ax, 12h + jmp loc_A797 +; --------------------------------------------------------------------------- + +loc_A8B2: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05D4o + push large 110015Ah + push 1Fh + call sub_E114 + mov di, 100h + mov si, 14h + jmp short loc_A8DA +; --------------------------------------------------------------------------- + +loc_A8C7: ; CODE XREF: sub_A717+48j + ; DATA XREF: seg001:05D6o + push large 110016Eh + push 0Fh + call sub_E114 + mov di, 100h + mov si, 15h + +loc_A8DA: ; CODE XREF: sub_A717+42j sub_A717+82j ... + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + cmp [bp+arg_0], 0Eh + jnz short loc_A951 + push di + push [bp+var_4] + push 23h ; '#' + call sub_D758 + cmp di, 100h + jnz short loc_A8FD + lea ax, [di+60h] + push ax + jmp short loc_A900 +; --------------------------------------------------------------------------- + +loc_A8FD: ; CODE XREF: sub_A717+1DEj + push 180h + +loc_A900: ; CODE XREF: sub_A717+1E4j + push [bp+var_4] + push 24h ; '$' + call sub_D758 + push large 180h + push large 2800010h + call sub_E2D8 + mov word_F9BE, 2 + mov bx, si + shl bx, 2 + push large dword ptr [bx+94h] ; s + call _strlen + add sp, 4 + shl ax, 3 + mov dx, 270h + sub dx, ax + push dx + push large 1800009h + mov bx, si + shl bx, 2 + push large dword ptr [bx+94h] + call far ptr loc_D436 + +loc_A951: ; CODE XREF: sub_A717+1CDj + pop di + pop si + leave + retn 4 +sub_A717 endp + +; --------------------------------------------------------------------------- + db 0 +off_A958 dw offset loc_A764 ; DATA XREF: sub_A717+48r + dw offset loc_A79C + dw offset loc_A7C5 + dw offset loc_A7EE + dw offset loc_A837 + dw offset loc_A884 + dw offset loc_A8B2 + dw offset loc_A8C7 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A968 proc near ; CODE XREF: sub_A9D6+75p sub_A9D6+83p ... + +arg_0 = byte ptr 4 +arg_2 = byte ptr 6 + + push bp + mov bp, sp + mov al, byte_F071 + cbw + push ax + push 8 + call word_11DD2 + mov al, [bp+arg_0] + add byte_F071, al + mov al, byte_F071 + cbw + or ax, ax + jge short loc_A98B + mov al, [bp+arg_2] + mov byte_F071, al + +loc_A98B: ; CODE XREF: sub_A968+1Bj + mov al, byte_F071 + cmp al, [bp+arg_2] + jle short loc_A998 + mov byte_F071, 0 + +loc_A998: ; CODE XREF: sub_A968+29j + cmp byte_14116, 0 + jnz short loc_A9B6 + mov al, byte_F071 + cbw + cmp ax, 1 + jnz short loc_A9B6 + cmp byte_11DD0, 0 + jnz short loc_A9B6 + mov al, [bp+arg_0] + add byte_F071, al + +loc_A9B6: ; CODE XREF: sub_A968+35j sub_A968+3Ej ... + mov al, byte_F071 + cbw + push ax + push 0Eh + call word_11DD2 + call sub_D5F6 + push 1 + call sub_D602 + call sub_D63C + pop bp + retn 4 +sub_A968 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_A9D6 proc near ; CODE XREF: _main:loc_B022p + push bp + mov bp, sp + push si + cmp byte_F0DC, 0 + jnz short loc_AA2B + mov byte_F073, 0 + mov byte_11DD4, 0 + push large 0C000FAh + push large 12000A0h + call sub_E2D8 + xor si, si + jmp short loc_AA16 +; --------------------------------------------------------------------------- + +loc_AA00: ; CODE XREF: sub_A9D6+43j + push si + mov al, byte_F071 + cbw + cmp ax, si + jnz short loc_AA0E + mov ax, 0Eh + jmp short loc_AA11 +; --------------------------------------------------------------------------- + +loc_AA0E: ; CODE XREF: sub_A9D6+31j + mov ax, 8 + +loc_AA11: ; CODE XREF: sub_A9D6+36j + push ax + call sub_A5F6 + inc si + +loc_AA16: ; CODE XREF: sub_A9D6+28j + cmp si, 6 + jl short loc_AA00 + mov word_11DD2, 266h + mov byte_F0DC, 1 + mov byte_11DD4, 0 + +loc_AA2B: ; CODE XREF: sub_A9D6+9j + cmp word_12A72, 0 + jnz short loc_AA37 + mov byte_11DD4, 1 + +loc_AA37: ; CODE XREF: sub_A9D6+5Aj + cmp byte_11DD4, 0 + jz loc_ABC0 + test byte ptr word_12A72, 1 + jz short loc_AA4E + push 5 + push 0FFFFh + call sub_A968 + +loc_AA4E: ; CODE XREF: sub_A9D6+6Fj + test byte ptr word_12A72, 2 + jz short loc_AA5C + push 5 + push 1 + call sub_A968 + +loc_AA5C: ; CODE XREF: sub_A9D6+7Dj + test byte ptr word_12A72+1, 20h + jnz short loc_AA6C + test byte ptr word_12A72, 20h + jz loc_ABA8 + +loc_AA6C: ; CODE XREF: sub_A9D6+8Bj + call sub_D5F6 + push 0Bh + call sub_D602 + call sub_D63C + mov al, byte_F071 + cbw + mov bx, ax + cmp bx, 5 + ja loc_ABA8 + add bx, bx + jmp cs:off_ABC3[bx] + +loc_AA91: ; DATA XREF: seg001:off_ABC3o + call sub_A39C + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + mov word_F52E, 64h ; 'd' + call far ptr loc_19F0 + mov byte_F0DC, 0 + mov byte_11DD0, 0 + mov byte_F071, 0 + jmp loc_ABC0 +; --------------------------------------------------------------------------- + +loc_AAE1: ; CODE XREF: sub_A9D6+B6j + ; DATA XREF: seg001:0835o + call sub_A447 + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + mov word_F52E, 64h ; 'd' + call far ptr loc_19F0 + mov byte_F0DC, 0 + mov byte_11DD0, 0 + mov byte_F071, 1 + jmp loc_ABC0 +; --------------------------------------------------------------------------- + +loc_AB31: ; CODE XREF: sub_A9D6+B6j + ; DATA XREF: seg001:0837o + call sub_CC5C + mov byte_F0DC, 0 + jmp short loc_ABA8 +; --------------------------------------------------------------------------- + +loc_AB3B: ; CODE XREF: sub_A9D6+B6j + ; DATA XREF: seg001:0839o + call sub_C490 + call sub_BC0F + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + mov word_F52E, 64h ; 'd' + call far ptr loc_19F0 + mov byte_F0DC, 0 + mov byte_11DD0, 0 + mov byte_F071, 3 + jmp short loc_ABC0 +; --------------------------------------------------------------------------- + +loc_AB8D: ; CODE XREF: sub_A9D6+B6j + ; DATA XREF: seg001:083Bo + mov byte_F0DC, 0 + mov byte_11DD0, 1 + mov byte_F071, 0 + jmp short loc_ABA8 +; --------------------------------------------------------------------------- + +loc_AB9E: ; CODE XREF: sub_A9D6+B6j + ; DATA XREF: seg001:083Do + mov byte_F0DC, 0 + mov byte_F072, 1 + +loc_ABA8: ; CODE XREF: sub_A9D6+92j sub_A9D6+B0j ... + test byte ptr word_12A72+1, 10h + jz short loc_ABB4 + mov byte_F072, 1 + +loc_ABB4: ; CODE XREF: sub_A9D6+1D7j + cmp word_12A72, 0 + jz short loc_ABC0 + mov byte_11DD4, 0 + +loc_ABC0: ; CODE XREF: sub_A9D6+66j + ; sub_A9D6+108j ... + pop si + pop bp + retn +sub_A9D6 endp + +; --------------------------------------------------------------------------- +off_ABC3 dw offset loc_AA91 ; DATA XREF: sub_A9D6+B6r + dw offset loc_AAE1 + dw offset loc_AB31 + dw offset loc_AB3B + dw offset loc_AB8D + dw offset loc_AB9E + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_ABCF proc near ; CODE XREF: _main:loc_B032p + push bp + mov bp, sp + push si + cmp byte_F0DD, 0 + jnz short loc_AC1F + mov byte_11DD5, 0 + push large 11000FAh + push large 0A00090h + call sub_E2D8 + xor si, si + jmp short loc_AC0A +; --------------------------------------------------------------------------- + +loc_ABF4: ; CODE XREF: sub_ABCF+3Ej + push si + mov al, byte_F071 + cbw + cmp ax, si + jnz short loc_AC02 + mov ax, 0Eh + jmp short loc_AC05 +; --------------------------------------------------------------------------- + +loc_AC02: ; CODE XREF: sub_ABCF+2Cj + mov ax, 8 + +loc_AC05: ; CODE XREF: sub_ABCF+31j + push ax + call sub_A717 + inc si + +loc_AC0A: ; CODE XREF: sub_ABCF+23j + cmp si, 8 + jl short loc_ABF4 + mov word_11DD2, 387h + mov byte_F0DD, 1 + mov byte_11DD5, 0 + +loc_AC1F: ; CODE XREF: sub_ABCF+9j + cmp word_12A72, 0 + jnz short loc_AC2B + mov byte_11DD5, 1 + +loc_AC2B: ; CODE XREF: sub_ABCF+55j + cmp byte_11DD5, 0 + jz loc_AF2E + test byte ptr word_12A72, 1 + jz short loc_AC42 + push 7 + push 0FFFFh + call sub_A968 + +loc_AC42: ; CODE XREF: sub_ABCF+6Aj + test byte ptr word_12A72, 2 + jz short loc_AC50 + push 7 + push 1 + call sub_A968 + +loc_AC50: ; CODE XREF: sub_ABCF+78j + test byte ptr word_12A72+1, 20h + jnz short loc_AC60 + test byte ptr word_12A72, 20h + jz loc_ACF8 + +loc_AC60: ; CODE XREF: sub_ABCF+86j + mov al, byte_F071 + cbw + cmp ax, 6 + jz short loc_AC71 + cmp ax, 7 + jz short loc_ACD8 + jmp loc_AD01 +; --------------------------------------------------------------------------- + +loc_AC71: ; CODE XREF: sub_ABCF+98j + les bx, dword_11DCC + mov byte ptr es:[bx+11h], 1 + mov byte ptr es:[bx+0Fh], 3 + mov byte ptr es:[bx+10h], 3 + mov byte ptr es:[bx+12h], 2 + mov byte ptr es:[bx+15h], 1 + mov byte ptr es:[bx+16h], 1 + push 100h + call sub_DC76 + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aMiko ; "miko" + push 0B00h + call sub_DBBE + push ds + push offset aOp ; "op" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + mov byte_F0DD, 0 + jmp short loc_ACF8 +; --------------------------------------------------------------------------- + +loc_ACD8: ; CODE XREF: sub_ABCF+9Dj + call sub_D5F6 + push 0Bh + call sub_D602 + call sub_D63C + mov byte_F0DD, 0 + mov byte_F071, 4 + mov byte_11DD0, 0 + +loc_ACF8: ; CODE XREF: sub_ABCF+8Dj + ; sub_ABCF+107j + test byte ptr word_12A72, 8 + jz loc_ADFF + +loc_AD01: ; CODE XREF: sub_ABCF+9Fj + mov al, byte_F071 + cbw + mov bx, ax + cmp bx, 5 + ja loc_ADF5 + add bx, bx + jmp cs:off_AF3D[bx] + +loc_AD15: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:off_AF3Do + les bx, dword_11DCC + inc byte ptr es:[bx+11h] + cmp byte ptr es:[bx+11h], 3 + jbe loc_ADF5 + mov byte ptr es:[bx+11h], 0 + jmp loc_ADF5 +; --------------------------------------------------------------------------- + +loc_AD2E: ; CODE XREF: sub_ABCF+141j + ; sub_ABCF+248j + ; DATA XREF: ... + les bx, dword_11DCC + inc byte ptr es:[bx+0Fh] + cmp byte ptr es:[bx+0Fh], 6 + jbe loc_ADF5 + mov byte ptr es:[bx+0Fh], 1 + jmp loc_ADF5 +; --------------------------------------------------------------------------- + +loc_AD47: ; CODE XREF: sub_ABCF+141j + ; sub_ABCF+248j + ; DATA XREF: ... + les bx, dword_11DCC + inc byte ptr es:[bx+10h] + cmp byte ptr es:[bx+10h], 3 + jbe loc_ADF5 + mov byte ptr es:[bx+10h], 0 + jmp loc_ADF5 +; --------------------------------------------------------------------------- + +loc_AD60: ; CODE XREF: sub_ABCF+141j + ; sub_ABCF+248j + ; DATA XREF: ... + les bx, dword_11DCC + inc byte ptr es:[bx+12h] + cmp byte ptr es:[bx+12h], 3 + jb short loc_AD74 + mov byte ptr es:[bx+12h], 0 + +loc_AD74: ; CODE XREF: sub_ABCF+19Ej + push 100h + call sub_DC76 + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aOp ; "op" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + jmp short loc_ADF5 +; --------------------------------------------------------------------------- + +loc_ADA8: ; CODE XREF: sub_ABCF+141j + ; sub_ABCF+248j + ; DATA XREF: ... + les bx, dword_11DCC + cmp byte ptr es:[bx+15h], 0 + jnz short loc_ADBA + mov byte ptr es:[bx+15h], 2 + jmp short loc_ADC2 +; --------------------------------------------------------------------------- + +loc_ADBA: ; CODE XREF: sub_ABCF+1E2j + les bx, dword_11DCC + dec byte ptr es:[bx+15h] + +loc_ADC2: ; CODE XREF: sub_ABCF+1E9j + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aMiko ; "miko" + push 0B00h + call sub_DBBE + jmp short loc_ADF5 +; --------------------------------------------------------------------------- + +loc_ADE7: ; CODE XREF: sub_ABCF+141j + ; sub_ABCF+248j + ; DATA XREF: ... + les bx, dword_11DCC + mov al, 1 + sub al, es:[bx+16h] + mov es:[bx+16h], al + +loc_ADF5: ; CODE XREF: sub_ABCF+13Bj + ; sub_ABCF+153j ... + mov al, byte_F071 + cbw + push ax + push 0Eh + call sub_A717 + +loc_ADFF: ; CODE XREF: sub_ABCF+12Ej + test byte ptr word_12A72, 4 + jz loc_AF0C + mov al, byte_F071 + cbw + mov bx, ax + cmp bx, 5 + ja loc_AF02 + add bx, bx + jmp cs:off_AF31[bx] + +loc_AE1C: ; DATA XREF: seg001:off_AF31o + les bx, dword_11DCC + cmp byte ptr es:[bx+11h], 0 + jnz short loc_AE2C + mov byte ptr es:[bx+11h], 4 + +loc_AE2C: ; CODE XREF: sub_ABCF+256j + les bx, dword_11DCC + dec byte ptr es:[bx+11h] + jmp loc_AF02 +; --------------------------------------------------------------------------- + +loc_AE37: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:0BA3o + les bx, dword_11DCC + cmp byte ptr es:[bx+0Fh], 1 + jnz short loc_AE47 + mov byte ptr es:[bx+0Fh], 7 + +loc_AE47: ; CODE XREF: sub_ABCF+271j + les bx, dword_11DCC + dec byte ptr es:[bx+0Fh] + jmp loc_AF02 +; --------------------------------------------------------------------------- + +loc_AE52: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:0BA5o + les bx, dword_11DCC + cmp byte ptr es:[bx+10h], 0 + jnz short loc_AE62 + mov byte ptr es:[bx+10h], 4 + +loc_AE62: ; CODE XREF: sub_ABCF+28Cj + les bx, dword_11DCC + dec byte ptr es:[bx+10h] + jmp loc_AF02 +; --------------------------------------------------------------------------- + +loc_AE6D: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:0BA7o + les bx, dword_11DCC + cmp byte ptr es:[bx+12h], 0 + jnz short loc_AE7F + mov byte ptr es:[bx+12h], 2 + jmp short loc_AE87 +; --------------------------------------------------------------------------- + +loc_AE7F: ; CODE XREF: sub_ABCF+2A7j + les bx, dword_11DCC + dec byte ptr es:[bx+12h] + +loc_AE87: ; CODE XREF: sub_ABCF+2AEj + push 100h + call sub_DC76 + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aOp ; "op" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + jmp short loc_AF02 +; --------------------------------------------------------------------------- + +loc_AEBB: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:0BA9o + les bx, dword_11DCC + inc byte ptr es:[bx+15h] + cmp byte ptr es:[bx+15h], 3 + jb short loc_AECF + mov byte ptr es:[bx+15h], 0 + +loc_AECF: ; CODE XREF: sub_ABCF+2F9j + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aMiko ; "miko" + push 0B00h + call sub_DBBE + jmp short loc_AF02 +; --------------------------------------------------------------------------- + +loc_AEF4: ; CODE XREF: sub_ABCF+248j + ; DATA XREF: seg001:0BABo + les bx, dword_11DCC + mov al, 1 + sub al, es:[bx+16h] + mov es:[bx+16h], al + +loc_AF02: ; CODE XREF: sub_ABCF+242j + ; sub_ABCF+265j ... + mov al, byte_F071 + cbw + push ax + push 0Eh + call sub_A717 + +loc_AF0C: ; CODE XREF: sub_ABCF+235j + test byte ptr word_12A72+1, 10h + jz short loc_AF22 + mov byte_F0DD, 0 + mov byte_F071, 4 + mov byte_11DD0, 0 + +loc_AF22: ; CODE XREF: sub_ABCF+342j + cmp word_12A72, 0 + jz short loc_AF2E + mov byte_11DD5, 0 + +loc_AF2E: ; CODE XREF: sub_ABCF+61j + ; sub_ABCF+358j + pop si + pop bp + retn +sub_ABCF endp + +; --------------------------------------------------------------------------- +off_AF31 dw offset loc_AE1C ; DATA XREF: sub_ABCF+248r + dw offset loc_AE37 + dw offset loc_AE52 + dw offset loc_AE6D + dw offset loc_AEBB + dw offset loc_AEF4 +off_AF3D dw offset loc_AD15 ; DATA XREF: sub_ABCF+141r + dw offset loc_AD2E + dw offset loc_AD47 + dw offset loc_AD60 + dw offset loc_ADA8 + dw offset loc_ADE7 + +; =============== 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_20FE + call sub_2B18 + mov word_F9CC, 5208h + push ds + push offset unk_F46C + call sub_DF12 + add sp, 4 + or ax, ax + jz short loc_AF7D + push ds + push offset unk_F478 + call sub_796 + call sub_A002 + +loc_AF7D: ; CODE XREF: _main+24j + call sub_BA94 + les bx, dword_11DCC + cmp byte ptr es:[bx+11h], 0FFh + jnz short loc_AF97 + call sub_B5A6 + les bx, dword_11DCC + mov byte ptr es:[bx+11h], 1 + +loc_AF97: ; CODE XREF: _main+40j + les bx, dword_11DCC + mov al, es:[bx+12h] + mov ah, 0 + push ax + mov al, es:[bx+15h] + mov ah, 0 + push ax + call sub_D380 + push ds + push offset aMiko ; "miko" + push 0B00h + call sub_DBBE + les bx, dword_11DCC + cmp byte ptr es:[bx+0Ah], 0 + jnz short loc_AFD1 + call sub_B806 + les bx, dword_11DCC + mov byte ptr es:[bx+0Ah], 1 + +loc_AFD1: ; CODE XREF: _main+7Aj + les bx, dword_11DCC + cmp byte ptr es:[bx+1Fh], 5 + jnz short loc_AFE1 + mov byte ptr es:[bx+1Fh], 0 + +loc_AFE1: ; CODE XREF: _main+91j + les bx, dword_11DCC + cmp byte ptr es:[bx+1Fh], 0 + jnz short loc_AFF4 + push 100h + call sub_DC76 + +loc_AFF4: ; CODE XREF: _main+A1j + call sub_BC8D + call sub_BC0F + call sub_CD94 + mov byte_11DD0, 0 + mov byte_F072, 0 + mov byte_F071, 0 + jmp short loc_B058 +; --------------------------------------------------------------------------- + +loc_B00E: ; CODE XREF: _main+114j + call sub_E094 + mov al, byte_11DD0 + cbw + or ax, ax + jz short loc_B022 + cmp ax, 1 + jz short loc_B032 + jmp short loc_B035 +; --------------------------------------------------------------------------- + +loc_B022: ; CODE XREF: _main+D0j + call sub_A9D6 + cmp si, 280h + jl short loc_B035 + call sub_A4CF + xor si, si + jmp short loc_B035 +; --------------------------------------------------------------------------- + +loc_B032: ; CODE XREF: _main+D5j + call sub_ABCF + +loc_B035: ; CODE XREF: _main+D7j _main+E0j ... + cmp word_12A72, 0 + jz short loc_B043 + cmp word_12A72, 0Ch + jnz short loc_B046 + +loc_B043: ; CODE XREF: _main+F1j + inc si + jmp short loc_B048 +; --------------------------------------------------------------------------- + +loc_B046: ; CODE XREF: _main+F8j + xor si, si + +loc_B048: ; CODE XREF: _main+FBj + les bx, dword_11DCC + inc dword ptr es:[bx+28h] + push 1 + call sub_E15E + +loc_B058: ; CODE XREF: _main+C3j + cmp byte_F072, 0 + jz short loc_B00E + call sub_BC83 + call sub_BB91 + call sub_20FE + call sub_D41C + call sub_2B8E + pop si + pop bp + retf +_main endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B077 proc near ; CODE XREF: sub_B14A+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_12F30 + shl ax, 4 + push ax + push 10h + call sub_E2D8 + push si + push di + push 2 + call sub_292A + push si + lea ax, [di+8] + push ax + push 6 + call sub_292A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B0CD +; --------------------------------------------------------------------------- + +loc_B0B2: ; CODE XREF: sub_B077+5Dj + push si + push di + push 0 + call sub_292A + push si + lea ax, [di+8] + push ax + push 3 + call sub_292A + inc [bp+var_2] + add si, 10h + +loc_B0CD: ; CODE XREF: sub_B077+39j + mov ax, word_12F30 + dec ax + cmp ax, [bp+var_2] + jg short loc_B0B2 + push si + push di + push 4 + call sub_292A + push si + lea ax, [di+8] + push ax + push 7 + call sub_292A + pop di + pop si + leave + retn 4 +sub_B077 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B0F1 proc near ; CODE XREF: sub_B234+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_12F30 + shl ax, 4 + push ax + push 10h + call sub_E2D8 + push si + push di + push 6 + call sub_292A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B132 +; --------------------------------------------------------------------------- + +loc_B123: ; CODE XREF: sub_B0F1+48j + push si + push di + push 3 + call sub_292A + inc [bp+var_2] + add si, 10h + +loc_B132: ; CODE XREF: sub_B0F1+30j + mov ax, word_12F30 + dec ax + cmp ax, [bp+var_2] + jg short loc_B123 + push si + push di + push 7 + call sub_292A + pop di + pop si + leave + retn 4 +sub_B0F1 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B14A proc near ; CODE XREF: sub_B36C+36p sub_B36C+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_292A + add [bp+var_2], 10h + mov di, 1 + jmp short loc_B17B +; --------------------------------------------------------------------------- + +loc_B16B: ; CODE XREF: sub_B14A+37j + push [bp+var_2] + push si + push 1 + call sub_292A + inc di + add [bp+var_2], 10h + +loc_B17B: ; CODE XREF: sub_B14A+1Fj + mov ax, word_12F30 + dec ax + cmp ax, di + jg short loc_B16B + push [bp+var_2] + push si + push 8 + call sub_292A + add si, 10h + mov di, 1 + jmp short loc_B1A8 +; --------------------------------------------------------------------------- + +loc_B196: ; CODE XREF: sub_B14A+68j + push [bp+arg_2] + push si + call sub_B077 + push 1 + call sub_E15E + inc di + add si, 8 + +loc_B1A8: ; CODE XREF: sub_B14A+4Aj + mov ax, word_12F32 + add ax, ax + add ax, 0FFFDh + cmp ax, di + jg short loc_B196 + pop di + pop si + leave + retn 4 +sub_B14A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B1BA proc near ; CODE XREF: sub_B36C+10p sub_B489+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_12F30 + shl ax, 4 + push ax + push 20h ; ' ' + call sub_E2D8 + push si + push di + push 5 + call sub_292A + push si + lea ax, [di+10h] + push ax + push 6 + call sub_292A + add si, 10h + mov [bp+var_2], 1 + jmp short loc_B210 +; --------------------------------------------------------------------------- + +loc_B1F5: ; CODE XREF: sub_B1BA+5Dj + push si + push di + push 1 + call sub_292A + push si + lea ax, [di+10h] + push ax + push 3 + call sub_292A + inc [bp+var_2] + add si, 10h + +loc_B210: ; CODE XREF: sub_B1BA+39j + mov ax, word_12F30 + dec ax + cmp ax, [bp+var_2] + jg short loc_B1F5 + push si + push di + push 8 + call sub_292A + push si + lea ax, [di+10h] + push ax + push 7 + call sub_292A + pop di + pop si + leave + retn 4 +sub_B1BA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B234 proc near ; CODE XREF: sub_B36C+F8p + ; sub_B36C+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_12F32 + shl ax, 4 + add ax, 0FFF0h + add si, ax + mov di, 1 + jmp short loc_B25E +; --------------------------------------------------------------------------- + +loc_B24C: ; CODE XREF: sub_B234+34j + push [bp+arg_2] + push si + call sub_B0F1 + push 1 + call sub_E15E + inc di + sub si, 8 + +loc_B25E: ; CODE XREF: sub_B234+16j + mov ax, word_12F32 + add ax, ax + add ax, 0FFFEh + cmp ax, di + jg short loc_B24C + pop di + pop si + pop bp + retn 4 +sub_B234 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B270 proc near ; CODE XREF: sub_B36C+51p sub_B36C+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_B2A0 + cmp ax, 1 + jz short loc_B293 + cmp ax, 2 + jnz short loc_B2AB + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E1Dh + jmp short loc_B2AB +; --------------------------------------------------------------------------- + +loc_B293: ; CODE XREF: sub_B270+12j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E2Eh + add si, 10h + jmp short loc_B2AB +; --------------------------------------------------------------------------- + +loc_B2A0: ; CODE XREF: sub_B270+Dj + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E3Fh + add si, 20h ; ' ' + +loc_B2AB: ; CODE XREF: sub_B270+17j sub_B270+21j ... + push 30h ; '0' + push si + push [bp+arg_0] + push large [bp+var_4] + call far ptr loc_D436 + pop si + leave + retn 4 +sub_B270 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B2BF proc near ; CODE XREF: sub_B489+51p sub_B489+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_B2F1 + cmp ax, 1 + jz short loc_B2DA + cmp ax, 2 + jz short loc_B2E4 + jmp short loc_B2FC +; --------------------------------------------------------------------------- + +loc_B2DA: ; CODE XREF: sub_B2BF+12j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E50h + jmp short loc_B2FC +; --------------------------------------------------------------------------- + +loc_B2E4: ; CODE XREF: sub_B2BF+17j + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E61h + add si, 10h + jmp short loc_B2FC +; --------------------------------------------------------------------------- + +loc_B2F1: ; CODE XREF: sub_B2BF+Dj + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 0E72h + add si, 20h ; ' ' + +loc_B2FC: ; CODE XREF: sub_B2BF+19j sub_B2BF+23j ... + push 30h ; '0' + push si + push [bp+arg_0] + push large [bp+var_4] + call far ptr loc_D436 + pop si + leave + retn 4 +sub_B2BF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B310 proc near ; CODE XREF: sub_B36C+72p + push bp + mov bp, sp + push si + push di + mov di, 88h ; 'ˆ' + xor si, si + jmp short loc_B335 +; --------------------------------------------------------------------------- + +loc_B31C: ; CODE XREF: sub_B310+28j + push 0D0h ; 'Ð' + push di + push 0Fh + mov bx, si + shl bx, 2 + push large dword ptr [bx+0AB6h] + call far ptr loc_D436 + inc si + add di, 10h + +loc_B335: ; CODE XREF: sub_B310+Aj + cmp si, 9 + jl short loc_B31C + pop di + pop si + pop bp + retn +sub_B310 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B33E proc near ; CODE XREF: sub_B489+72p + push bp + mov bp, sp + push si + push di + mov di, 88h ; 'ˆ' + xor si, si + jmp short loc_B363 +; --------------------------------------------------------------------------- + +loc_B34A: ; CODE XREF: sub_B33E+28j + push 0D0h ; 'Ð' + push di + push 0Fh + mov bx, si + shl bx, 2 + push large dword ptr [bx+0ADAh] + call far ptr loc_D436 + inc si + add di, 10h + +loc_B363: ; CODE XREF: sub_B33E+Aj + cmp si, 9 + jl short loc_B34A + pop di + pop si + pop bp + retn +sub_B33E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B36C proc near ; CODE XREF: sub_B5A6+4Ep + +var_2 = word ptr -2 + + enter 2, 0 + mov word_12F30, 1Ch + push large 600050h + call sub_B1BA + push large 700058h + push 0Fh + push ds + push offset unk_FE63 + call far ptr loc_D436 + mov word_12F30, 0Ah + mov word_12F32, 4 + push large 200080h + call sub_B14A + mov [bp+var_2], 0 + jmp short loc_B3C3 +; --------------------------------------------------------------------------- + +loc_B3AC: ; CODE XREF: sub_B36C+5Bj + push [bp+var_2] + cmp [bp+var_2], 2 + jnz short loc_B3BA + mov ax, 0Fh + jmp short loc_B3BC +; --------------------------------------------------------------------------- + +loc_B3BA: ; CODE XREF: sub_B36C+47j + xor ax, ax + +loc_B3BC: ; CODE XREF: sub_B36C+4Cj + push ax + call sub_B270 + inc [bp+var_2] + +loc_B3C3: ; CODE XREF: sub_B36C+3Ej + cmp [bp+var_2], 3 + jl short loc_B3AC + mov word_12F30, 19h + mov word_12F32, 0Ah + push large 0C00080h + call sub_B14A + call sub_B310 + mov [bp+var_2], 2 + +loc_B3E6: ; CODE XREF: sub_B36C+C2j sub_B36C+E4j + push 0 + call sub_E0A4 + push 1 + call sub_E15E + test byte ptr word_12A72+1, 20h + jnz short loc_B452 + test byte ptr word_12A72, 20h + jnz short loc_B452 + test byte ptr word_12A72, 1 + jz short loc_B429 + push [bp+var_2] + push 0 + call sub_B270 + cmp [bp+var_2], 2 + jnz short loc_B41E + mov [bp+var_2], 0 + jmp short loc_B421 +; --------------------------------------------------------------------------- + +loc_B41E: ; CODE XREF: sub_B36C+A9j + inc [bp+var_2] + +loc_B421: ; CODE XREF: sub_B36C+B0j + push [bp+var_2] + push 0Fh + call sub_B270 + +loc_B429: ; CODE XREF: sub_B36C+9Bj + test byte ptr word_12A72, 2 + jz short loc_B3E6 + push [bp+var_2] + push 0 + call sub_B270 + cmp [bp+var_2], 0 + jnz short loc_B445 + mov [bp+var_2], 2 + jmp short loc_B448 +; --------------------------------------------------------------------------- + +loc_B445: ; CODE XREF: sub_B36C+D0j + dec [bp+var_2] + +loc_B448: ; CODE XREF: sub_B36C+D7j + push [bp+var_2] + push 0Fh + call sub_B270 + jmp short loc_B3E6 +; --------------------------------------------------------------------------- + +loc_B452: ; CODE XREF: sub_B36C+8Dj sub_B36C+94j + mov word_12F30, 19h + mov word_12F32, 0Ah + push large 0C00080h + call sub_B234 + mov word_12F30, 0Ah + mov word_12F32, 4 + push large 200080h + call sub_B234 + les bx, dword_11DCC + mov al, byte ptr [bp+var_2] + mov es:[bx+12h], al + leave + retn +sub_B36C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B489 proc near ; CODE XREF: sub_B5A6+5Fp + +var_2 = word ptr -2 + + enter 2, 0 + mov word_12F30, 1Ch + push large 600050h + call sub_B1BA + push large 700058h + push 0Fh + push ds + push offset unk_FE8E + call far ptr loc_D436 + mov word_12F30, 0Ah + mov word_12F32, 4 + push large 200080h + call sub_B14A + mov [bp+var_2], 0 + jmp short loc_B4E0 +; --------------------------------------------------------------------------- + +loc_B4C9: ; CODE XREF: sub_B489+5Bj + push [bp+var_2] + cmp [bp+var_2], 1 + jnz short loc_B4D7 + mov ax, 0Fh + jmp short loc_B4D9 +; --------------------------------------------------------------------------- + +loc_B4D7: ; CODE XREF: sub_B489+47j + xor ax, ax + +loc_B4D9: ; CODE XREF: sub_B489+4Cj + push ax + call sub_B2BF + inc [bp+var_2] + +loc_B4E0: ; CODE XREF: sub_B489+3Ej + cmp [bp+var_2], 3 + jl short loc_B4C9 + mov word_12F30, 19h + mov word_12F32, 0Ah + push large 0C00080h + call sub_B14A + call sub_B33E + mov [bp+var_2], 1 + +loc_B503: ; CODE XREF: sub_B489+C2j sub_B489+E4j + push 0 + call sub_E0A4 + push 1 + call sub_E15E + test byte ptr word_12A72+1, 20h + jnz short loc_B56F + test byte ptr word_12A72, 20h + jnz short loc_B56F + test byte ptr word_12A72, 2 + jz short loc_B546 + push [bp+var_2] + push 0 + call sub_B2BF + cmp [bp+var_2], 2 + jnz short loc_B53B + mov [bp+var_2], 0 + jmp short loc_B53E +; --------------------------------------------------------------------------- + +loc_B53B: ; CODE XREF: sub_B489+A9j + inc [bp+var_2] + +loc_B53E: ; CODE XREF: sub_B489+B0j + push [bp+var_2] + push 0Fh + call sub_B2BF + +loc_B546: ; CODE XREF: sub_B489+9Bj + test byte ptr word_12A72, 1 + jz short loc_B503 + push [bp+var_2] + push 0 + call sub_B2BF + cmp [bp+var_2], 0 + jnz short loc_B562 + mov [bp+var_2], 2 + jmp short loc_B565 +; --------------------------------------------------------------------------- + +loc_B562: ; CODE XREF: sub_B489+D0j + dec [bp+var_2] + +loc_B565: ; CODE XREF: sub_B489+D7j + push [bp+var_2] + push 0Fh + call sub_B2BF + jmp short loc_B503 +; --------------------------------------------------------------------------- + +loc_B56F: ; CODE XREF: sub_B489+8Dj sub_B489+94j + mov word_12F30, 19h + mov word_12F32, 0Ah + push large 0C00080h + call sub_B234 + mov word_12F30, 0Ah + mov word_12F32, 4 + push large 200080h + call sub_B234 + les bx, dword_11DCC + mov al, byte ptr [bp+var_2] + mov es:[bx+15h], al + leave + retn +sub_B489 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B5A6 proc near ; CODE XREF: _main+42p + push bp + mov bp, sp + mov word_F52E, 0 + call far ptr loc_19F0 + push ds + push offset aMswin_bft ; "mswin.bft" + call sub_2656 + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + push 1 + call sub_600 + call sub_B36C + push 1 + call sub_E15E + push 0 + call sub_1250 + call sub_B489 + push 1 + call sub_644 + call sub_24F2 + pop bp + retn +sub_B5A6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B616 proc near ; CODE XREF: sub_B806:loc_B9D7p + +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, 3F84h + mov [bp+var_2], 0 + jmp short loc_B68D +; --------------------------------------------------------------------------- + +loc_B63E: ; CODE XREF: sub_B616+7Cj + cmp byte ptr [si], 0 + jnz short loc_B687 + 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_1C5E + mov bx, 0E0h ; 'à' + cwd + idiv bx + add dx, 40h ; '@' + mov [si+0Ah], dx + call sub_1C5E + 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_B694 + +loc_B687: ; CODE XREF: sub_B616+2Bj + inc [bp+var_2] + add si, 0Eh + +loc_B68D: ; CODE XREF: sub_B616+26j + cmp [bp+var_2], 100h + jl short loc_B63E + +loc_B694: ; CODE XREF: sub_B616+6Fj + pop di + pop si + leave + retn 8 +sub_B616 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B69A proc near ; CODE XREF: sub_B806+1D9p + +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, 3F84h + xor di, di + jmp loc_B7B9 +; --------------------------------------------------------------------------- + +loc_B6A8: ; CODE XREF: sub_B69A+123j + cmp byte ptr [si], 1 + jnz loc_B7B5 + 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_B6DB + mov byte ptr [si], 0 + mov byte ptr [si+1], 0 + jmp loc_B7B5 +; --------------------------------------------------------------------------- + +loc_B6DB: ; CODE XREF: sub_B69A+35j + cmp byte ptr [si+1], 10h + jnb short loc_B6FA + 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_B7AC +; --------------------------------------------------------------------------- + +loc_B6FA: ; CODE XREF: sub_B69A+45j + cmp byte ptr [si+1], 20h ; ' ' + jnb short loc_B754 + cmp byte ptr [si+1], 10h + jnz short loc_B70D + push 0Fh + call sub_D602 + +loc_B70D: ; CODE XREF: sub_B69A+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+610h] + call sub_D834 + 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+590h] + call sub_D834 + add ax, 0FF80h + jmp short loc_B799 +; --------------------------------------------------------------------------- + +loc_B754: ; CODE XREF: sub_B69A+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+610h] + call sub_D834 + 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+590h] + call sub_D834 + add ax, 0FF00h + +loc_B799: ; CODE XREF: sub_B69A+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_B7AC: ; CODE XREF: sub_B69A+5Dj + push ax + push [bp+var_8] + call far ptr loc_2736 + +loc_B7B5: ; CODE XREF: sub_B69A+11j sub_B69A+3Ej + inc di + add si, 0Eh + +loc_B7B9: ; CODE XREF: sub_B69A+Bj + cmp di, 100h + jl loc_B6A8 + pop di + pop si + leave + retn +sub_B69A endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B7C5 proc near ; CODE XREF: sub_B806+21Bp + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + push di + xor si, si + jmp short loc_B7F6 +; --------------------------------------------------------------------------- + +loc_B7CE: ; CODE XREF: sub_B7C5+34j + xor di, di + jmp short loc_B7F0 +; --------------------------------------------------------------------------- + +loc_B7D2: ; CODE XREF: sub_B7C5+2Ej + mov bx, si + imul bx, 3 + mov al, [bx+di+3F54h] + mov ah, 0 + imul [bp+arg_0] + mov bx, 64h ; 'd' + cwd + idiv bx + mov bx, si + imul bx, 3 + mov [bx+di+2E1Eh], al + inc di + +loc_B7F0: ; CODE XREF: sub_B7C5+Bj + cmp di, 3 + jl short loc_B7D2 + inc si + +loc_B7F6: ; CODE XREF: sub_B7C5+7j + cmp si, 0Fh + jl short loc_B7CE + call far ptr loc_19F0 + pop di + pop si + pop bp + retn 2 +sub_B7C5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_B806 proc near ; CODE XREF: _main+7Cp + +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_F52E, 0 + call far ptr loc_19F0 + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + call sub_D688 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + xor si, si + jmp short loc_B8C7 +; --------------------------------------------------------------------------- + +loc_B872: ; CODE XREF: sub_B806+C4j + mov bx, si + imul bx, 3 + mov al, [bx+2E1Eh] + mov bx, si + imul bx, 3 + mov [bx+3F54h], al + mov bx, si + imul bx, 3 + mov al, [bx+2E1Fh] + mov bx, si + imul bx, 3 + mov [bx+3F55h], al + mov bx, si + imul bx, 3 + mov al, [bx+2E20h] + mov bx, si + imul bx, 3 + mov [bx+3F56h], al + mov bx, si + imul bx, 3 + mov byte ptr [bx+2E1Eh], 0 + mov bx, si + imul bx, 3 + mov byte ptr [bx+2E1Fh], 0 + mov bx, si + imul bx, 3 + mov byte ptr [bx+2E20h], 0 + inc si + +loc_B8C7: ; CODE XREF: sub_B806+6Aj + cmp si, 0Fh + jl short loc_B872 + push ds + push offset aLogo ; "logo" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + mov [bp+var_6], 3F84h + xor si, si + jmp short loc_B8F4 +; --------------------------------------------------------------------------- + +loc_B8E8: ; CODE XREF: sub_B806+F2j + mov bx, [bp+var_6] + mov word ptr [bx], 0 + inc si + add [bp+var_6], 0Eh + +loc_B8F4: ; CODE XREF: sub_B806+E0j + cmp si, 100h + jl short loc_B8E8 + push large 20000h + call sub_E0F1 + mov word_F52E, 64h ; 'd' + call far ptr loc_19F0 + push ds + push offset aZun02_bft ; "zun02.bft" + call sub_2656 + push ds + push offset aZun04_bft ; "zun04.bft" + call sub_2656 + push ds + push offset aZun01_bft ; "zun01.bft" + call sub_2656 + push ds + push offset aZun03_bft ; "zun03.bft" + call sub_2656 + 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 + xor di, di + jmp loc_BA47 +; --------------------------------------------------------------------------- + +loc_B949: ; CODE XREF: sub_B806+245j + call sub_E094 + cmp word_12A72, 0 + jz short loc_B959 + mov [bp+var_2], 1 + +loc_B959: ; CODE XREF: sub_B806+14Dj + mov [bp+var_8], di + mov cx, 0Ch ; switch 12 cases + mov bx, offset word_BA64 + +loc_B962: ; CODE XREF: sub_B806+167j + mov ax, cs:[bx] + cmp ax, [bp+var_8] + jz short loc_B971 + add bx, 2 + loop loc_B962 + jmp short loc_B9DA ; default +; --------------------------------------------------------------------------- + +loc_B971: ; CODE XREF: sub_B806+162j + jmp word ptr cs:[bx+18h] ; switch jump + +loc_B975: ; DATA XREF: seg001:16ECo + push large 0B400B4h ; jumptable 0000B971 case 0 + jmp short loc_B9B3 +; --------------------------------------------------------------------------- + +loc_B97D: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 1CC00DCh ; jumptable 0000B971 case 16 + jmp short loc_B9BD +; --------------------------------------------------------------------------- + +loc_B985: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 0DC00A0h ; jumptable 0000B971 case 24 + jmp short loc_B9B3 +; --------------------------------------------------------------------------- + +loc_B98D: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 17C00F0h ; jumptable 0000B971 case 32 + jmp short loc_B9BD +; --------------------------------------------------------------------------- + +loc_B995: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 15400C8h ; jumptable 0000B971 case 44 + jmp short loc_B9BD +; --------------------------------------------------------------------------- + +loc_B99D: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 11800AAh ; jumptable 0000B971 case 48 + jmp short loc_B9B3 +; --------------------------------------------------------------------------- + +loc_B9A5: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 17C0104h ; jumptable 0000B971 case 52 + jmp short loc_B9BD +; --------------------------------------------------------------------------- + +loc_B9AD: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 0C800BEh ; jumptable 0000B971 cases 40,56 + +loc_B9B3: ; CODE XREF: sub_B806+175j + ; sub_B806+185j ... + push 14h + jmp short loc_B9C9 +; --------------------------------------------------------------------------- + +loc_B9B7: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 1B800D2h ; jumptable 0000B971 case 60 + +loc_B9BD: ; CODE XREF: sub_B806+17Dj + ; sub_B806+18Dj ... + push 14h + jmp short loc_B9D5 +; --------------------------------------------------------------------------- + +loc_B9C1: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 14000C8h ; jumptable 0000B971 case 64 + push 40h ; '@' + +loc_B9C9: ; CODE XREF: sub_B806+1AFj + push 0 + jmp short loc_B9D7 +; --------------------------------------------------------------------------- + +loc_B9CD: ; CODE XREF: sub_B806:loc_B971j + ; DATA XREF: seg001:16ECo + push large 14000C8h ; jumptable 0000B971 case 68 + push 40h ; '@' + +loc_B9D5: ; CODE XREF: sub_B806+1B9j + push 0Ah + +loc_B9D7: ; CODE XREF: sub_B806+1C5j + call sub_B616 + +loc_B9DA: ; CODE XREF: sub_B806+169j + call sub_D6F0 ; default + call sub_B69A + +loc_B9E2: ; CODE XREF: sub_B806+1E1j + cmp word_11E2E, 2 + jb short loc_B9E2 + mov word_11E2E, 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_BA26 + cmp di, 10h + jl short loc_BA1B + cmp [bp+var_3], 64h ; 'd' + jnb short loc_BA1B + mov al, [bp+var_3] + add al, 2 + mov [bp+var_3], al + +loc_BA1B: ; CODE XREF: sub_B806+205j + ; sub_B806+20Bj + mov al, [bp+var_3] + mov ah, 0 + push ax + call sub_B7C5 + jmp short loc_BA41 +; --------------------------------------------------------------------------- + +loc_BA26: ; CODE XREF: sub_B806+200j + cmp [bp+var_4], 0 + jbe short loc_BA56 + mov al, [bp+var_4] + add al, 0FEh ; 'þ' + mov [bp+var_4], al + mov al, [bp+var_4] + mov ah, 0 + mov word_F52E, ax + call far ptr loc_19F0 + +loc_BA41: ; CODE XREF: sub_B806+21Ej + call sub_D63C + inc di + +loc_BA47: ; CODE XREF: sub_B806+140j + cmp di, 0AAh ; 'ª' + jl loc_B949 + push 1 + call sub_644 + +loc_BA56: ; CODE XREF: sub_B806+224j + call sub_24F2 + call sub_D726 + pop di + pop si + leave + retn +sub_B806 endp + +; --------------------------------------------------------------------------- +word_BA64 dw 0, 10h, 18h, 20h ; DATA XREF: sub_B806+159o + dw 28h, 2Ch, 30h, 34h ; value table for switch statement + dw 38h, 3Ch, 40h, 44h + dw offset loc_B975 ; jump table for switch statement + dw offset loc_B97D + dw offset loc_B985 + dw offset loc_B98D + dw offset loc_B9AD + dw offset loc_B995 + dw offset loc_B99D + dw offset loc_B9A5 + dw offset loc_B9AD + dw offset loc_B9B7 + dw offset loc_B9C1 + dw offset loc_B9CD + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BA94 proc near ; CODE XREF: _main:loc_AF7Dp + +var_C = word ptr -0Ch +var_A = byte ptr -0Ah +var_4 = word ptr -4 + + enter 0Ch, 0 + push ds + push offset aMiko_cfg ; "MIKO.CFG" + call sub_A58 + push ss + lea ax, [bp+var_A] + push ax + push 0Ah + call sub_9A4 + call sub_938 + mov ax, [bp+var_4] + mov [bp+var_C], ax + mov word ptr dword_11DCC+2, ax + mov word ptr dword_11DCC, 0 + les bx, dword_11DCC + cmp byte ptr es:[bx+0Fh], 6 + ja short loc_BAD3 + cmp byte ptr es:[bx+0Fh], 0 + jnz short loc_BADC + +loc_BAD3: ; CODE XREF: sub_BA94+36j + les bx, dword_11DCC + mov byte ptr es:[bx+0Fh], 3 + +loc_BADC: ; CODE XREF: sub_BA94+3Dj + les bx, dword_11DCC + cmp byte ptr es:[bx+10h], 3 + jbe short loc_BAEC + mov byte ptr es:[bx+10h], 3 + +loc_BAEC: ; CODE XREF: sub_BA94+51j + les bx, dword_11DCC + cmp byte ptr es:[bx+12h], 3 + jb short loc_BAFC + mov byte ptr es:[bx+12h], 0 + +loc_BAFC: ; CODE XREF: sub_BA94+61j + les bx, dword_11DCC + cmp byte ptr es:[bx+15h], 3 + jb short locret_BB0C + mov byte ptr es:[bx+15h], 0 + +locret_BB0C: ; CODE XREF: sub_BA94+71j + leave + retn +sub_BA94 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB0E proc near ; CODE XREF: sub_A39C+6Cp sub_A447+61p ... + +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_878 + push large 0 + push 0 + call sub_A94 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov [bp+var_8], al + mov al, es:[bx+0Fh] + mov [bp+var_7], al + mov al, es:[bx+10h] + mov [bp+var_6], al + mov al, es:[bx+12h] + mov [bp+var_5], al + mov al, es:[bx+15h] + mov [bp+var_4], al + mov al, es:[bx+16h] + mov [bp+var_3], al + push ss + lea ax, [bp+var_8] + push ax + push 6 + call sub_AD6 + push large 9 + push 0 + call sub_A94 + 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_AD6 + call sub_938 + leave + retn +sub_BB0E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BB91 proc near ; CODE XREF: _main+119p + +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_FF00 + mov cx, 0Ah + call SCOPY@ + push ds + push offset aMiko_cfg ; "MIKO.CFG" + call sub_878 + push large 0 + push 0 + call sub_A94 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov [bp+var_A], al + mov al, es:[bx+0Fh] + mov [bp+var_9], al + mov al, es:[bx+10h] + mov [bp+var_8], al + mov al, es:[bx+12h] + mov [bp+var_7], al + mov al, es:[bx+15h] + mov [bp+var_6], al + mov al, es:[bx+16h] + 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_AD6 + call sub_938 + leave + retn +sub_BB91 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC0F proc near ; CODE XREF: sub_A9D6+168p _main+AEp + push bp + mov bp, sp + push 0 + push ds + push offset aSft1_cd2 ; "sft1.cd2" + call sub_E238 + push 0Ah + push ds + push offset aSft2_cd2 ; "sft2.cd2" + call sub_E238 + push 23h ; '#' + push ds + push offset aCar_cd2 ; "car.cd2" + call sub_E238 + push 28h ; '(' + push ds + push offset aSl00_cdg ; "sl00.cdg" + push 0 + call far ptr sub_E174 + push 29h ; ')' + push ds + push offset aSl01_cdg ; "sl01.cdg" + push 0 + call far ptr sub_E174 + push 2Ah ; '*' + push ds + push offset aSl02_cdg ; "sl02.cdg" + push 0 + call far ptr sub_E174 + push 2Bh ; '+' + push ds + push offset aSl03_cdg ; "sl03.cdg" + push 0 + call far ptr sub_E174 + push 2Ch ; ',' + push ds + push offset aSlcl_cdg ; "slcl.cdg" + push 0 + call sub_E17A + push 2Dh ; '-' + push ds + push offset aSl04_cdg ; "sl04.cdg" + push 0 + call far ptr sub_E174 + pop bp + retn +sub_BC0F endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC83 proc near ; CODE XREF: sub_A39C+69p sub_A447+5Ep ... + push bp + mov bp, sp + call sub_E2CA + pop bp + retn +sub_BC83 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BC8D proc near ; CODE XREF: _main:loc_AFF4p + +var_2 = byte ptr -2 +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov word_F52E, 0 + call far ptr loc_19F0 + push 0 + push ds + push offset aOp2a_pi ; "op2a.pi" + call sub_DDD8 + push 1 + push ds + push offset aOp2b_pi ; "op2b.pi" + call sub_DDD8 + push 2 + push ds + push offset aOp2c_pi ; "op2c.pi" + call sub_DDD8 + push 3 + push ds + push offset aOp2d_pi ; "op2d.pi" + call sub_DDD8 + push 4 + push ds + push offset aOp2e_pi ; "op2e.pi" + call sub_DDD8 + push 5 + push ds + push offset aOp2f_pi ; "op2f.pi" + call sub_DDD8 + push 6 + push ds + push offset aOp2g_pi ; "op2g.pi" + call sub_DDD8 + push 7 + push ds + push offset aOp2h_pi ; "op2h.pi" + call sub_DDD8 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push large 0C00001h + call sub_EE2 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push large 4F018Fh + call sub_BAC + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push large 0 + push large 4F018Fh + call sub_BAC + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 1 + call sub_1250 + mov [bp+var_1], 1 + mov [bp+var_2], 0 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + xor si, si + jmp short loc_BDAD +; --------------------------------------------------------------------------- + +loc_BD55: ; CODE XREF: sub_BC8D+123j + mov ax, si + mov bx, 8 + cwd + idiv bx + cmp dx, 1 + jg short loc_BD81 + mov ax, si + cwd + idiv bx + push ax + call sub_DEBA + push large 116h + mov ax, si + mov bx, 8 + cwd + idiv bx + push ax + call sub_DE0A + +loc_BD81: ; CODE XREF: sub_BC8D+D3j + push 1 + call sub_E15E + mov dx, 0A6h ; '¦' + mov al, [bp+var_1] + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, [bp+var_2] + out dx, al ; Interrupt Controller #2, 8259A + mov [bp+var_1], al + mov al, 1 + sub al, [bp+var_2] + mov [bp+var_2], al + lea ax, [si+24h] + mov word_F52E, ax + call far ptr loc_19F0 + inc si + +loc_BDAD: ; CODE XREF: sub_BC8D+C6j + cmp si, 40h ; '@' + jl short loc_BD55 + mov si, 1 + jmp short loc_BDBE +; --------------------------------------------------------------------------- + +loc_BDB7: ; CODE XREF: sub_BC8D+134j + push si + call sub_DEE0 + inc si + +loc_BDBE: ; CODE XREF: sub_BC8D+128j + cmp si, 8 + jl short loc_BDB7 + push 1 + call sub_1250 + les bx, dword_11DCC + cmp byte ptr es:[bx+1Fh], 0 + jnz short loc_BDE8 + push ds + push offset aOp_0 ; "op" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + +loc_BDE8: ; CODE XREF: sub_BC8D+146j + push 0 + push ds + push offset aOp1_pi_0 ; "op1.pi" + call sub_DDD8 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + out dx, al ; Interrupt Controller #2, 8259A + push 10h + call sub_E15E + xor si, si + jmp short loc_BE46 +; --------------------------------------------------------------------------- + +loc_BE08: ; CODE XREF: sub_BC8D+1BCj + mov ax, si + mov bx, 4 + cwd + idiv bx + cmp dx, 1 + jg short loc_BE25 + push large 0 + push 0 + mov ax, si + cwd + idiv bx + push ax + call sub_DC94 + +loc_BE25: ; CODE XREF: sub_BC8D+186j + push 1 + call sub_E15E + mov dx, 0A6h ; '¦' + mov al, [bp+var_1] + out dx, al ; Interrupt Controller #2, 8259A + mov dx, 0A4h ; '¤' + mov al, [bp+var_2] + out dx, al ; Interrupt Controller #2, 8259A + mov [bp+var_1], al + mov al, 1 + sub al, [bp+var_2] + mov [bp+var_2], al + inc si + +loc_BE46: ; CODE XREF: sub_BC8D+179j + cmp si, 10h + jl short loc_BE08 + 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_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + pop si + leave + retn +sub_BC8D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BE79 proc near ; CODE XREF: sub_BF4D+1Ap + ; sub_C490+123p ... + +var_5 = byte ptr -5 +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = byte ptr 6 + + enter 6, 0 + push si + mov [bp+var_5], 5 + mov al, [bp+arg_2] + mov ah, 0 + sub ax, word_1403A + shl ax, 4 + mov si, ax + or si, si + jl loc_BF48 + cmp si, 0C0h ; 'À' + jge loc_BF48 + cmp [bp+arg_0], 0 + jz short loc_BEF4 + push large 0C00005h + call sub_EE2 + push large 0C012Ch + lea ax, [si+60h] + push ax + call sub_C44 + push large 0C012Ch + lea ax, [si+6Fh] + push ax + call sub_C44 + push 0Ch + lea ax, [si+60h] + push ax + lea ax, [si+6Fh] + push ax + call sub_F12 + push 12Ch + lea ax, [si+60h] + push ax + lea ax, [si+6Fh] + push ax + call sub_F12 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + jmp short loc_BF05 +; --------------------------------------------------------------------------- + +loc_BEF4: ; CODE XREF: sub_BE79+29j + push 0 + lea ax, [si+60h] + push ax + push large 1400010h + call far ptr loc_DB3C + +loc_BF05: ; CODE XREF: sub_BE79+79j + mov al, [bp+arg_2] + mov ah, 0 + cmp ax, word_1403C + jnz short loc_BF14 + mov [bp+var_5], 3 + +loc_BF14: ; CODE XREF: sub_BE79+95j + mov bx, word_1047E + imul bx, 78h + mov al, [bp+arg_2] + mov ah, 0 + shl ax, 2 + add bx, ax + mov ax, [bx+0FF0h] + mov dx, [bx+0FEEh] + mov [bp+var_2], ax + mov [bp+var_4], dx + add si, 60h ; '`' + push 0Ch + push si + mov al, [bp+var_5] + mov ah, 0 + push ax + push [bp+var_2] + push dx + call far ptr loc_D436 + +loc_BF48: ; CODE XREF: sub_BE79+19j sub_BE79+21j + pop si + leave + retn 4 +sub_BE79 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BF4D proc near ; CODE XREF: sub_C441+24p sub_C441+47p ... + +arg_0 = byte ptr 4 + + push bp + mov bp, sp + push si + xor si, si + jmp short loc_BF6B +; --------------------------------------------------------------------------- + +loc_BF55: ; CODE XREF: sub_BF4D+26j + push si + mov al, [bp+arg_0] + mov ah, 0 + cmp ax, si + jnz short loc_BF64 + mov ax, 1 + jmp short loc_BF66 +; --------------------------------------------------------------------------- + +loc_BF64: ; CODE XREF: sub_BF4D+10j + xor ax, ax + +loc_BF66: ; CODE XREF: sub_BF4D+15j + push ax + call sub_BE79 + inc si + +loc_BF6B: ; CODE XREF: sub_BF4D+6j + mov ax, word_1403E + add ax, 2 + cmp ax, si + jg short loc_BF55 + push large 0C0050h + push 5 + push large [off_FFAE] + call far ptr loc_D436 + push large 0C0120h + push 5 + push large [off_FFB2] + call far ptr loc_D436 + push large 0C0020h + push 3 + mov bx, word_1047E + shl bx, 2 + push large dword ptr [bx+0FDAh] + call far ptr loc_D436 + pop si + pop bp + retn 2 +sub_BF4D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFB7 proc near ; CODE XREF: sub_C490+81p + push bp + mov bp, sp + push si + push 7D00h + call sub_2322 + mov word_13E98, ax + xor si, si + jmp short loc_BFDF +; --------------------------------------------------------------------------- + +loc_BFCA: ; CODE XREF: sub_BFB7+2Cj + les bx, dword_FA84 + add bx, si + mov eax, es:[bx] + mov es, word_13E98 + mov es:[si], eax + add si, 4 + +loc_BFDF: ; CODE XREF: sub_BFB7+11j + cmp si, 7D00h + jl short loc_BFCA + pop si + pop bp + retn +sub_BFB7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFE8 proc near ; CODE XREF: sub_C490+316p + push bp + mov bp, sp + push word_13E98 + call sub_2426 + pop bp + retn +sub_BFE8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_BFF6 proc near ; CODE XREF: sub_C293+3p sub_C3F9+13p ... + push bp + mov bp, sp + push si + push di + push ds + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ax, word_13E98 + mov ds, ax + xor di, di + xor si, si + mov cx, 3E80h + rep movsw + pop ds + pop di + pop si + pop bp + retn +sub_BFF6 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C014 proc near ; CODE XREF: sub_C09D+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_C079 +; --------------------------------------------------------------------------- + +loc_C028: ; CODE XREF: sub_C014+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+610h] + call sub_D834 + 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+590h] + call sub_D834 + mov bx, [bp+var_2] + shl bx, 2 + mov [bx+di+2], ax + inc [bp+var_2] + +loc_C079: ; CODE XREF: sub_C014+12j + mov ax, [bp+var_2] + cmp ax, [bp+arg_2] + jl short loc_C028 + 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_C014 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C09D proc near ; CODE XREF: sub_C293+16p + push bp + mov bp, sp + push si + cmp byte_1048A, 0 + jnz loc_C14C + xor si, si + jmp loc_C140 +; --------------------------------------------------------------------------- + +loc_C0AF: ; CODE XREF: sub_C09D+A6j + call sub_1C5E + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+4E14h], dx + call sub_1C5E + mov bx, 1900h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+4E16h], dx + call sub_1C5E + and ax, 7 + mov dx, 4 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+4E54h], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+4E54h], 0 + jnz short loc_C104 + mov bx, si + shl bx, 2 + mov word ptr [bx+4E54h], 1 + +loc_C104: ; CODE XREF: sub_C09D+5Aj + call sub_1C5E + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+4E56h], ax + call sub_1C5E + mov [si+4E94h], al + call sub_1C5E + and al, 7 + mov dl, 4 + sub dl, al + mov [si+4EA4h], dl + cmp byte ptr [si+4EA4h], 0 + jnz short loc_C13F + mov byte ptr [si+4EA4h], 4 + +loc_C13F: ; CODE XREF: sub_C09D+9Bj + inc si + +loc_C140: ; CODE XREF: sub_C09D+Fj + cmp si, 0Eh + jl loc_C0AF + mov byte_1048A, 1 + +loc_C14C: ; CODE XREF: sub_C09D+9j + xor si, si + jmp loc_C289 +; --------------------------------------------------------------------------- + +loc_C151: ; CODE XREF: sub_C09D+1EFj + push 4DECh + mov bx, si + shl bx, 2 + push word ptr [bx+4E14h] + mov bx, si + shl bx, 2 + push word ptr [bx+4E16h] + 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+4E94h] + push ax + call sub_C014 + mov bx, si + shl bx, 2 + mov ax, [bx+4E54h] + mov bx, si + shl bx, 2 + add [bx+4E14h], ax + mov bx, si + shl bx, 2 + mov ax, [bx+4E56h] + mov bx, si + shl bx, 2 + add [bx+4E16h], ax + mov al, [si+4EA4h] + add [si+4E94h], al + mov bx, si + shl bx, 2 + cmp word ptr [bx+4E14h], 0 + jle short loc_C1CB + mov bx, si + shl bx, 2 + cmp word ptr [bx+4E14h], 27Fh + jl short loc_C1DD + +loc_C1CB: ; CODE XREF: sub_C09D+11Fj + mov bx, si + shl bx, 2 + mov dx, 0FFFFh + mov ax, [bx+4E54h] + imul dx + mov [bx+4E54h], ax + +loc_C1DD: ; CODE XREF: sub_C09D+12Cj + mov bx, si + shl bx, 2 + cmp word ptr [bx+4E16h], 1F40h + jl loc_C273 + call sub_1C5E + mov bx, 280h + cwd + idiv bx + mov bx, si + shl bx, 2 + mov [bx+4E14h], dx + mov bx, si + shl bx, 2 + mov word ptr [bx+4E16h], 0F9C0h + call sub_1C5E + and ax, 0Fh + mov dx, 8 + sub dx, ax + mov bx, si + shl bx, 2 + mov [bx+4E54h], dx + mov bx, si + shl bx, 2 + cmp word ptr [bx+4E54h], 0 + jnz short loc_C238 + mov bx, si + shl bx, 2 + mov word ptr [bx+4E54h], 1 + +loc_C238: ; CODE XREF: sub_C09D+18Ej + call sub_1C5E + and ax, 3 + shl ax, 4 + add ax, 20h ; ' ' + mov bx, si + shl bx, 2 + mov [bx+4E56h], ax + call sub_1C5E + mov [si+4E94h], al + call sub_1C5E + and al, 7 + mov dl, 4 + sub dl, al + mov [si+4EA4h], dl + cmp byte ptr [si+4EA4h], 0 + jnz short loc_C273 + mov byte ptr [si+4EA4h], 4 + +loc_C273: ; CODE XREF: sub_C09D+14Bj + ; sub_C09D+1CFj + push ds + push offset unk_13DCC + mov ax, si + mov bx, 4 + cwd + idiv bx + add ax, 3 + push ax + call sub_CCA + inc si + +loc_C289: ; CODE XREF: sub_C09D+B1j + cmp si, 0Eh + jl loc_C151 + pop si + pop bp + retn +sub_C09D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C293 proc near ; CODE XREF: sub_C376+10p sub_C376+16p ... + push bp + mov bp, sp + call sub_BFF6 + call sub_D96E + push large 0CE000Fh + call sub_EE2 + call sub_C09D + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + push 1 + call sub_E15E + mov dx, 0A4h ; '¤' + mov al, byte ptr word_13E94+1 + out dx, al ; Interrupt Controller #2, 8259A + mov al, 1 + sub al, byte ptr word_13E94+1 + mov byte ptr word_13E94+1, al + mov dx, 0A6h ; '¦' + out dx, al ; Interrupt Controller #2, 8259A + pop bp + retn +sub_C293 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C2CF proc near ; CODE XREF: sub_C3F9+10p + +var_4 = dword ptr -4 +arg_0 = word ptr 4 + + enter 4, 0 + push si + mov word ptr [bp+var_4+2], ds + mov word ptr [bp+var_4], 27ECh + les bx, [bp+var_4] + assume es:nothing + mov al, byte ptr word_1047E + add al, 30h ; '0' + mov es:[bx+6], al + push word ptr [bp+var_4+2] + push bx + call sub_A58 + mov ax, [bp+arg_0] + imul ax, 190h + cwde + push eax + push 0 + call sub_A94 + push ds + push offset unk_13EAA + push 190h + call sub_9A4 + call sub_938 + xor si, si + jmp short loc_C323 +; --------------------------------------------------------------------------- + +loc_C318: ; CODE XREF: sub_C2CF+57j + mov bx, si + imul bx, 28h + mov byte ptr [bx+4EF0h], 0 + inc si + +loc_C323: ; CODE XREF: sub_C2CF+47j + cmp si, 0Ah + jl short loc_C318 + pop si + leave + retn 2 +sub_C2CF endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C32D proc near ; CODE XREF: sub_C376+Dp sub_C376+13p ... + +var_2 = word ptr -2 + + enter 2, 0 + push si + push di + push large 1400020h + push 7 + push ds + push offset unk_13EAA + call far ptr loc_D436 + mov si, 4EF2h + mov di, 1 + mov [bp+var_2], 0B4h ; '´' + jmp short loc_C36D +; --------------------------------------------------------------------------- + +loc_C351: ; CODE XREF: sub_C32D+43j + cmp byte ptr [si], 3Bh ; ';' + jz short loc_C365 + push 140h + push [bp+var_2] + push 7 + push ds + push si + call far ptr loc_D436 + +loc_C365: ; CODE XREF: sub_C32D+27j + inc di + add [bp+var_2], 10h + add si, 28h ; '(' + +loc_C36D: ; CODE XREF: sub_C32D+22j + cmp di, 0Ah + jl short loc_C351 + pop di + pop si + leave + retn +sub_C32D endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C376 proc near ; CODE XREF: sub_C3F9+2Ep + push bp + mov bp, sp + push si + mov si, 4 + jmp short loc_C390 +; --------------------------------------------------------------------------- + +loc_C37F: ; CODE XREF: sub_C376+1Dj + mov word_F9BE, si + call sub_C32D + call sub_C293 + call sub_C32D + call sub_C293 + inc si + +loc_C390: ; CODE XREF: sub_C376+7j + cmp si, 8 + jl short loc_C37F + mov word_F9BE, 2 + call sub_C32D + call sub_C293 + call sub_C32D + pop si + pop bp + retn +sub_C376 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C3A7 proc near ; CODE XREF: sub_C3F9+Ap + push bp + mov bp, sp + mov word_F9BE, 2 + push large 1400020h + push large 1400010h + call far ptr loc_DB3C + push large 14000B4h + push large 1400090h + call far ptr loc_DB3C + call sub_C293 + push large 1400020h + push large 1400010h + call far ptr loc_DB3C + push large 14000B4h + push large 1400090h + call far ptr loc_DB3C + pop bp + retn +sub_C3A7 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C3F9 proc near ; CODE XREF: sub_C490+B7p + ; sub_C490+235p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + cmp byte_13E96, 0 + jz short loc_C406 + call sub_C3A7 + +loc_C406: ; CODE XREF: sub_C3F9+8j + push [bp+arg_0] + call sub_C2CF + call sub_BFF6 + push large 1400040h + push large 1400100h + call far ptr loc_DB3C + cmp byte_13E96, 0 + jz short loc_C42C + call sub_C376 + jmp short loc_C43A +; --------------------------------------------------------------------------- + +loc_C42C: ; CODE XREF: sub_C3F9+2Cj + mov byte_13E96, 1 + call sub_C32D + call sub_C293 + call sub_C32D + +loc_C43A: ; CODE XREF: sub_C3F9+31j + call sub_BFF6 + pop bp + retn 2 +sub_C3F9 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C441 proc near ; CODE XREF: sub_C490+158p + ; sub_C490+195p ... + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push si + mov si, [bp+arg_0] + push large 20h ; ' ' + push large 1400010h + call far ptr loc_DB3C + push large 60h ; '`' + push large 14000C0h + call far ptr loc_DB3C + push si + call sub_BF4D + call sub_C293 + push large 20h ; ' ' + push large 1400010h + call far ptr loc_DB3C + push large 60h ; '`' + push large 14000C0h + call far ptr loc_DB3C + push si + call sub_BF4D + pop si + pop bp + retn 2 +sub_C441 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C490 proc near ; CODE XREF: sub_A9D6:loc_AB3Bp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + xor si, si + mov word_1403A, 0 + mov word_1403C, 0 + mov byte ptr word_13E94, 0 + mov bx, word_1047E + add bx, bx + mov ax, [bx+14A0h] + mov word_1403E, ax + mov byte_13E96, 0 + call sub_E2CA + call sub_20FE + mov byte ptr word_13E94+1, 1 + mov word_F52E, 0 + call far ptr loc_19F0 + 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_1216 + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + call sub_D894 + call sub_BFB7 + call sub_D688 + push word_13E94 + call sub_BF4D + push 0 + call sub_1250 + 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_3858 + push ds + push offset aMusic_dat ; "music.dat" + call sub_37B8 + mov al, byte ptr word_13E94 + mov ah, 0 + push ax + call sub_C3F9 + mov word_F52E, 64h ; 'd' + call far ptr loc_19F0 + +loc_C555: ; CODE XREF: sub_C490+EDj + ; sub_C490+2E3j + call sub_E094 + cmp word_12A72, 0 + jz short loc_C57F + cmp si, 18h + jl short loc_C579 + cmp word_12A72, 1 + jz short loc_C574 + cmp word_12A72, 2 + jnz short loc_C579 + +loc_C574: ; CODE XREF: sub_C490+DBj + mov si, 14h + jmp short loc_C57F +; --------------------------------------------------------------------------- + +loc_C579: ; CODE XREF: sub_C490+D4j sub_C490+E2j + inc si + call sub_C293 + jmp short loc_C555 +; --------------------------------------------------------------------------- + +loc_C57F: ; CODE XREF: sub_C490+CFj sub_C490+E7j ... + call sub_E094 + test byte ptr word_12A72, 1 + jz short loc_C5EB + mov al, byte ptr word_13E94 + mov [bp+var_1], al + cmp byte ptr word_13E94, 0 + jbe short loc_C5D5 + dec byte ptr word_13E94 + mov al, byte ptr word_13E94 + mov ah, 0 + cmp ax, word_1403A + jge short loc_C5AE + mov al, byte ptr word_13E94 + mov ah, 0 + jmp short loc_C61C +; --------------------------------------------------------------------------- + +loc_C5AE: ; CODE XREF: sub_C490+115j + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + call sub_C293 + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + jmp short loc_C5EB +; --------------------------------------------------------------------------- + +loc_C5D5: ; CODE XREF: sub_C490+106j + mov al, byte ptr word_1403E + mov byte ptr word_13E94, al + mov ax, word_1403E + add ax, 0FFF5h + mov word_1403A, ax + push word_1403E + call sub_C441 + +loc_C5EB: ; CODE XREF: sub_C490+F9j + ; sub_C490+143j + test byte ptr word_12A72, 2 + jz short loc_C666 + mov al, byte ptr word_13E94 + mov [bp+var_1], al + mov ah, 0 + cmp ax, word_1403E + jge short loc_C652 + inc byte ptr word_13E94 + mov al, byte ptr word_13E94 + mov ah, 0 + mov dx, word_1403A + add dx, 0Ch + cmp ax, dx + jl short loc_C62B + mov al, byte ptr word_13E94 + mov ah, 0 + add ax, 0FFF5h + +loc_C61C: ; CODE XREF: sub_C490+11Cj + mov word_1403A, ax + mov al, byte ptr word_13E94 + mov ah, 0 + push ax + call sub_C441 + jmp loc_C6E3 +; --------------------------------------------------------------------------- + +loc_C62B: ; CODE XREF: sub_C490+182j + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + call sub_C293 + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + jmp short loc_C666 +; --------------------------------------------------------------------------- + +loc_C652: ; CODE XREF: sub_C490+16Ej + mov byte ptr word_13E94, 0 + mov word_1403A, 0 + mov al, byte ptr word_13E94 + mov ah, 0 + push ax + call sub_C441 + +loc_C666: ; CODE XREF: sub_C490+160j + ; sub_C490+1C0j + test byte ptr word_12A72, 4 + jz short loc_C680 + dec word_1047E + cmp word_1047E, 0 + jge short loc_C698 + mov word_1047E, 4 + jmp short loc_C698 +; --------------------------------------------------------------------------- + +loc_C680: ; CODE XREF: sub_C490+1DBj + test byte ptr word_12A72, 8 + jz short loc_C6E3 + inc word_1047E + cmp word_1047E, 5 + jl short loc_C698 + mov word_1047E, 0 + +loc_C698: ; CODE XREF: sub_C490+1E6j + ; sub_C490+1EEj ... + mov byte ptr word_13E94, 0 + mov word_1403C, 0 + mov word_1403A, 0 + mov bx, word_1047E + add bx, bx + mov ax, [bx+14A0h] + mov word_1403E, ax + push 0 + call sub_C441 + push 220h + call sub_DC76 + push 0 + call sub_C3F9 + mov bx, word_1047E + imul bx, 78h + push large dword ptr [bx+1246h] + push 600h + call sub_DBBE + push 0 + call sub_DC76 + +loc_C6E3: ; CODE XREF: sub_C490+198j + ; sub_C490+1F5j + test byte ptr word_12A72, 20h + jnz short loc_C6F1 + test byte ptr word_12A72+1, 20h + jz short loc_C767 + +loc_C6F1: ; CODE XREF: sub_C490+258j + mov al, byte ptr word_13E94 + mov ah, 0 + cmp ax, word_1403E + jz loc_C77F + push 220h + call sub_DC76 + mov al, byte ptr word_1403C + mov [bp+var_1], al + mov al, byte ptr word_13E94 + mov ah, 0 + mov word_1403C, ax + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + call sub_C293 + push word ptr [bp+var_1] + push 0 + call sub_BE79 + push word_13E94 + push 1 + call sub_BE79 + mov al, byte ptr word_13E94 + mov ah, 0 + push ax + call sub_C3F9 + mov bx, word_1047E + imul bx, 78h + mov al, byte ptr word_13E94 + mov ah, 0 + shl ax, 2 + add bx, ax + push large dword ptr [bx+1246h] + push 600h + call sub_DBBE + push 0 + call sub_DC76 + +loc_C767: ; CODE XREF: sub_C490+25Fj + test byte ptr word_12A72+1, 10h + jnz short loc_C77F + cmp word_12A72, 0 + jnz loc_C555 + xor si, si + call sub_C293 + jmp loc_C57F +; --------------------------------------------------------------------------- + +loc_C77F: ; CODE XREF: sub_C490+26Aj + ; sub_C490+2DCj ... + call sub_E094 + cmp word_12A72, 0 + jz short loc_C790 + call sub_C293 + jmp short loc_C77F +; --------------------------------------------------------------------------- + +loc_C790: ; CODE XREF: sub_C490+2F9j + call sub_3858 + push ds + push offset unk_117EB + call sub_37B8 + push 210h + call sub_DC76 + call sub_BFE8 + 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_644 + call sub_D726 + push ds + push (offset aH_op+2) + push 600h + call sub_DBBE + push 0 + call sub_DC76 + pop si + leave + retn +sub_C490 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C7D5 proc near ; CODE XREF: sub_C8E2+CBp sub_C9BE+47p + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov si, 4 + jmp short loc_C802 +; --------------------------------------------------------------------------- + +loc_C7DF: ; CODE XREF: sub_C7D5+30j + mov al, [si+5061h] + mov [bp+var_1], al + mov al, byte_14041 + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, [si+5060h] + mov dl, byte_14040 + add dl, [bp+var_1] + add al, dl + mov [si+5060h], al + inc si + +loc_C802: ; CODE XREF: sub_C7D5+8j + cmp si, 5Fh ; '_' + jl short loc_C7DF + mov al, byte_14040 + add [si+5060h], al + xor cx, cx + mov si, 4 + jmp short loc_C81E +; --------------------------------------------------------------------------- + +loc_C815: ; CODE XREF: sub_C7D5+4Cj + mov al, [si+5060h] + mov ah, 0 + add cx, ax + inc si + +loc_C81E: ; CODE XREF: sub_C7D5+3Ej + cmp si, 60h ; '`' + jl short loc_C815 + cmp word_14042, cx + jz short loc_C82D + mov al, 1 + jmp short loc_C87B +; --------------------------------------------------------------------------- + +loc_C82D: ; CODE XREF: sub_C7D5+52j + mov si, 4 + jmp short loc_C855 +; --------------------------------------------------------------------------- + +loc_C832: ; CODE XREF: sub_C7D5+83j + mov al, [si+50C1h] + mov [bp+var_1], al + mov al, byte_140A1 + ror [bp+var_1], 3 + xor [bp+var_1], al + mov al, [si+50C0h] + mov dl, byte_140A0 + add dl, [bp+var_1] + add al, dl + mov [si+50C0h], al + inc si + +loc_C855: ; CODE XREF: sub_C7D5+5Bj + cmp si, 5Fh ; '_' + jl short loc_C832 + mov al, byte_140A0 + add [si+50C0h], al + xor cx, cx + mov si, 4 + jmp short loc_C871 +; --------------------------------------------------------------------------- + +loc_C868: ; CODE XREF: sub_C7D5+9Fj + mov al, [si+50C0h] + mov ah, 0 + add cx, ax + inc si + +loc_C871: ; CODE XREF: sub_C7D5+91j + cmp si, 60h ; '`' + jl short loc_C868 + mov al, byte_140A2 + sub al, cl + +loc_C87B: ; CODE XREF: sub_C7D5+56j + pop si + leave + retn +sub_C7D5 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C87E proc near ; CODE XREF: sub_C8E2+BDp + +var_1 = byte ptr -1 + + enter 2, 0 + push si + mov word_14042, 0 + mov si, 4 + jmp short loc_C899 +; --------------------------------------------------------------------------- + +loc_C88E: ; CODE XREF: sub_C87E+1Ej + mov al, [si+5060h] + mov ah, 0 + add word_14042, ax + inc si + +loc_C899: ; CODE XREF: sub_C87E+Ej + cmp si, 60h ; '`' + jl short loc_C88E + call sub_1C5E + mov byte_14040, al + call sub_1C5E + mov byte_14041, al + mov [bp+var_1], 0 + mov si, 5Fh ; '_' + jmp short loc_C8DA +; --------------------------------------------------------------------------- + +loc_C8B7: ; CODE XREF: sub_C87E+5Fj + mov al, [si+5060h] + mov dl, byte_14040 + add dl, [bp+var_1] + sub al, dl + mov [si+5060h], al + mov al, [si+5060h] + mov [bp+var_1], al + mov al, byte_14041 + ror [bp+var_1], 3 + xor [bp+var_1], al + dec si + +loc_C8DA: ; CODE XREF: sub_C87E+37j + cmp si, 4 + jge short loc_C8B7 + pop si + leave + retn +sub_C87E endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C8E2 proc near ; CODE XREF: sub_C9BE:loc_CA0Cp + +var_3 = byte ptr -3 +var_2 = word ptr -2 + + enter 4, 0 + push si + mov [bp+var_3], 0A8h ; '¨' + xor si, si + jmp short loc_C95A +; --------------------------------------------------------------------------- + +loc_C8EF: ; CODE XREF: sub_C8E2+7Bj + mov byte_1409E, 12h + mov [bp+var_2], 0 + jmp short loc_C90B +; --------------------------------------------------------------------------- + +loc_C8FB: ; CODE XREF: sub_C8E2+2Dj + mov bx, si + shl bx, 3 + add bx, [bp+var_2] + mov byte ptr [bx+5091h], 0A0h ; ' ' + inc [bp+var_2] + +loc_C90B: ; CODE XREF: sub_C8E2+17j + cmp [bp+var_2], 8 + jl short loc_C8FB + or si, si + jnz short loc_C921 + mov bx, si + shl bx, 3 + mov byte ptr [bx+5097h], 0A1h ; '¡' + jmp short loc_C932 +; --------------------------------------------------------------------------- + +loc_C921: ; CODE XREF: sub_C8E2+31j + mov bx, si + shl bx, 3 + mov al, [bp+var_3] + mov [bx+5096h], al + add al, 0FEh ; 'þ' + mov [bp+var_3], al + +loc_C932: ; CODE XREF: sub_C8E2+3Dj + mov [bp+var_2], 0 + jmp short loc_C949 +; --------------------------------------------------------------------------- + +loc_C939: ; CODE XREF: sub_C8E2+6Bj + mov bx, si + imul bx, 9 + add bx, [bp+var_2] + mov byte ptr [bx+5064h], 0C4h ; 'Ä' + inc [bp+var_2] + +loc_C949: ; CODE XREF: sub_C8E2+55j + cmp [bp+var_2], 8 + jl short loc_C939 + mov bx, si + imul bx, 9 + mov byte ptr [bx+506Ch], 0 + inc si + +loc_C95A: ; CODE XREF: sub_C8E2+Bj + cmp si, 5 + jl short loc_C8EF + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_948 + xor si, si + jmp short loc_C9B1 +; --------------------------------------------------------------------------- + +loc_C96C: ; CODE XREF: sub_C8E2+D2j + mov [bp+var_2], 0 + jmp short loc_C999 +; --------------------------------------------------------------------------- + +loc_C973: ; CODE XREF: sub_C8E2+BBj + mov ax, si + mov bx, 5 + cwd + idiv bx + cmp dx, 4 + jnz short loc_C98A + mov bx, [bp+var_2] + mov byte ptr [bx+50B9h], 0A1h ; '¡' + jmp short loc_C996 +; --------------------------------------------------------------------------- + +loc_C98A: ; CODE XREF: sub_C8E2+9Cj + mov bx, [bp+var_2] + mov al, 0A6h ; '¦' + sub al, byte ptr [bp+var_2] + mov [bx+50B9h], al + +loc_C996: ; CODE XREF: sub_C8E2+A6j + inc [bp+var_2] + +loc_C999: ; CODE XREF: sub_C8E2+8Fj + cmp [bp+var_2], 5 + jl short loc_C973 + call sub_C87E + push ds + push offset byte_14040 + push 60h ; '`' + call sub_AD6 + call sub_C7D5 + inc si + +loc_C9B1: ; CODE XREF: sub_C8E2+88j + cmp si, 14h + jl short loc_C96C + call sub_938 + pop si + leave + retn +sub_C8E2 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_C9BE proc near ; CODE XREF: sub_CBDC+38p sub_CD94+15p + +arg_0 = word ptr 4 + + push bp + mov bp, sp + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_988 + or ax, ax + jz short loc_CA0C + push ds + push offset aGensou_scr ; "GENSOU.SCR" + call sub_A58 + mov ax, [bp+arg_0] + imul ax, 5 + mov dl, byte_14101 + mov dh, 0 + add ax, dx + imul ax, 60h + movzx eax, ax + push eax + push 0 + call sub_A94 + push ds + push offset byte_14040 + push 60h ; '`' + call sub_9A4 + call sub_938 + call sub_C7D5 + or al, al + jz short loc_CA15 + +loc_CA0C: ; CODE XREF: sub_C9BE+Ej + call sub_C8E2 + mov al, 1 + pop bp + retn 2 +; --------------------------------------------------------------------------- + +loc_CA15: ; CODE XREF: sub_C9BE+4Cj + mov al, 0 + pop bp + retn 2 +sub_C9BE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CA1B proc near ; CODE XREF: sub_CB00+B0p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 +arg_4 = word ptr 8 + + enter 2, 0 + push si + push di + mov si, [bp+arg_4] + mov di, [bp+arg_0] + mov bx, di + shl bx, 3 + mov al, [bx+5098h] + mov ah, 0 + add ax, 0FF60h + cmp ax, 0Ah + jl short loc_CA5B + lea ax, [si-10h] + push ax + push [bp+arg_2] + mov bx, di + shl bx, 3 + mov al, [bx+5098h] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push ax + call sub_292A + +loc_CA5B: ; CODE XREF: sub_CA1B+1Dj + push si + push [bp+arg_2] + mov bx, di + shl bx, 3 + mov al, [bx+5098h] + mov ah, 0 + add ax, 0FF60h + mov bx, 0Ah + cwd + idiv bx + push dx + call sub_292A + add si, 10h + mov [bp+var_2], 6 + jmp short loc_CAA4 +; --------------------------------------------------------------------------- + +loc_CA83: ; CODE XREF: sub_CA1B+8Dj + push si + push [bp+arg_2] + mov bx, di + shl bx, 3 + add bx, [bp+var_2] + mov al, [bx+5091h] + mov ah, 0 + add ax, 0FF60h + push ax + call sub_292A + dec [bp+var_2] + add si, 10h + +loc_CAA4: ; CODE XREF: sub_CA1B+66j + cmp [bp+var_2], 0 + jge short loc_CA83 + pop di + pop si + leave + retn 6 +sub_CA1B endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CAB0 proc near ; CODE XREF: sub_CB00+C3p + +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_CADB + lea ax, [si+2] + push ax + lea ax, [di+2] + push ax + push [bp+arg_0] + push 0Eh + call sub_371E + push si + push di + push [bp+arg_0] + jmp short loc_CAF3 +; --------------------------------------------------------------------------- + +loc_CADB: ; CODE XREF: sub_CAB0+10j + lea ax, [si+2] + push ax + lea ax, [di+2] + push ax + push large 0EF000Eh + call sub_371E + push si + push di + push 0EFh ; 'ï' + +loc_CAF3: ; CODE XREF: sub_CAB0+29j + push 7 + call sub_371E + pop di + pop si + pop bp + retn 6 +sub_CAB0 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CB00 proc near ; CODE XREF: sub_CBDC+41p + +var_2 = word ptr -2 +arg_0 = word ptr 4 +arg_2 = word ptr 6 + + enter 2, 0 + push si + push di + cmp [bp+arg_0], 0 + jnz short loc_CB3A + mov bx, [bp+arg_2] + cmp bx, 3 + ja short loc_CB33 + add bx, bx + jmp cs:off_CBD4[bx] + +loc_CB1B: ; CODE XREF: sub_CB00+44j + ; DATA XREF: seg001:off_CBD4o + mov si, 8 + jmp short loc_CB23 +; --------------------------------------------------------------------------- + +loc_CB20: ; CODE XREF: sub_CB00+16j sub_CB00+44j + ; DATA XREF: ... + mov si, 148h + +loc_CB23: ; CODE XREF: sub_CB00+1Ej + mov di, 58h ; 'X' + jmp short loc_CB33 +; --------------------------------------------------------------------------- + +loc_CB28: ; CODE XREF: sub_CB00+16j sub_CB00+44j + ; DATA XREF: ... + mov si, 8 + jmp short loc_CB30 +; --------------------------------------------------------------------------- + +loc_CB2D: ; CODE XREF: sub_CB00+16j sub_CB00+44j + ; DATA XREF: ... + mov si, 148h + +loc_CB30: ; CODE XREF: sub_CB00+2Bj + mov di, 0E0h ; 'à' + +loc_CB33: ; CODE XREF: sub_CB00+12j sub_CB00+26j + mov [bp+var_2], 7 + jmp short loc_CB74 +; --------------------------------------------------------------------------- + +loc_CB3A: ; CODE XREF: sub_CB00+Aj + mov bx, [bp+arg_2] + cmp bx, 3 + ja short loc_CB6F + add bx, bx + jmp cs:off_CBCC[bx] + +loc_CB49: ; DATA XREF: seg001:off_CBCCo + mov si, 8 + jmp short loc_CB51 +; --------------------------------------------------------------------------- + +loc_CB4E: ; CODE XREF: sub_CB00+44j + ; DATA XREF: seg001:283Eo + mov si, 148h + +loc_CB51: ; CODE XREF: sub_CB00+4Cj + mov ax, [bp+arg_0] + shl ax, 4 + add ax, 60h ; '`' + jmp short loc_CB6D +; --------------------------------------------------------------------------- + +loc_CB5C: ; CODE XREF: sub_CB00+44j + ; DATA XREF: seg001:2840o + mov si, 8 + jmp short loc_CB64 +; --------------------------------------------------------------------------- + +loc_CB61: ; CODE XREF: sub_CB00+44j + ; DATA XREF: seg001:2842o + mov si, 148h + +loc_CB64: ; CODE XREF: sub_CB00+5Fj + mov ax, [bp+arg_0] + shl ax, 4 + add ax, 0E8h ; 'è' + +loc_CB6D: ; CODE XREF: sub_CB00+5Aj + mov di, ax + +loc_CB6F: ; CODE XREF: sub_CB00+40j + mov [bp+var_2], 2 + +loc_CB74: ; CODE XREF: sub_CB00+38j + lea ax, [si+2] + push ax + lea ax, [di+2] + push ax + push 10h + mov ax, [bp+arg_0] + imul ax, 9 + add ax, 5064h + push ds + push ax + push 0Eh + call sub_3674 + push si + push di + push 10h + mov ax, [bp+arg_0] + imul ax, 9 + add ax, 5064h + push ds + push ax + push [bp+var_2] + call sub_3674 + lea ax, [si+96h] + push ax + push di + push [bp+arg_0] + call sub_CA1B + lea ax, [si+11Eh] + push ax + push di + mov bx, [bp+arg_0] + mov al, [bx+50B9h] + mov ah, 0 + push ax + call sub_CAB0 + pop di + pop si + leave + retn 4 +sub_CB00 endp + +; --------------------------------------------------------------------------- +off_CBCC dw offset loc_CB49 ; DATA XREF: sub_CB00+44r + dw offset loc_CB4E + dw offset loc_CB5C + dw offset loc_CB61 +off_CBD4 dw offset loc_CB1B ; DATA XREF: sub_CB00+16r + dw offset loc_CB20 + dw offset loc_CB28 + dw offset loc_CB2D + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CBDC proc near ; CODE XREF: sub_CC5C:loc_CC9Fp + ; sub_CC5C+92p + push bp + mov bp, sp + push si + push di + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + xor si, si + jmp short loc_CC27 +; --------------------------------------------------------------------------- + +loc_CC13: ; CODE XREF: sub_CBDC+4Ej + push si + call sub_C9BE + xor di, di + jmp short loc_CC21 +; --------------------------------------------------------------------------- + +loc_CC1B: ; CODE XREF: sub_CBDC+48j + push si + push di + call sub_CB00 + inc di + +loc_CC21: ; CODE XREF: sub_CBDC+3Dj + cmp di, 5 + jl short loc_CC1B + inc si + +loc_CC27: ; CODE XREF: sub_CBDC+35j + cmp si, 4 + jl short loc_CC13 + push large 1F00178h + mov al, byte_14101 + mov ah, 0 + add ax, ax + add ax, 14h + push ax + call sub_292A + push large 2300178h + mov al, byte_14101 + mov ah, 0 + add ax, ax + add ax, 15h + push ax + call sub_292A + pop di + pop si + pop bp + retn +sub_CBDC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CC5C proc near ; CODE XREF: sub_A9D6:loc_AB31p + push bp + mov bp, sp + push 100h + call sub_DC76 + push ds + push offset aName ; "name" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + push 280h + call sub_DC76 + push 1 + call sub_644 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov byte_14101, al + push 0 + push ds + push offset aHi01_pi ; "hi01.pi" + call sub_DDD8 + +loc_CC9F: ; CODE XREF: sub_CC5C+B9j + call sub_CBDC + push 1 + call sub_600 + +loc_CCA9: ; CODE XREF: sub_CC5C+A1j sub_CC5C+A8j + call sub_E094 + push 1 + call sub_E15E + test byte ptr word_12A72+1, 20h + jnz short loc_CD17 + test byte ptr word_12A72, 20h + jnz short loc_CD17 + test byte ptr word_12A72+1, 10h + jnz short loc_CD17 + test byte ptr word_12A72+1, 20h + jnz short loc_CD17 + test byte ptr word_12A72, 4 + jz short loc_CCF8 + cmp byte_14101, 0 + jz short loc_CCF8 + dec byte_14101 + mov word_F52E, 0 + call far ptr loc_19F0 + call sub_CBDC + push 1 + call sub_600 + +loc_CCF8: ; CODE XREF: sub_CC5C+7Aj sub_CC5C+81j + test byte ptr word_12A72, 8 + jz short loc_CCA9 + cmp byte_14101, 4 + jnb short loc_CCA9 + inc byte_14101 + mov word_F52E, 0 + call far ptr loc_19F0 + jmp short loc_CC9F +; --------------------------------------------------------------------------- + +loc_CD17: ; CODE XREF: sub_CC5C+5Ej sub_CC5C+65j ... + push 201h + call sub_DC76 + push 1 + call sub_644 + push 0 + call sub_DEE0 + 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_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + push 1 + call sub_600 + +loc_CD64: ; CODE XREF: sub_CC5C+119j + call sub_E094 + push 1 + call sub_E15E + cmp word_12A72, 0 + jnz short loc_CD64 + push 100h + call sub_DC76 + push ds + push offset aOp_1 ; "op" + push 600h + call sub_DBBE + push 0 + call sub_DC76 + pop bp + retn +sub_CC5C endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CD94 proc near ; CODE XREF: _main+B1p + push bp + mov bp, sp + push si + mov byte_14116, 0 + xor si, si + jmp short loc_CE0E +; --------------------------------------------------------------------------- + +loc_CDA1: ; CODE XREF: sub_CD94+7Dj + mov byte_14101, 0 + jmp short loc_CE06 +; --------------------------------------------------------------------------- + +loc_CDA8: ; CODE XREF: sub_CD94+77j + push si + call sub_C9BE + or al, al + jnz short loc_CE0D + mov bx, si + imul bx, 5 + mov al, byte_14101 + mov ah, 0 + add bx, ax + mov al, byte_1409E + mov [bx+5122h], al + mov bx, si + imul bx, 5 + mov al, byte_14101 + mov ah, 0 + add bx, ax + cmp byte ptr [bx+5122h], 80h ; '€' + jz short loc_CDE7 + mov bx, si + imul bx, 5 + mov al, byte_14101 + mov ah, 0 + add bx, ax + mov byte ptr [bx+5122h], 0 + +loc_CDE7: ; CODE XREF: sub_CD94+40j + cmp byte_14101, 4 + jnb short loc_CE02 + mov bx, si + imul bx, 5 + mov al, byte_14101 + mov ah, 0 + add bx, ax + mov al, [bx+5122h] + or byte_14116, al + +loc_CE02: ; CODE XREF: sub_CD94+58j + inc byte_14101 + +loc_CE06: ; CODE XREF: sub_CD94+12j + cmp byte_14101, 5 + jb short loc_CDA8 + +loc_CE0D: ; CODE XREF: sub_CD94+1Aj + inc si + +loc_CE0E: ; CODE XREF: sub_CD94+Bj + cmp si, 4 + jl short loc_CDA1 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov byte_14101, al + push ds + push offset aScnum_bft ; "scnum.bft" + call sub_2656 + push ds + push offset aHi_m_bft ; "hi_m.bft" + call sub_2656 + xor si, si + jmp short loc_CE5D +; --------------------------------------------------------------------------- + +loc_CE34: ; CODE XREF: sub_CD94+CCj + mov bx, si + imul bx, 5 + mov al, [bx+5122h] + mov bx, si + imul bx, 5 + or al, [bx+5123h] + mov bx, si + imul bx, 5 + or al, [bx+5124h] + mov bx, si + imul bx, 5 + or al, [bx+5125h] + mov [si+513Fh], al + inc si + +loc_CE5D: ; CODE XREF: sub_CD94+9Ej + cmp si, 4 + jl short loc_CE34 + pop si + pop bp + retn +sub_CD94 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CE65 proc near ; CODE XREF: sub_CEFF+184p + +var_6 = dword ptr -6 +var_2 = word ptr -2 +arg_0 = byte ptr 4 + + enter 6, 0 + push si + push di + mov al, [bp+arg_0] + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja short loc_CE90 + add bx, bx + jmp cs:off_CEF7[bx] + +loc_CE7E: ; DATA XREF: seg001:off_CEF7o + mov si, 0F02h + jmp short loc_CE90 +; --------------------------------------------------------------------------- + +loc_CE83: ; CODE XREF: sub_CE65+14j + ; DATA XREF: seg001:2B69o + mov si, 0F22h + jmp short loc_CE90 +; --------------------------------------------------------------------------- + +loc_CE88: ; CODE XREF: sub_CE65+14j + ; DATA XREF: seg001:2B6Bo + mov si, 4614h + jmp short loc_CE90 +; --------------------------------------------------------------------------- + +loc_CE8D: ; CODE XREF: sub_CE65+14j + ; DATA XREF: seg001:2B6Do + mov si, 4632h + +loc_CE90: ; CODE XREF: sub_CE65+10j sub_CE65+1Cj ... + push large 0C00001h + call sub_EE2 + mov [bp+var_6], 0AAAAAAAAh + xor di, di + jmp short loc_CEE5 +; --------------------------------------------------------------------------- + +loc_CEA7: ; CODE XREF: sub_CE65+84j + test di, 1 + jnz short loc_CEB5 + mov eax, 0AAAAAAAAh + jmp short loc_CEBB +; --------------------------------------------------------------------------- + +loc_CEB5: ; CODE XREF: sub_CE65+46j + mov eax, 55555555h + +loc_CEBB: ; CODE XREF: sub_CE65+4Ej + mov [bp+var_6], eax + mov [bp+var_2], 0 + jmp short loc_CEDB +; --------------------------------------------------------------------------- + +loc_CEC6: ; CODE XREF: sub_CE65+7Aj + les bx, dword_FA84 + add bx, si + mov eax, [bp+var_6] + mov es:[bx], eax + add [bp+var_2], 4 + add si, 4 + +loc_CEDB: ; CODE XREF: sub_CE65+5Fj + cmp [bp+var_2], 1Ch + jl short loc_CEC6 + inc di + add si, 34h ; '4' + +loc_CEE5: ; CODE XREF: sub_CE65+40j + cmp di, 0A0h ; ' ' + jl short loc_CEA7 + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + pop di + pop si + leave + retn 2 +sub_CE65 endp + +; --------------------------------------------------------------------------- +off_CEF7 dw offset loc_CE7E ; DATA XREF: sub_CE65+14r + dw offset loc_CE83 + dw offset loc_CE88 + dw offset loc_CE8D + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_CEFF proc near ; CODE XREF: sub_D095+74p sub_D12D+BCp ... + +var_4 = word ptr -4 +var_2 = word ptr -2 +arg_0 = word ptr 4 + + enter 4, 0 + push si + push di + mov al, byte ptr word_14118 + mov ah, 0 + mov bx, ax + cmp bx, 3 + ja short loc_CF59 + add bx, bx + jmp cs:off_D08D[bx] + +loc_CF18: ; DATA XREF: seg001:off_D08Do + mov si, 10h + mov di, 30h ; '0' + mov [bp+var_2], 0B0h ; '°' + mov [bp+var_4], 0C0h ; 'À' + jmp short loc_CF59 +; --------------------------------------------------------------------------- + +loc_CF2A: ; CODE XREF: sub_CEFF+14j + ; DATA XREF: seg001:2CFFo + mov si, 110h + mov di, 30h ; '0' + mov [bp+var_2], 1B0h + mov [bp+var_4], 0C0h ; 'À' + jmp short loc_CF59 +; --------------------------------------------------------------------------- + +loc_CF3C: ; CODE XREF: sub_CEFF+14j + ; DATA XREF: seg001:2D01o + mov si, 0A0h ; ' ' + mov di, 0E0h ; 'à' + mov [bp+var_2], 140h + jmp short loc_CF54 +; --------------------------------------------------------------------------- + +loc_CF49: ; CODE XREF: sub_CEFF+14j + ; DATA XREF: seg001:2D03o + mov si, 190h + mov di, 0E0h ; 'à' + mov [bp+var_2], 230h + +loc_CF54: ; CODE XREF: sub_CEFF+48j + mov [bp+var_4], 170h + +loc_CF59: ; CODE XREF: sub_CEFF+10j sub_CEFF+29j ... + cmp [bp+arg_0], 0 + jnz loc_D012 + mov al, byte ptr word_14118 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+5143h], 0 + jz short loc_CF82 + lea ax, [si-8] + push ax + lea ax, [di-8] + push ax + mov al, byte ptr word_14118 + mov ah, 0 + add ax, 28h ; '(' + push ax + jmp short loc_CF8C +; --------------------------------------------------------------------------- + +loc_CF82: ; CODE XREF: sub_CEFF+6Ej + lea ax, [si-8] + push ax + lea ax, [di-8] + push ax + push 2Dh ; '-' + +loc_CF8C: ; CODE XREF: sub_CEFF+81j + call sub_D590 + push large 0C00001h + call sub_EE2 + lea ax, [si+0D8h] + mov bx, 8 + cwd + idiv bx + push ax + push di + lea ax, [si+0DFh] + cwd + idiv bx + push ax + lea ax, [di+97h] + push ax + call sub_BAC + mov ax, si + mov bx, 8 + cwd + idiv bx + push ax + lea ax, [di+98h] + push ax + lea ax, [si+0DFh] + cwd + idiv bx + push ax + lea ax, [di+9Fh] + push ax + call sub_BAC + mov dx, 7Ch ; '|' + mov al, 0 + out dx, al + mov al, byte ptr word_14118 + mov ah, 0 + imul ax, 5 + mov dl, byte_1411A + mov dh, 0 + add ax, dx + mov bx, ax + cmp byte ptr [bx+5122h], 0 + jz loc_D086 + mov ax, [bp+var_2] + add ax, 0FFF8h + push ax + mov ax, [bp+var_4] + add ax, 0FFF8h + push ax + push 2Ch ; ',' + call sub_D758 + jmp short loc_D086 +; --------------------------------------------------------------------------- + +loc_D012: ; CODE XREF: sub_CEFF+5Ej + lea ax, [si-8] + push ax + lea ax, [di-8] + push ax + push large 0E00008h + call far ptr loc_DB3C + lea ax, [si-8] + push ax + push di + push large 800A0h + call far ptr loc_DB3C + mov al, byte ptr word_14118 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+5143h], 0 + jz short loc_D050 + push si + push di + mov al, byte ptr word_14118 + mov ah, 0 + add ax, 28h ; '(' + push ax + jmp short loc_D054 +; --------------------------------------------------------------------------- + +loc_D050: ; CODE XREF: sub_CEFF+142j + push si + push di + push 2Dh ; '-' + +loc_D054: ; CODE XREF: sub_CEFF+14Fj + call sub_D590 + mov al, byte ptr word_14118 + mov ah, 0 + imul ax, 5 + mov dl, byte_1411A + mov dh, 0 + add ax, dx + mov bx, ax + cmp byte ptr [bx+5122h], 0 + jz short loc_D07F + push [bp+var_2] + push [bp+var_4] + push 2Ch ; ',' + call sub_D758 + +loc_D07F: ; CODE XREF: sub_CEFF+171j + push word_14118 + call sub_CE65 + +loc_D086: ; CODE XREF: sub_CEFF+F8j + ; sub_CEFF+111j + pop di + pop si + leave + retn 2 +sub_CEFF endp + +; --------------------------------------------------------------------------- + db 0 +off_D08D dw offset loc_CF18 ; DATA XREF: sub_CEFF+14r + dw offset loc_CF2A + dw offset loc_CF3C + dw offset loc_CF49 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D095 proc near ; CODE XREF: sub_D12D:loc_D1B2p + +var_2 = word ptr -2 + + enter 2, 0 + push si + mov al, byte ptr word_14118 + mov ah, 0 + mov [bp+var_2], ax + mov word_F52E, 0 + call far ptr loc_19F0 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + push ds + push offset aSlb1_pi ; "slb1.pi" + call sub_DDD8 + push 0 + call sub_DEBA + push large 0 + push 0 + call sub_DE0A + push 0 + call sub_DEE0 + push 0 + call sub_1250 + call sub_D688 + 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 + xor si, si + mov byte ptr word_14118, 0 + jmp short loc_D111 +; --------------------------------------------------------------------------- + +loc_D0F7: ; CODE XREF: sub_D095+7Fj + mov al, byte ptr word_14118 + mov ah, 0 + cmp ax, [bp+var_2] + jz short loc_D106 + mov ax, 1 + jmp short loc_D108 +; --------------------------------------------------------------------------- + +loc_D106: ; CODE XREF: sub_D095+6Aj + xor ax, ax + +loc_D108: ; CODE XREF: sub_D095+6Fj + push ax + call sub_CEFF + inc si + inc byte ptr word_14118 + +loc_D111: ; CODE XREF: sub_D095+60j + cmp si, 4 + jl short loc_D0F7 + mov al, byte ptr [bp+var_2] + mov byte ptr word_14118, al + push 0 + call sub_1250 + push 1 + call sub_600 + pop si + leave + retn +sub_D095 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D12D proc near ; CODE XREF: sub_A39C+28p sub_A447+1Dp + +var_4 = word ptr -4 +var_1 = byte ptr -1 + + enter 4, 0 + mov [bp+var_4], 0 + jmp short loc_D146 +; --------------------------------------------------------------------------- + +loc_D138: ; CODE XREF: sub_D12D+1Dj + mov bx, [bp+var_4] + mov al, [bx+513Fh] + mov [bx+5143h], al + inc [bp+var_4] + +loc_D146: ; CODE XREF: sub_D12D+9j + cmp [bp+var_4], 4 + jl short loc_D138 + les bx, dword_11DCC + cmp byte ptr es:[bx+13h], 6 + jnz short loc_D18A + mov byte_1411A, 4 + mov byte ptr word_14118, 0FFh + mov [bp+var_4], 0 + jmp short loc_D182 +; --------------------------------------------------------------------------- + +loc_D168: ; CODE XREF: sub_D12D+59j + cmp byte ptr word_14118, 0FFh + jnz short loc_D17F + mov bx, [bp+var_4] + cmp byte ptr [bx+5143h], 0 + jz short loc_D17F + mov al, byte ptr [bp+var_4] + mov byte ptr word_14118, al + +loc_D17F: ; CODE XREF: sub_D12D+40j sub_D12D+4Aj + inc [bp+var_4] + +loc_D182: ; CODE XREF: sub_D12D+39j + cmp [bp+var_4], 4 + jl short loc_D168 + jmp short loc_D1B2 +; --------------------------------------------------------------------------- + +loc_D18A: ; CODE XREF: sub_D12D+28j + mov [bp+var_4], 0 + jmp short loc_D19C +; --------------------------------------------------------------------------- + +loc_D191: ; CODE XREF: sub_D12D+73j + mov bx, [bp+var_4] + mov byte ptr [bx+5143h], 1 + inc [bp+var_4] + +loc_D19C: ; CODE XREF: sub_D12D+62j + cmp [bp+var_4], 4 + jl short loc_D191 + les bx, dword_11DCC + mov al, es:[bx+11h] + mov byte_1411A, al + mov byte ptr word_14118, 0 + +loc_D1B2: ; CODE XREF: sub_D12D+5Bj + call sub_D095 + +loc_D1B5: ; CODE XREF: sub_D12D+1D1j + call sub_E094 + cmp [bp+var_1], 0 + jnz loc_D2EC + test byte ptr word_12A72, 4 + jnz short loc_D1D0 + test byte ptr word_12A72, 8 + jz short loc_D223 + +loc_D1D0: ; CODE XREF: sub_D12D+9Aj + call sub_D5F6 + push 1 + call sub_D602 + call sub_D63C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_CEFF + xor byte ptr word_14118, 1 + push 0 + call sub_CEFF + mov word_11E2E, 0 + push 1 + call sub_E15E + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_1250 + mov word_11E2E, 0 + push 1 + call sub_E15E + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + +loc_D223: ; CODE XREF: sub_D12D+A1j + test byte ptr word_12A72, 1 + jnz short loc_D231 + test byte ptr word_12A72, 2 + jz short loc_D284 + +loc_D231: ; CODE XREF: sub_D12D+FBj + call sub_D5F6 + push 1 + call sub_D602 + call sub_D63C + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 1 + call sub_CEFF + xor byte ptr word_14118, 2 + push 0 + call sub_CEFF + mov word_11E2E, 0 + push 1 + call sub_E15E + mov dx, 0A4h ; '¤' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + push 0 + call sub_1250 + mov word_11E2E, 0 + push 1 + call sub_E15E + mov dx, 0A4h ; '¤' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + +loc_D284: ; CODE XREF: sub_D12D+102j + test byte ptr word_12A72+1, 20h + jnz short loc_D292 + test byte ptr word_12A72, 20h + jz short loc_D2CC + +loc_D292: ; CODE XREF: sub_D12D+15Cj + mov al, byte ptr word_14118 + mov ah, 0 + mov bx, ax + cmp byte ptr [bx+5143h], 0 + jz short loc_D2CC + call sub_D5F6 + push 0Bh + call sub_D602 + call sub_D63C + les bx, dword_11DCC + mov al, byte ptr word_14118 + mov es:[bx+14h], al + push 1 + call sub_644 + call sub_D726 + xor ax, ax + leave + retn +; --------------------------------------------------------------------------- + +loc_D2CC: ; CODE XREF: sub_D12D+163j + ; sub_D12D+171j + test byte ptr word_12A72+1, 10h + jz short loc_D2E4 + push 1 + call sub_644 + call sub_D726 + mov ax, 1 + leave + retn +; --------------------------------------------------------------------------- + +loc_D2E4: ; CODE XREF: sub_D12D+1A4j + mov al, byte ptr word_12A72 + mov [bp+var_1], al + jmp short loc_D2F7 +; --------------------------------------------------------------------------- + +loc_D2EC: ; CODE XREF: sub_D12D+91j + cmp word_12A72, 0 + jnz short loc_D2F7 + mov [bp+var_1], 0 + +loc_D2F7: ; CODE XREF: sub_D12D+1BDj + ; sub_D12D+1C4j + push 1 + call sub_E15E + jmp loc_D1B5 +sub_D12D 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 + leave + retn +; --------------------------------------------------------------------------- + db 0 + push di + xor ax, ax + mov di, 3662h + xor dl, dl + jmp short loc_D319 +; --------------------------------------------------------------------------- + +loc_D30E: ; CODE XREF: seg002:001Ej + xor dl, dl + mov cx, 8 + +loc_D313: ; CODE XREF: seg002:0017j + rol al, 1 + rcr dl, 1 + loop loc_D313 + +loc_D319: ; CODE XREF: seg002:000Cj + mov [di], dl + inc di + inc al + jnz short loc_D30E + pop di + retf + +; =============== S U B R O U T I N E ======================================= + + +sub_D322 proc far ; CODE XREF: sub_D380+Dp + xor ax, ax + mov byte_12742, 60h ; '`' + mov byte_FA43, al + mov byte_FA42, al + mov byte_FA41, 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_D34F + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short locret_D34F + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short locret_D34F + inc ax + +locret_D34F: ; CODE XREF: sub_D322+1Cj sub_D322+23j ... + retf +sub_D322 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D350 proc far ; CODE XREF: sub_D380+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_D37C + cmp byte ptr es:[bx+3], 4Dh ; 'M' + jnz short loc_D37C + cmp byte ptr es:[bx+4], 44h ; 'D' + jnz short loc_D37C + mov byte_12742, 61h ; 'a' + mov byte_FA43, 1 + mov ax, 1 + retf +; --------------------------------------------------------------------------- + +loc_D37C: ; CODE XREF: sub_D350+Ej sub_D350+15j ... + xor ax, ax + retf +sub_D350 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D380 proc far ; CODE XREF: sub_ABCF+DEP + ; sub_ABCF+1BFP ... + +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_D322 + cmp si, 3 + jnz short loc_D39A + nop + push cs + call near ptr sub_D350 + +loc_D39A: ; CODE XREF: sub_D380+13j + mov ah, 9 + int 60h + cmp al, 0FFh + jnz short loc_D3A9 + mov byte_FA42, 0 + jmp short loc_D3B9 +; --------------------------------------------------------------------------- + +loc_D3A9: ; CODE XREF: sub_D380+20j + or al, al + jnz short loc_D3B4 + mov byte_FA42, 1 + jmp short loc_D3B9 +; --------------------------------------------------------------------------- + +loc_D3B4: ; CODE XREF: sub_D380+2Bj + mov byte_FA42, 2 + +loc_D3B9: ; CODE XREF: sub_D380+27j sub_D380+32j + cmp di, 1 + jnz short loc_D3D1 + cmp byte_FA42, 0 + jz short loc_D3CA + mov ax, 1 + jmp short loc_D3CC +; --------------------------------------------------------------------------- + +loc_D3CA: ; CODE XREF: sub_D380+43j + xor ax, ax + +loc_D3CC: ; CODE XREF: sub_D380+48j + mov byte_FA41, al + jmp short loc_D3E2 +; --------------------------------------------------------------------------- + +loc_D3D1: ; CODE XREF: sub_D380+3Cj + cmp di, 2 + jnz short loc_D3DD + mov byte_FA41, 2 + jmp short loc_D3E2 +; --------------------------------------------------------------------------- + +loc_D3DD: ; CODE XREF: sub_D380+54j + mov byte_FA41, 0 + +loc_D3E2: ; CODE XREF: sub_D380+4Fj sub_D380+5Bj + or si, si + jnz short loc_D3ED + mov byte_FA42, 0 + jmp short loc_D411 +; --------------------------------------------------------------------------- + +loc_D3ED: ; CODE XREF: sub_D380+64j + cmp si, 3 + jnz short loc_D400 + cmp byte_FA43, 0 + jz short loc_D400 + mov byte_FA42, 3 + jmp short loc_D411 +; --------------------------------------------------------------------------- + +loc_D400: ; CODE XREF: sub_D380+70j sub_D380+77j + cmp si, 1 + jnz short loc_D411 + cmp byte_FA42, 0 + jz short loc_D411 + mov byte_FA42, 1 + +loc_D411: ; CODE XREF: sub_D380+6Bj sub_D380+7Ej ... + mov al, byte_FA42 + mov ah, 0 + pop di + pop si + pop bp + retf 4 +sub_D380 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D41C proc far ; CODE XREF: _main+121P + push bp + mov bp, sp + nop + push cs + call near ptr sub_D7EC + call sub_197A + call sub_2142 + call sub_2136 + pop bp + retf +sub_D41C endp + +; --------------------------------------------------------------------------- + db 0 + +loc_D436: ; CODE XREF: sub_A5F6+10AP + ; sub_A717+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_F9BE + add bx, bx + cmp bx, 8 +; START OF FUNCTION CHUNK FOR sub_DA6B + +loc_D480: ; CODE XREF: sub_DA6B+2Dj + ; DATA XREF: seg002:07E9o + jb short loc_D492 + +loc_D482: ; CODE XREF: sub_DA6B+2Dj + ; DATA XREF: seg002:07EBo + cmp bx, 10h + jnb short loc_D492 + mov ax, [bx+9AEh] + mov cs:word_D58D, ax + mov bx, 8 + +loc_D492: ; CODE XREF: sub_DA6B:loc_D480j + ; sub_DA6B-5E6j + mov ax, [bx+9A2h] + mov cs:word_D4F5, ax + mov ax, [bx+9ACh] + mov cs:word_D547, ax + mov ax, word_F9C0 + mov cs:word_D514, ax + mov cs:word_D55B, ax + push ds + pop fs + assume fs:dseg + lds si, [bp+6] + lodsb + or al, al + jz short loc_D51F + +loc_D4B8: ; CODE XREF: seg002:021Dj + mov dx, cx + shr dx, 3 + add di, dx + and cx, 7 + mov ah, 9 + test al, 0E0h + jns short loc_D531 + jp short loc_D52E + mov ah, al + lodsb + shl ah, 1 + cmp al, 9Fh ; 'Ÿ' + jnb short loc_D4D8 + cmp al, 80h ; '€' + adc ax, 0FEDFh + +loc_D4D8: ; CODE XREF: sub_DA6B-59Aj + 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 +; END OF FUNCTION CHUNK FOR sub_DA6B +; --------------------------------------------------------------------------- + db 0E8h +word_D4F5 dw 78h ; DATA XREF: sub_DA6B-5D5w + 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_D514 dw 1234h ; DATA XREF: sub_DA6B-5C6w +; --------------------------------------------------------------------------- + +loc_D516: ; CODE XREF: seg002:025Fj + xor ch, ch + add cx, dx + lodsb + or al, al + jnz short loc_D4B8 +; START OF FUNCTION CHUNK FOR sub_DA6B + +loc_D51F: ; CODE XREF: sub_DA6B-5B5j + mov al, 0Ah + out 68h, al + xor al, al + out 7Ch, al + pop ds + pop di + pop si + pop bp + retf 0Ah +; --------------------------------------------------------------------------- + +loc_D52E: ; CODE XREF: sub_DA6B-5A3j + add ax, 80h ; '€' + +loc_D531: ; CODE XREF: sub_DA6B-5A5j + cmp al, 20h ; ' ' + jz short near ptr byte_D55A + 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 +; END OF FUNCTION CHUNK FOR sub_DA6B +; --------------------------------------------------------------------------- + db 0E8h +word_D547 dw 26h ; DATA XREF: sub_DA6B-5CDw + db 0D3h, 0C8h, 0ABh, 83h, 0C7h, 4Eh, 0FEh, 0C5h, 80h, 0FDh + db 10h, 72h, 0E6h, 81h, 0EFh, 0, 5 +byte_D55A db 0BAh ; CODE XREF: sub_DA6B-538j +word_D55B dw 1234h ; DATA XREF: sub_DA6B-5C2w +; --------------------------------------------------------------------------- + shr dx, 1 + jmp short loc_D516 +; --------------------------------------------------------------------------- + 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_D56F 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_D56F endp + +; --------------------------------------------------------------------------- + db 0E8h, 0ECh, 0FFh, 8Ah, 0DDh, 83h, 0E3h, 2 dup(3), 0DBh + db 64h, 23h, 87h +word_D58D dw 1234h ; DATA XREF: sub_DA6B-5E0w +; --------------------------------------------------------------------------- + retn + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D590 proc far ; CODE XREF: sub_CEFF:loc_CF8CP + ; sub_CEFF:loc_D054P + +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 + assume es:nothing + 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, 3A96h + 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_D5DC: ; CODE XREF: sub_D590+5Cj + mov di, bx + +loc_D5DE: ; CODE XREF: sub_D590+55j + mov cx, bp + rep movsd + sub di, dx + jns short loc_D5DE + dec al + jz short loc_D5EE + pop es + jmp short loc_D5DC +; --------------------------------------------------------------------------- + +loc_D5EE: ; CODE XREF: sub_D590+59j + pop ds + pop di + pop si + pop bp + retf 6 +sub_D590 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D5F6 proc far ; CODE XREF: sub_A968+59P + ; sub_A9D6:loc_AA6CP ... + mov byte_F9C3, 0 + mov byte_F9C2, 0FFh + retf +sub_D5F6 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D602 proc far ; CODE XREF: sub_A968+60P sub_A9D6+9DP ... + mov bx, sp + mov dx, ss:[bx+4] + cmp byte_FA41, 0 + jz short locret_D638 + cmp byte_F9C2, 0FFh + jnz short loc_D61D + mov byte_F9C2, dl + retf 2 +; --------------------------------------------------------------------------- + +loc_D61D: ; CODE XREF: sub_D602+12j + mov bl, byte_F9C2 + xor bh, bh + mov al, [bx+980h] + mov bx, dx + cmp al, [bx+980h] + ja short locret_D638 + mov byte_F9C2, dl + mov byte_F9C3, 0 + +locret_D638: ; CODE XREF: sub_D602+Bj sub_D602+2Bj + retf 2 +sub_D602 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D63C proc far ; CODE XREF: sub_A968+65P sub_A9D6+A2P ... + cmp byte_FA41, 0 + jz short locret_D687 + cmp byte_F9C2, 0FFh + jz short locret_D687 + cmp byte_F9C3, 0 + jnz short loc_D669 + mov al, byte_F9C2 + cmp byte_FA41, 2 + jz short loc_D661 + 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_D669 +; --------------------------------------------------------------------------- + +loc_D661: ; CODE XREF: sub_D63C+1Dj + xor ah, ah + push ax + call sub_3284 + +loc_D669: ; CODE XREF: sub_D63C+13j sub_D63C+23j + inc byte_F9C3 + mov bl, byte_F9C2 + xor bh, bh + mov al, [bx+991h] + cmp al, byte_F9C3 + jnb short locret_D687 + mov byte_F9C3, 0 + mov byte_F9C2, 0FFh + +locret_D687: ; CODE XREF: sub_D63C+5j sub_D63C+Cj ... + retf +sub_D63C endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D688 proc far ; CODE XREF: sub_B806+4DP sub_C490+84P ... + push si + push di + cmp word_F9C4, 0 + jnz short loc_D6BD + push 7D00h + call sub_2322 + mov word_F9C4, ax + push 7D00h + call sub_2322 + mov word_F9C6, ax + push 7D00h + call sub_2322 + mov word_F9C8, ax + push 7D00h + call sub_2322 + mov word_F9CA, ax + +loc_D6BD: ; CODE XREF: sub_D688+7j + mov dl, 4 + push ds + push 0E000h + push word_F9CA + push 0B800h + push word_F9C8 + push 0B000h + push word_F9C6 + push 0A800h + push word_F9C4 + +loc_D6DC: ; CODE XREF: sub_D688+62j + pop es + pop ds + xor si, si + xor di, di + mov cx, 1F40h + rep movsd + dec dl + jnz short loc_D6DC + pop ds + pop di + pop si + retf +sub_D688 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_D6F0 proc far ; CODE XREF: sub_B806:loc_B9DAP + push si + push di + mov dl, 4 + push ds + push 0E000h + push word_F9CA + push 0B800h + push word_F9C8 + push 0B000h + push word_F9C6 + push 0A800h + push word_F9C4 + +loc_D711: ; CODE XREF: sub_D6F0+2Fj + pop ds + pop es + xor si, si + xor di, di + mov cx, 1F40h + rep movsd + dec dl + jnz short loc_D711 + pop ds + pop di + pop si + retf +sub_D6F0 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_D726 proc far ; CODE XREF: sub_B806+255P + ; sub_C490+32AP ... + cmp word_F9C4, 0 + jz short locret_D757 + push word_F9C4 + call sub_2426 + push word_F9C6 + call sub_2426 + push word_F9C8 + call sub_2426 + push word_F9CA + call sub_2426 + mov word_F9C4, 0 + +locret_D757: ; CODE XREF: sub_D726+5j + retf +sub_D726 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D758 proc far ; CODE XREF: sub_A5F6+B6P sub_A5F6+C1P ... + +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 + 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+arg_0] + shl si, 4 + add si, 3A96h + mov ax, [bp+arg_2] + shl ax, 2 + add ax, [bp+arg_2] + add ax, 0A800h + mov es, ax + push 0 + add ax, 3800h + push ax + sub ax, 2800h + push ax + sub ax, 800h + push ax + mov ax, [bp+arg_4] + 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+0Eh] + mov cx, [si+0Ch] + mov ds, cx + xor si, si + cld + +loc_D7B8: ; CODE XREF: sub_D758+67j + mov cx, bp + rep movsd + sub di, dx + jns short loc_D7B8 + mov ds, ax + xor al, al + out 7Ch, al + xor si, si + nop + +loc_D7CA: ; CODE XREF: sub_D758+8Aj + mov di, bx + +loc_D7CC: ; CODE XREF: sub_D758+83j + mov cx, bp + +loc_D7CE: ; CODE XREF: sub_D758+7Fj + lodsd + or es:[di], eax + add di, 4 + loop loc_D7CE + sub di, dx + jns short loc_D7CC + pop ax + mov es, ax + or ax, ax + jnz short loc_D7CA + pop ds + pop di + pop si + pop bp + retf 6 +sub_D758 endp ; sp-analysis failed + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D7EC proc far ; CODE XREF: sub_A39C+77P sub_A447+6CP ... + push bp + mov bp, sp + call sub_3858 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + 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_24CE + call sub_2210 + call sub_20FE + call sub_1968 + call sub_84C + call sub_3532 + pop bp + retf +sub_D7EC endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_D834 proc far ; CODE XREF: sub_B69A+92P sub_B69A+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_D834 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + mov si, [bp+0Eh] + mov bx, [bp+6] + xor bh, bh + add bx, bx + movsx eax, word ptr [bp+8] + movsx edx, word ptr [bx+610h] + imul eax, edx + sar eax, 8 + add ax, [bp+0Ch] + mov [si], ax + movsx eax, word ptr [bp+8] + movsx edx, word ptr [bx+590h] + 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_D894 proc far ; CODE XREF: sub_C490+7CP + push si + push di + mov al, 0C0h ; 'À' + out 7Ch, al + mov ax, 0A800h + mov es, ax + assume es:nothing + mov di, 1400h + call sub_DA30 + mov di, 19A0h + call sub_DA30 + mov di, 1F40h + call sub_DA30 + mov di, 24E0h + call sub_DA30 + mov di, 2A80h + call sub_DA30 + mov di, 3020h + call sub_DA30 + mov ah, 5 + call sub_DB21 + mov al, 0 + mov di, 156Ch + call sub_DB0D + mov al, 1 + mov di, 156Dh + call sub_DB0D + mov al, 2 + mov di, 156Eh + call sub_DB0D + mov al, 0 + mov di, 1B0Ch + call sub_DB0D + mov al, 1 + mov di, 1B0Dh + call sub_DB0D + mov al, 3 + mov di, 1B0Eh + call sub_DB0D + mov al, 0 + mov di, 20ACh + call sub_DB0D + mov al, 1 + mov di, 20ADh + call sub_DB0D + mov al, 4 + mov di, 20AEh + call sub_DB0D + mov al, 0 + mov di, 264Ch + call sub_DB0D + mov al, 1 + mov di, 264Dh + call sub_DB0D + mov al, 5 + mov di, 264Eh + call sub_DB0D + mov al, 0 + mov di, 2BECh + call sub_DB0D + mov al, 1 + mov di, 2BEDh + call sub_DB0D + mov al, 6 + mov di, 2BEEh + call sub_DB0D + mov al, 7 + mov di, 318Ch + call sub_DB0D + mov al, 7 + mov di, 318Dh + call sub_DB0D + mov al, 8 + mov di, 318Eh + call sub_DB0D + xor al, al + out 7Ch, al + push ds + mov ah, 10h + int 60h + mov ax, ds + pop ds + mov word ptr dword_1281A, dx + mov word ptr dword_1281A+2, ax + pop di + pop si + retf +sub_D894 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D96E proc far ; CODE XREF: sub_C293+6P + push si + push di + push ds + push ds + pop fs + mov al, 0C0h ; 'À' + out 7Ch, al + mov ax, 0A800h + mov es, ax + mov di, 3020h + call sub_DA30 + lds bx, dword_1281A + mov di, 1400h + mov si, 0 + call sub_D9E2 + add bx, 2 + mov di, 19A0h + mov si, 1 + call sub_D9E2 + add bx, 2 + mov di, 1F40h + mov si, 2 + call sub_D9E2 + add bx, 2 + mov di, 24E0h + mov si, 3 + call sub_D9E2 + add bx, 2 + mov di, 2A80h + mov si, 4 + call sub_D9E2 + mov ah, 5 + call sub_DB21 + mov di, 3020h + add bx, 4 + call sub_DA12 + call near ptr sub_DA6B + add bx, 2 + call sub_DA12 + call near ptr sub_DA6B + xor al, al + out 7Ch, al + pop ds + pop di + pop si + retf +sub_D96E endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_D9E2 proc near ; CODE XREF: sub_D96E+1Fp sub_D96E+2Bp ... + call sub_DA12 + push ds + push fs + pop ds + cmp al, [si+382Ah] + jnz short loc_D9F5 + cmp al, [si+3832h] + jz short loc_DA10 + +loc_D9F5: ; CODE XREF: sub_D9E2+Bj + mov ah, [si+382Ah] + mov [si+3832h], ah + mov [si+382Ah], al + call sub_DA30 + mov ah, 5 + call sub_DB21 + mov al, [si+382Ah] + call near ptr sub_DA6B + +loc_DA10: ; CODE XREF: sub_D9E2+11j + pop ds + retn +sub_D9E2 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DA12 proc near ; CODE XREF: sub_D96E+5Dp sub_D96E+66p ... + push bx + mov bx, [bx] + mov ax, [bx+4] + cmp ah, 4 + jbe short loc_DA1F + mov ah, 4 + +loc_DA1F: ; CODE XREF: sub_DA12+9j + cmp al, ah + jbe short loc_DA2C + cmp al, 1 + jbe short loc_DA2C + mov al, [bx+55h] + jmp short loc_DA2E +; --------------------------------------------------------------------------- + +loc_DA2C: ; CODE XREF: sub_DA12+Fj sub_DA12+13j + mov al, 0FFh + +loc_DA2E: ; CODE XREF: sub_DA12+18j + pop bx + retn +sub_DA12 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DA30 proc near ; CODE XREF: sub_D894+Ep sub_D894+14p ... + push di + push si + mov ah, 3 + call sub_DB21 + add di, 30h ; '0' + mov ax, 0EEEEh + mov dl, 0Fh + +loc_DA3F: ; CODE XREF: sub_DA30+19j + mov cx, 0Eh + rep stosw + add di, 34h ; '4' + dec dl + jnz short loc_DA3F + mov ah, 1 + call sub_DB21 + mov si, 9EEh + sub di, 4B0h + mov dl, 9 + +loc_DA59: ; CODE XREF: sub_DA30+36j + mov cx, 0Eh + rep movsw + sub si, 1Ch + add di, 34h ; '4' + dec dl + jnz short loc_DA59 + pop si + pop di + retn +sub_DA30 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DA6B proc far ; CODE XREF: sub_D96E+60p sub_D96E+69p ... + +; FUNCTION CHUNK AT 0180 SIZE 00000074 BYTES +; FUNCTION CHUNK AT 021F SIZE 00000027 BYTES + + cmp al, 0FFh + jnz short loc_DA70 + retn +; --------------------------------------------------------------------------- + +loc_DA70: ; CODE XREF: sub_DA6B+2j + push bx + push di + mov ah, al + and ah, 0Fh + xor bh, bh + mov bl, ah + shr al, 4 + mov dl, 1Ch + mul dl + mov dl, cs:[bx+801h] + add bx, bx + add ax, cs:[bx+7E9h] + mov cx, ax + shr ax, 3 + add di, ax + and cl, 7 + jmp cs:off_DAD1[bx] + +loc_DA9D: ; DATA XREF: seg002:off_DAD1o + ; seg002:07D5o ... + shr dl, cl + mov al, cl + mov cx, 9 + +loc_DAA4: ; CODE XREF: sub_DA6B+3Fj + mov es:[di], dl + add di, 50h ; 'P' + loop loc_DAA4 + mov cl, al + mov al, 0E0h ; 'à' + shr al, cl + mov cx, 6 + +loc_DAB5: ; CODE XREF: sub_DA6B+50j + mov es:[di], al + add di, 50h ; 'P' + loop loc_DAB5 + jmp short loc_DACE +; --------------------------------------------------------------------------- + +loc_DABF: ; CODE XREF: sub_DA6B+2Dj + ; DATA XREF: seg002:07D3o ... + xor dh, dh + ror dx, cl + mov cx, 8 + +loc_DAC6: ; CODE XREF: sub_DA6B+61j + mov es:[di], dx + add di, 50h ; 'P' + loop loc_DAC6 + +loc_DACE: ; CODE XREF: sub_DA6B+52j + pop di + pop bx + retn +sub_DA6B endp ; sp-analysis failed + +; --------------------------------------------------------------------------- +off_DAD1 dw offset loc_DA9D ; DATA XREF: sub_DA6B+2Dr + dw offset loc_DABF + dw offset loc_DA9D + dw offset loc_DABF + dw offset loc_DA9D + dw offset loc_DA9D + dw offset loc_DABF + dw offset loc_DA9D + dw offset loc_DABF + dw offset loc_DA9D + dw offset loc_DABF + dw offset loc_DA9D + dw offset loc_D480 + dw offset loc_D482 + dw 184h + dw 186h + dw 188h + dw 18Ch + dw 18Eh + dw 190h + dw 192h + dw 194h + dw 196h + dw 198h + dw 0C0C0h + dw 0C040h + dw 0C060h + dw 40C0h + dw 40C0h + dw 60C0h + +; =============== S U B R O U T I N E ======================================= + + +sub_DB0D proc near ; CODE XREF: sub_D894+39p sub_D894+41p ... + xor ah, ah + shl al, 3 + add ax, 0A0Ah + mov si, ax + mov cx, 8 + +loc_DB1A: ; CODE XREF: sub_DB0D+11j + movsb + add di, 4Fh ; 'O' + loop loc_DB1A + retn +sub_DB0D endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DB21 proc near ; CODE XREF: sub_D894+31p sub_D96E+54p ... + cli + mov dx, 7Eh ; '~' + 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 + sti + retn +sub_DB21 endp + +; --------------------------------------------------------------------------- + db 0 + +loc_DB3C: ; CODE XREF: sub_BE79+87P sub_C3A7+15P ... + 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_DBA2, bx + and ax, 0Fh + mov cx, ax + add ax, [bp+8] + shr ax, 4 + or cx, cx + jz short loc_DB6F + inc ax + +loc_DB6F: ; CODE XREF: seg002:086Cj + mov cs:word_DBA7, ax + jmp short $+2 + mov cx, 28h ; '(' + sub cx, ax + shl cx, 1 + mov ax, [bp+6] + mov bp, cx + push 0E000h + push word_F9CA + push 0B800h + push word_F9C8 + push 0B000h + push word_F9C6 + push 0A800h + push word_F9C4 + mov dl, 4 + mov bx, ax +; --------------------------------------------------------------------------- + db 0BFh +word_DBA2 dw 1234h ; DATA XREF: seg002:085Aw + db 1Fh, 7, 0B9h +word_DBA7 dw 1234h ; DATA XREF: seg002:loc_DB6Fw + db 8Bh, 0F7h, 0F3h, 0A5h, 3, 0FDh, 4Bh, 75h, 0F4h, 0FEh + db 0CAh, 75h, 0E9h, 1Fh, 5Eh, 5Fh, 5Dh, 0CAh, 8, 0, 90h + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DBBE proc far ; CODE XREF: sub_ABCF+EAP sub_ABCF+F6P ... + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 + + push bp + mov bp, sp + push si + push di + mov dx, ds + mov es, dx + assume es:dseg + mov di, 383Eh + lds si, [bp+arg_2] + mov bp, [bp+arg_0] + mov cx, 0Dh + rep movsb + mov ds, dx + mov di, 383Eh + dec cx + xor ax, ax + repne scasb + dec di + mov byte ptr [di], 2Eh ; '.' + inc di + cmp bp, 0B00h + jnz short loc_DC19 + cmp byte_FA41, 0 + jz short loc_DC70 + xor bx, bx + cmp byte_FA41, 2 + jnz short loc_DC2F + mov dword ptr [di], 736665h + call sub_3532 + push 800h + call sub_338E + push ds + push offset unk_1281E + call sub_2E52 + jmp short loc_DC70 +; --------------------------------------------------------------------------- + +loc_DC19: ; CODE XREF: sub_DBBE+2Aj + cmp byte_FA42, 0 + jz short loc_DC70 + push 100h + push cs + call near ptr sub_DC76 + movzx bx, byte_FA42 + shl bx, 2 + +loc_DC2F: ; CODE XREF: sub_DBBE+3Aj + mov eax, [bx+0A52h] + +loc_DC34: ; CODE XREF: sub_DBBE+8Cj + mov [di], eax + mov dx, 383Eh + mov ax, 3D00h + int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE + ; DS:DX -> ASCIZ filename + ; AL = access mode + ; 0 - read + jnb short loc_DC4C + cmp ax, 2 + jnz short loc_DC70 + mov eax, dword_FA36 + jmp short loc_DC34 +; --------------------------------------------------------------------------- + +loc_DC4C: ; CODE XREF: sub_DBBE+81j + mov bx, ax + mov ax, bp + cmp ah, 6 + jnz short loc_DC60 + cmp byte_FA42, 3 + jnz short loc_DC60 + int 61h ; reserved for user interrupt + jmp short loc_DC62 +; --------------------------------------------------------------------------- + +loc_DC60: ; CODE XREF: sub_DBBE+95j sub_DBBE+9Cj + int 60h + +loc_DC62: ; CODE XREF: sub_DBBE+A0j + mov ax, 3F00h + mov cx, 0FFFFh + int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE + ; BX = file handle, CX = number of bytes to read + ; DS:DX -> buffer + mov ah, 3Eh + int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE + ; BX = file handle + push es + pop ds + +loc_DC70: ; CODE XREF: sub_DBBE+31j sub_DBBE+59j ... + pop di + pop si + pop bp + retf 6 +sub_DBBE endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DC76 proc far ; CODE XREF: sub_A39C+72P sub_A447+67P ... + cmp byte_FA42, 0 + jz short locret_DC90 + mov bx, sp + mov ax, ss:[bx+4] + cmp byte_FA42, 3 + jz short loc_DC8E + int 60h + jmp short locret_DC90 +; --------------------------------------------------------------------------- + +loc_DC8E: ; CODE XREF: sub_DC76+12j + int 61h ; reserved for user interrupt + +locret_DC90: ; CODE XREF: sub_DC76+5j sub_DC76+16j + retf 2 +sub_DC76 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DC94 proc far ; CODE XREF: sub_BC8D+193P + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_2] + mov di, si + shl si, 2 + les si, [si+0A84h] + assume es:nothing + imul di, 48h + push [bp+arg_6] + push [bp+arg_4] + mov ax, [di+3866h] + push ax + shr ax, 1 + push ax + mov di, [di+3868h] + mov ax, [bp+arg_0] + call sub_DD10 + pop di + pop si + pop bp + retf 8 +sub_DC94 endp + +; --------------------------------------------------------------------------- + push bp + mov bp, sp + push si + push di + xor ax, ax + xor dx, dx + mov si, [bp+0Ah] + mov cl, [bp+8] + test cl, 1 + jz short loc_DCDD + mov ax, 0A0h ; ' ' + +loc_DCDD: ; CODE XREF: seg002:09D8j + test cl, 2 + jz short loc_DCE5 + mov dx, 0FA0h + +loc_DCE5: ; CODE XREF: seg002:09E0j + shl si, 2 + les si, [si+0A84h] + add si, ax + mov ax, es + add ax, dx + mov es, ax + assume es:nothing + mov di, 0C8h ; 'È' + push word ptr [bp+0Eh] + push word ptr [bp+0Ch] + push 140h + push 140h + mov ax, [bp+6] + call sub_DD10 + pop di + pop si + pop bp + retf 0Ah +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DD10 proc near ; CODE XREF: sub_DC94+29p seg002:0A06p + +arg_0 = word ptr 2 +arg_2 = word ptr 4 +arg_4 = word ptr 6 +arg_6 = word ptr 8 + + shl ax, 3 + add ax, 0A64h + mov word_1282C, ax + mov bp, sp + mov dx, [bp+arg_6] + shr dx, 3 + mov ax, [bp+arg_4] + shl ax, 6 + add dx, ax + shr ax, 2 + add dx, ax + mov word_12830, dx + mov word_1282E, 0 + +loc_DD38: ; CODE XREF: sub_DD10+82j + push es + push (offset unk_F9F0 - offset unk_F9F0) + push 190h + push es + push si + push [bp+arg_2] + call sub_35B0 + push ds + push di + push si + mov di, word_12830 + add word_12830, 50h ; 'P' + cmp word_12830, 7D00h + jb short loc_DD62 + sub word_12830, 7D00h + +loc_DD62: ; CODE XREF: sub_DD10+4Aj + call sub_DD97 + mov ax, 0A800h + mov es, ax + assume es:nothing + mov ds, ax + assume ds:nothing + mov si, 7D00h + mov cx, [bp+arg_2] + shr cx, 4 + rep movsw + call sub_82C + pop si + pop di + pop ds + assume ds:dseg + pop es + assume es:nothing + add si, [bp+arg_0] + mov ax, si + shr ax, 4 + mov dx, es + add dx, ax + mov es, dx + and si, 0Fh + dec di + jnz short loc_DD38 + retn 8 +sub_DD10 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DD97 proc near ; CODE XREF: sub_DD10:loc_DD62p + call sub_816 + mov ax, 0FFF0h + mov dx, 4A0h + out dx, ax + mov ax, 0FFh + mov dx, 4A2h + out dx, ax + mov ax, 3100h + mov dx, 4A4h + out dx, ax + mov ax, 0 + mov dx, 4ACh + out dx, ax + mov ax, 0Fh + mov dx, 4AEh + out dx, ax + mov bx, word_1282C + mov ax, word_1282E + and ax, 3 + shl ax, 1 + add bx, ax + mov ax, [bx] + mov dx, 4A8h + out dx, ax + inc word_1282E + retn +sub_DD97 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DDD8 proc far ; CODE XREF: sub_A9D6+CAP + ; sub_A9D6+11AP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_4] + push di + push cs + call near ptr sub_DEE0 + mov si, di + shl si, 2 + add si, 0A84h + imul di, 48h + add di, 3852h + push [bp+arg_2] + push [bp+arg_0] + push ds + push di + push ds + push si + call sub_1354 + pop di + pop si + pop bp + retf 6 +sub_DDD8 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DE0A proc far ; CODE XREF: sub_A9D6+DBP + ; sub_A9D6+12BP ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + mov di, si + shl si, 2 + les si, [si+0A84h] + imul di, 48h + push [bp+arg_4] + push [bp+arg_2] + mov ax, [di+3866h] + push ax + shr ax, 1 + push ax + mov di, [di+3868h] + call sub_DE80 + pop di + pop si + pop bp + retf 6 +sub_DE0A endp + +; --------------------------------------------------------------------------- + nop + push bp + mov bp, sp + push si + push di + xor ax, ax + xor dx, dx + mov si, [bp+8] + mov cl, [bp+6] + test cl, 1 + jz short loc_DE51 + mov ax, 0A0h ; ' ' + +loc_DE51: ; CODE XREF: seg002:0B4Cj + test cl, 2 + jz short loc_DE59 + mov dx, 0FA0h + +loc_DE59: ; CODE XREF: seg002:0B54j + shl si, 2 + les si, [si+0A84h] + add si, ax + mov ax, es + add ax, dx + mov es, ax + assume es:nothing + push word ptr [bp+0Ch] + push word ptr [bp+0Ah] + push 140h + push 140h + mov di, 0C8h ; 'È' + call sub_DE80 + pop di + pop si + pop bp + retf 8 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DE80 proc near ; CODE XREF: sub_DE0A+26p seg002:0B77p + +arg_0 = word ptr 2 +arg_2 = word ptr 4 +arg_4 = word ptr 6 +arg_6 = word ptr 8 + + mov bp, sp + +loc_DE82: ; CODE XREF: sub_DE80+35j + push es + push [bp+arg_6] + push [bp+arg_4] + push es + push si + push [bp+arg_2] + call sub_35B0 + pop es + assume es:nothing + inc [bp+arg_4] + cmp [bp+arg_4], 190h + jb short loc_DEA3 + sub [bp+arg_4], 190h + +loc_DEA3: ; CODE XREF: sub_DE80+1Cj + add si, [bp+arg_0] + mov ax, si + shr ax, 4 + mov dx, es + add dx, ax + mov es, dx + and si, 0Fh + dec di + jnz short loc_DE82 + retn 8 +sub_DE80 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DEBA proc far ; CODE XREF: sub_A9D6+D1P + ; sub_A9D6+121P ... + mov bx, sp + push si + push di + mov si, ss:[bx+4] + imul si, 48h + add si, 386Ah + mov di, 2E1Eh + mov ax, ds + mov es, ax + assume es:dseg + mov cx, 0Ch + rep movsd + call far ptr loc_19F0 + pop di + pop si + retf 2 +sub_DEBA endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DEE0 proc far ; CODE XREF: sub_A9D6+E2P + ; sub_A9D6+132P ... + mov bx, sp + mov bx, ss:[bx+4] + mov ax, bx + shl bx, 2 + add bx, 0A84h + cmp dword ptr [bx], 0 + jz short locret_DF0E + imul ax, 48h + add ax, 3852h + push ds + push ax + push word ptr [bx+2] + push word ptr [bx] + mov dword ptr [bx], 0 + call sub_12FC + +locret_DF0E: ; CODE XREF: sub_DEE0+13j + retf 2 +sub_DEE0 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_DF12 proc far ; CODE XREF: _main+1AP + +arg_0 = dword ptr 6 + + push bp + mov bp, sp + push word_F9CC + call sub_22B2 + or ax, ax + jz short loc_DF27 + mov ax, 1 + pop bp + retf +; --------------------------------------------------------------------------- + +loc_DF27: ; CODE XREF: sub_DF12+Ej + call sub_1942 + mov dx, 0A6h ; '¦' + mov al, 1 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + mov dx, 0A6h ; '¦' + mov al, 0 + out dx, al ; Interrupt Controller #2, 8259A + call sub_1216 + 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_F566, 2000h + call sub_2162 + call sub_196E + call sub_213C + call sub_2130 + call sub_84C + call sub_2BAC + les bx, [bp+arg_0] + assume es:nothing + cmp byte ptr es:[bx], 0 + jz short loc_DF82 + push word ptr [bp+arg_0+2] + push bx + call sub_37B8 + +loc_DF82: ; CODE XREF: sub_DF12+65j + push 400h + call sub_338E + xor ax, ax + pop bp + retf +sub_DF12 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_DF8E proc near ; CODE XREF: sub_E094+1p + xor ax, ax + mov word_12A72, ax + mov word_11DFA, ax +sub_DF8E endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + + +sub_DF96 proc far ; CODE XREF: sub_E094+Cp + xor ax, ax + mov es, ax + assume es:seg000 + mov ah, es:byte_531 + test ah, 4 + jz short loc_DFA9 + or byte ptr word_12A72, 1 + +loc_DFA9: ; CODE XREF: sub_DF96+Cj + test ah, 20h + jz short loc_DFB3 + or byte ptr word_12A72, 2 + +loc_DFB3: ; CODE XREF: sub_DF96+16j + test ah, 8 + jz short loc_DFBD + or byte ptr word_12A72, 4 + +loc_DFBD: ; CODE XREF: sub_DF96+20j + test ah, 10h + jz short loc_DFC7 + or byte ptr word_12A72, 8 + +loc_DFC7: ; CODE XREF: sub_DF96+2Aj + mov ah, es:byte_533 + test ah, 1 + jz short loc_DFD6 + or byte ptr word_12A72, 8 + +loc_DFD6: ; CODE XREF: sub_DF96+39j + test ah, 4 + jz short loc_DFE0 + or byte ptr word_12A72+1, 4 + +loc_DFE0: ; CODE XREF: sub_DF96+43j + test ah, 8 + jz short loc_DFEA + or byte ptr word_12A72, 2 + +loc_DFEA: ; CODE XREF: sub_DF96+4Dj + test ah, 10h + jz short loc_DFF4 + or byte ptr word_12A72+1, 8 + +loc_DFF4: ; CODE XREF: sub_DF96+57j + mov ah, es:byte_532 + test ah, 40h + jz short loc_E003 + or byte ptr word_12A72, 4 + +loc_E003: ; CODE XREF: sub_DF96+66j + test ah, 4 + jz short loc_E00D + or byte ptr word_12A72+1, 1 + +loc_E00D: ; CODE XREF: sub_DF96+70j + test ah, 8 + jz short loc_E017 + or byte ptr word_12A72, 1 + +loc_E017: ; CODE XREF: sub_DF96+7Aj + test ah, 10h + jz short loc_E021 + or byte ptr word_12A72+1, 2 + +loc_E021: ; CODE XREF: sub_DF96+84j + mov ah, es:byte_52F + test ah, 2 + jz short loc_E030 + or byte ptr word_12A72, 20h + +loc_E030: ; CODE XREF: sub_DF96+93j + test ah, 4 + jz short loc_E03A + or byte ptr word_12A72, 10h + +loc_E03A: ; CODE XREF: sub_DF96+9Dj + mov ah, es:byte_52C + test ah, 1 + jz short loc_E049 + or byte ptr word_12A72+1, 40h + +loc_E049: ; CODE XREF: sub_DF96+ACj + mov ah, es:byte_52A + test ah, 1 + jz short loc_E058 + or byte ptr word_12A72+1, 10h + +loc_E058: ; CODE XREF: sub_DF96+BBj + mov ah, es:byte_52D + test ah, 10h + jz short loc_E067 + or byte ptr word_12A72+1, 20h + +loc_E067: ; CODE XREF: sub_DF96+CAj + mov ah, es:byte_530 + test ah, 10h + jz short loc_E076 + or byte ptr word_12A72, 20h + +loc_E076: ; CODE XREF: sub_DF96+D9j + 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_12A74, al + cmp word_F524, 0 + jz short loc_E08F + call sub_2CBA + or word_12A72, ax + +loc_E08F: ; CODE XREF: sub_DF96+EEj + mov ax, word_12A72 + retf +sub_DF96 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E094 proc far ; CODE XREF: _main:loc_B00EP + ; sub_B806:loc_B949P ... + push cs + call sub_DF8E + mov cx, 400h + +loc_E09B: ; CODE XREF: sub_E094+9j + out 5Fh, al + loop loc_E09B + push cs + call near ptr sub_DF96 + retf +sub_E094 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0A4 proc far ; CODE XREF: sub_B36C+7CP sub_B489+7CP + +arg_0 = word ptr 6 + + push bp + mov bp, sp + +loc_E0A7: ; CODE XREF: sub_E0A4+9j + push cs + call near ptr sub_E094 + or ax, ax + jnz short loc_E0A7 + mov bp, [bp+arg_0] + +loc_E0B2: ; CODE XREF: sub_E0A4+21j sub_E0A4+24j + push cs + call near ptr sub_E094 + or ax, ax + jnz short loc_E0CA + mov ax, word_11E2E + +loc_E0BD: ; CODE XREF: sub_E0A4+1Dj + cmp ax, word_11E2E + jz short loc_E0BD + or bp, bp + jz short loc_E0B2 + dec bp + jnz short loc_E0B2 + +loc_E0CA: ; CODE XREF: sub_E0A4+14j + pop bp + retf 2 +sub_E0A4 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0CE proc far ; CODE XREF: sub_E0F1+5p + push bp + mov bp, sp + cmp byte_FA42, 0 + jnz short loc_E0DD + mov ax, 0FFFFh + pop bp + retf +; --------------------------------------------------------------------------- + +loc_E0DD: ; CODE XREF: sub_E0CE+8j + mov ah, 5 + cmp byte_FA42, 3 + jz short loc_E0EA + 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_E0EF +; --------------------------------------------------------------------------- + +loc_E0EA: ; CODE XREF: sub_E0CE+16j + mov dx, 0C0h ; 'À' + int 61h ; reserved for user interrupt + +loc_E0EF: ; CODE XREF: sub_E0CE+1Aj + pop bp + retf +sub_E0CE endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E0F1 proc far ; CODE XREF: sub_B806+FAP + +arg_0 = word ptr 6 +arg_2 = word ptr 8 + + push bp + mov bp, sp + push si + +loc_E0F5: ; CODE XREF: sub_E0F1+1Bj + push cs + call near ptr sub_E0CE + mov si, ax + or si, si + jge short loc_E109 + push [bp+arg_0] + nop + push cs + call near ptr sub_E15E + jmp short loc_E10E +; --------------------------------------------------------------------------- + +loc_E109: ; CODE XREF: sub_E0F1+Cj + cmp si, [bp+arg_2] + jl short loc_E0F5 + +loc_E10E: ; CODE XREF: sub_E0F1+16j + pop si + pop bp + retf 4 +sub_E0F1 endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E114 proc far ; CODE XREF: sub_A5F6+46P + ; sub_A5F6:loc_A695P ... + +arg_0 = word ptr 6 +arg_2 = word ptr 8 +arg_4 = word ptr 0Ah + + push bp + mov bp, sp + push si + push di + mov si, [bp+arg_0] + shl si, 4 + add si, 3A96h + mov di, [bp+arg_4] + sar di, 3 + add di, [si+6] + mov ax, [si+8] + mov bx, ax + shl ax, 2 + add ax, 50h ; 'P' + mov dx, ax + mov ax, [bp+arg_2] + mov cx, ax + shl ax, 2 + add ax, cx + add ax, 0A800h + mov es, ax + assume es:nothing + push ds + mov ds, word ptr [si+0Ch] + xor si, si + +loc_E14E: ; CODE XREF: sub_E114+41j + mov cx, bx + rep movsd + sub di, dx + jns short loc_E14E + pop ds + pop di + pop si + pop bp + retf 6 +sub_E114 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_E15E proc far ; CODE XREF: _main+10AP sub_B14A+55P ... + mov bx, sp + mov bx, ss:[bx+4] + mov word_11E2E, 0 + +loc_E16A: ; CODE XREF: sub_E15E+10j + cmp word_11E2E, bx + jb short loc_E16A + retf 2 +sub_E15E endp + +; --------------------------------------------------------------------------- + db 0 + +; =============== S U B R O U T I N E ======================================= + + +sub_E174 proc near ; CODE XREF: sub_BC0F+2CP sub_BC0F+39P ... + mov byte_FA94, 1 + nop +sub_E174 endp ; sp-analysis failed + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E17A proc far ; CODE XREF: sub_BC0F+60P + +arg_0 = word ptr 6 +arg_2 = dword ptr 8 +arg_6 = word ptr 0Ch + + push bp + mov bp, sp + push si + push di + mov di, [bp+arg_6] + push di + nop + push cs + call near ptr sub_E294 + shl di, 4 + add di, 3A96h + push large [bp+arg_2] + call sub_A58 + push ds + push di + push 10h + call sub_9A4 + mov ax, [di] + mov dx, ax + cmp byte ptr [di+0Bh], 0 + jz short loc_E1B6 + shl ax, 2 + cmp byte ptr [di+0Bh], 2 + jz short loc_E1B6 + add ax, dx + +loc_E1B6: ; CODE XREF: sub_E17A+2Fj sub_E17A+38j + mul [bp+arg_0] + movzx eax, ax + push eax + push 1 + call sub_A94 + call sub_E1DA + call sub_938 + mov byte_FA94, 0 + pop di + pop si + pop bp + retf 8 +sub_E17A endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E1DA proc near ; CODE XREF: sub_E17A+4Cp sub_E238+3Fp + mov al, [di+0Bh] + or al, al + jz short loc_E20F + cmp al, 2 + jz short loc_E1EC + cmp byte_FA94, 0 + jnz short loc_E202 + +loc_E1EC: ; CODE XREF: sub_E1DA+9j + push word ptr [di] + call sub_2322 + mov [di+0Ch], ax + push ax + push 0 + push word ptr [di] + call sub_9A4 + jmp short loc_E20F +; --------------------------------------------------------------------------- + +loc_E202: ; CODE XREF: sub_E1DA+10j + movzx eax, word ptr [di] + push eax + push 1 + call sub_A94 + +loc_E20F: ; CODE XREF: sub_E1DA+5j sub_E1DA+26j + cmp byte ptr [di+0Bh], 2 + jz short locret_E231 + mov ax, [di] + shl ax, 2 + push ax + call sub_2322 + mov [di+0Eh], ax + push ax + push 0 + mov ax, [di] + shl ax, 2 + push ax + call sub_9A4 + +locret_E231: ; CODE XREF: sub_E1DA+39j + retn +sub_E1DA endp + +; --------------------------------------------------------------------------- + mov byte_FA94, 1 + nop + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E238 proc far ; CODE XREF: sub_BC0F+9P sub_BC0F+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_A58 + mov di, [bp+arg_4] + shl di, 4 + add di, 3A96h + push ds + push di + push 10h + call sub_9A4 + mov si, di + mov bp, [bp+arg_4] + mov al, [si+0Ah] + mov byte_12E76, al + push ds + pop es + assume es:dseg + +loc_E266: ; CODE XREF: sub_E238+4Aj + push bp + push cs + call near ptr sub_E294 + mov cx, 3 + rep movsd + sub si, 0Ch + sub di, 0Ch + call sub_E1DA + inc bp + add di, 10h + dec byte_12E76 + jnz short loc_E266 + call sub_938 + mov byte_FA94, 0 + pop di + pop si + pop bp + retf 6 +sub_E238 endp + + +; =============== S U B R O U T I N E ======================================= + + +sub_E294 proc far ; CODE XREF: sub_E17A+Bp sub_E238+30p ... + mov bx, sp + push di + mov di, ss:[bx+4] + shl di, 4 + add di, 3AA2h + cmp word ptr [di], 0 + jz short loc_E2B2 + push word ptr [di] + call sub_2426 + mov word ptr [di], 0 + +loc_E2B2: ; CODE XREF: sub_E294+11j + add di, 2 + cmp word ptr [di], 0 + jz short loc_E2C5 + push word ptr [di] + call sub_2426 + mov word ptr [di], 0 + +loc_E2C5: ; CODE XREF: sub_E294+24j + pop di + retf 2 +sub_E294 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E2CA proc far ; CODE XREF: sub_BC83+3P sub_C490+2AP + push si + mov si, 3Fh ; '?' + +loc_E2CE: ; CODE XREF: sub_E2CA+Aj + push si + push cs + call near ptr sub_E294 + dec si + jge short loc_E2CE + pop si + retf +sub_E2CA endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: bp-based frame + +sub_E2D8 proc far ; CODE XREF: sub_A5F6+1DP sub_A5F6+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 + call sub_E354 + 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_E30F + inc ax + +loc_E30F: ; CODE XREF: sub_E2D8+34j + mov word_12EFE, 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_E323: ; CODE XREF: sub_E2D8+6Fj + mov cx, word_12EFE + +loc_E327: ; CODE XREF: sub_E2D8+6Aj + or di, di + js short loc_E33F + cmp di, 7D00h + jnb short loc_E33F + 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 es:[di], dx + +loc_E33F: ; CODE XREF: sub_E2D8+51j sub_E2D8+57j + add di, 2 + loop loc_E327 + add di, bp + dec bx + jns short loc_E323 + call sub_82C + pop di + pop bp + retf 8 +sub_E2D8 endp + +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_E354 proc near ; CODE XREF: sub_E2D8+4p + push es + push 0 + pop es + assume es:seg000 + pushf + cli + mov al, 80h ; '€' + out 7Ch, al + mov es:byte_495, 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_E354 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 + nop + +; =============== 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, 9C95h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_E3C3 + 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_E3DD + +loc_E3C3: ; 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_E3DD: ; 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_E403 db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9C8Do + db 0Dh dup(0), 2, 0, 2, 0, 9Bh, 9Ch + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 0B5h, 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, 0A2h, 63h + 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, 9D07h + call ___InitExceptBlocks + mov ax, word ptr [bp+arg_0] + or ax, word ptr [bp+arg_0+2] + jnz short loc_E4AC + 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_E520 + +loc_E4AC: ; 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_E510 + 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_E4E2 + push word ptr [bp+src+2] + push word ptr [bp+src] ; s + call _strlen + pop cx + pop cx + jmp short loc_E4E4 +; --------------------------------------------------------------------------- + +loc_E4E2: ; CODE XREF: string::string(char *)+54j + xor ax, ax + +loc_E4E4: ; 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_E510: ; 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_E520: ; 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, 95h, 2 + dw seg seg003 +aTstringref db 'TStringRef *',0 +byte_E55D db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9CF1o + db 0Dh dup(0), 2, 0, 2, 0, 1Dh, 9Dh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLengther db 'string::lengtherror',0 + dd byte_E5ED + db 2 dup(0), 3, 0Dh dup(0) +byte_E5AB db 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 2Eh, 0, 3Ah + ; DATA XREF: seg000:9CEDo + db 0Dh dup(0), 2, 0, 2, 0, 6Ah, 9Dh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 5Dh, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_E5ED db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0207o + db 0Dh dup(0), 1, 0, 1, 0, 0A2h, 63h + 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, 0ACh, 6 + dw seg seg003 + db 5, 0, 42h, 0, 54h, 53h, 74h, 72h, 69h, 6Eh, 67h, 52h + db 65h, 66h, 2 dup(0), 0DBh, 2 + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0), 2, 0, 3, 0, 1Ah, 0, 2 dup(0FFh) + db 1, 0, 26h, 0, 2Ah, 0Dh dup(0), 54h, 52h, 65h, 66h, 65h + db 72h, 65h, 6Eh, 63h, 65h, 0Ah dup(0) + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +; int __cdecl __far string___string(void (*driver)(void), char) +@string@$bdtr$qv proc far ; CODE XREF: string::contains(char *)+45P + ; xmsg::~xmsg(void)+3FP ... + +var_1E = word ptr -1Eh +driver = dword ptr 6 +arg_4 = byte ptr 0Ah + + push bp + mov bp, sp + sub sp, 1Eh + push si + push di + mov ax, seg seg000 + mov bx, 9DC0h + 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_E711 + les bx, [bp+driver] + les bx, es:[bx] + dec word ptr es:[bx] + mov ax, es:[bx] + or ax, ax + jnz short loc_E6FE + 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_EA3C + add sp, 6 + +loc_E6FE: ; CODE XREF: string::~string(void)+3Bj + test [bp+arg_4], 1 + jz short loc_E711 + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_E711: ; 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, 9DF4h + 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_E74C + mov ax, 1 + jmp short loc_E74E +; --------------------------------------------------------------------------- + +loc_E74C: ; CODE XREF: string::assert_element(uint)+26j + xor ax, ax + +loc_E74E: ; CODE XREF: string::assert_element(uint)+2Bj + or ax, ax + jnz short loc_E7CF + 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, 9EE6h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 2D44h + 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, 0BFEh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_E7CF: ; 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, 9E38h + 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_E80A + mov ax, 1 + jmp short loc_E80C +; --------------------------------------------------------------------------- + +loc_E80A: ; CODE XREF: string::assert_index(uint)+26j + xor ax, ax + +loc_E80C: ; CODE XREF: string::assert_index(uint)+2Bj + or ax, ax + jnz short loc_E88D + 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, 9EE6h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 2D62h + 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, 0BFEh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_E88D: ; 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, 9E7Ch + 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_E8C5 + mov ax, 1 + jmp short loc_E8C7 +; --------------------------------------------------------------------------- + +loc_E8C5: ; CODE XREF: TSubString::assert_element(uint)+23j + xor ax, ax + +loc_E8C7: ; CODE XREF: TSubString::assert_element(uint)+28j + or ax, ax + jnz short loc_E948 + 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, 9EE6h + push ax ; int + xor ax, ax + push ax ; int + push ax ; int + mov [bp+var_1A], 6 + push ds + mov ax, 2D80h + 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, 0BFEh + push ax ; int + call @_ThrowException$qnvt1t1t1uiuiuinuc ; _ThrowException(void *,void *,void *,void *,uint,uint,uint,uchar *) + add sp, 1Ah + +loc_E948: ; 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_E97A + 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_E97A + jmp loc_EA20 +; --------------------------------------------------------------------------- + +loc_E97A: ; 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_EBD4 + pop cx + les bx, [bp+arg_0] + mov es:[bx+8], ax + mov ax, es:[bx+8] + inc ax + push ax + call sub_4A3E + 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_E9D4 + push ds + mov ax, 2A9Ah + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_E9D4: ; 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_EA20: ; 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_EA3C(void (*driver)(void), char) +sub_EA3C 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, 9E96h + 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_EA8E + les bx, [bp+driver] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_490B + pop cx + pop cx + test [bp+arg_4], 1 + jz short loc_EA8E + push word ptr [bp+driver+2] + push word ptr [bp+driver] ; driver + call _registerbgidriver + pop cx + pop cx + +loc_EA8E: ; CODE XREF: sub_EA3C+2Bj sub_EA3C+43j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_EA3C 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, 9EA8h + 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_EBD4 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_11D22 + jbe short loc_EAFC + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4BA5 + 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_EAFC: ; CODE XREF: seg003:0743j + 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, 9EB2h + call ___InitExceptBlocks + les bx, [bp+6] + push word ptr es:[bx+6] + nop + push cs + call near ptr sub_EBD4 + pop cx + mov [bp-20h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-20h] + cmp ax, word_11D22 + jbe short loc_EB64 + mov ax, [bp-20h] + inc ax + push ax + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_4BA5 + 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_EB64: ; CODE XREF: seg003:07ABj + 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_EB72 proc far ; CODE XREF: seg003:08C3p + +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, 9EC4h + 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_4BA5 + 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_EBC6 + push ds + mov ax, 2A9Ah + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_EBC6: ; CODE XREF: sub_EB72+46j + push [bp+var_1E] + call ___ExitExceptBlocks + pop di + pop si + mov sp, bp + pop bp + retf +sub_EB72 endp + + +; =============== S U B R O U T I N E ======================================= + +; Attributes: library function bp-based frame + +sub_EBD4 proc far ; CODE XREF: TStringRef::TStringRef(char *,uint,char *,uint,uint)+46p + ; seg003:072Ep ... + +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, 9ECEh + call ___InitExceptBlocks + mov ax, word_11D1E + mov [bp+var_20], ax + mov cx, word_11D20 + 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_EBD4 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, 9EE0h + 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_EBD4 + pop cx + mov [bp-26h], ax + les bx, [bp+6] + mov ax, es:[bx+8] + cmp ax, [bp-26h] + jnb short loc_EC5B + push word ptr [bp-26h] + push word ptr [bp+8] + push bx + push cs + call near ptr sub_EB72 + add sp, 6 + jmp short loc_ECCA +; --------------------------------------------------------------------------- + +loc_EC5B: ; CODE XREF: seg003:08B9j + les bx, [bp+6] + mov ax, es:[bx+8] + sub ax, [bp-26h] + cmp ax, word_11D22 + jbe short loc_ECCA + test byte ptr es:[bx+0Ah], 1 + jnz short loc_ECCA + mov ax, [bp-26h] + inc ax + push ax + call sub_4A3E + 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_EC9C + push ds + mov ax, 2A9Ah + push ax + call @xalloc@raise$qv ; xalloc::raise(void) + pop cx + pop cx + +loc_EC9C: ; CODE XREF: seg003:08FEj + cmp word ptr [bp+0Ah], 0 + jz short loc_ECBE + 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_ECBE: ; CODE XREF: seg003:0910j + les bx, [bp+6] + mov ax, [bp-26h] + mov es:[bx+8], ax + jmp short loc_ECDB +; --------------------------------------------------------------------------- + +loc_ECCA: ; CODE XREF: seg003:08C9j seg003:08D9j ... + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + mov [bp-20h], dx + mov [bp-22h], ax + +loc_ECDB: ; CODE XREF: seg003:0938j + les bx, [bp+6] + mov dx, es:[bx+4] + mov ax, es:[bx+2] + cmp dx, [bp-20h] + jnz short loc_ECF8 + cmp ax, [bp-22h] + jnz short loc_ECF8 + mov ax, [bp+12h] + cmp ax, [bp+0Ch] + jz short loc_ED2A + +loc_ECF8: ; CODE XREF: seg003:0959j seg003:095Ej + 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_ED2A: ; CODE XREF: seg003:0966j + cmp word ptr [bp+12h], 0 + jz short loc_ED6E + mov ax, [bp+0Eh] + or ax, [bp+10h] + jz short loc_ED55 + 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_ED6E +; --------------------------------------------------------------------------- + +loc_ED55: ; CODE XREF: seg003:09A6j + 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_ED6E: ; CODE XREF: seg003:099Ej seg003:09C3j + 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_EDA0 + cmp ax, [bp-22h] + jz short loc_EDC3 + +loc_EDA0: ; CODE XREF: seg003:0A09j + les bx, [bp+6] + push word ptr es:[bx+4] + push word ptr es:[bx+2] + call sub_490B + 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_EDC3: ; CODE XREF: seg003:0A0Ej + 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_11D18 + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D18, 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_11D1A + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D1A, 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_11D1C + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D1C, 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_11D1E + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D1E, 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_11D20 + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D20, ax + cmp word_11D20, 0 + jnz short loc_EE66 + mov word_11D20, 1 + +loc_EE66: ; CODE XREF: seg003:0ACEj + 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_11D22 + mov [bp-2], ax + mov ax, [bp+6] + mov word_11D22, ax + mov ax, [bp-2] + pop di + pop si + mov sp, bp + pop bp + retf +; --------------------------------------------------------------------------- +byte_EE8C db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9EBCo seg000:9ED8o + db 0Dh dup(0), 2, 0, 2, 0, 1Bh, 9Fh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringLength_0 db 'string::lengtherror',0 + dd byte_EF1C + dw 0 + db 3, 0Dh dup(0), 6, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0 + db 2Eh, 0, 3Ah, 0Dh dup(0), 2, 0, 2, 0, 68h, 9Fh + dw seg seg000 + db 5, 0, 3Eh, 0, 78h, 61h, 2 dup(6Ch), 6Fh, 63h, 2 dup(0) + db 8Ch, 0Bh + dw seg seg003 + db 2 dup(0), 3, 0Dh dup(0) +byte_EF1C db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 3, 0, 2Ch, 0, 30h + ; DATA XREF: seg003:0B36o seg003:0C38o + db 0Dh dup(0), 1, 0, 1, 0, 0A2h, 63h + 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, 9, 3 + dw seg seg003 + db 5, 0, 36h, 0, 73h, 74h, 72h, 69h, 6Eh, 67h, 0Eh dup(0) +byte_EF8E db 4, 0, 3, 0, 26h, 0, 2 dup(0FFh), 7, 0, 3Ah, 0, 46h + ; DATA XREF: seg000:9EA0o + db 0Dh dup(0), 2, 0, 2, 0, 0B5h, 9Fh + dw seg seg000 + db 5, 0, 4Ah, 0 +aStringOutofran db 'string::outofrange',0 + db 0 + dd byte_EF1C + db 2 dup(0), 3, 11h dup(0) +seg003 ends + +; =========================================================================== + +; Segment type: Pure data +dseg segment dword public 'DATA' use16 + assume cs:dseg +word_EFE0 dw 0 ; DATA XREF: sub_554+7r sub_483A+20r ... +word_EFE2 dw 0 ; DATA XREF: sub_554+1Dw sub_554+32w ... +off_EFE4 dw offset sub_554E ; DATA XREF: sub_554+20w sub_48AB+Cr ... +off_EFE6 dw offset sub_4C4C ; DATA XREF: sub_554+Br sub_48AB+2r ... +word_EFE8 dw 4320h ; DATA XREF: sub_554+26r sub_47D7+24r ... +aHeck db 'HECK',0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 42h ; B + db 6Fh ; o + db 72h ; r + db 6Ch ; l + db 61h ; a + db 6Eh ; n + db 64h ; d + db 20h + db 43h ; C + db 2Bh ; + + db 2Bh ; + + db 20h + db 2Dh ; - + db 20h + db 43h ; C + db 6Fh ; o + db 70h ; p + db 79h ; y + db 72h ; r + db 69h ; i + db 67h ; g + db 68h ; h + db 74h ; t + db 20h + db 31h ; 1 + db 39h ; 9 + db 39h ; 9 + db 33h ; 3 + db 20h + db 42h ; B + db 6Fh ; o + db 72h ; r + db 6Ch ; l + db 61h ; a + db 6Eh ; n + db 64h ; d + db 20h + db 49h ; I + db 6Eh ; n + db 74h ; t + db 6Ch ; l + db 2Eh ; . + db 0 + db 44h ; D + db 69h ; i + db 76h ; v + db 69h ; i + db 64h ; d + db 65h ; e + db 20h + db 65h ; e + db 72h ; r + db 72h ; r + db 6Fh ; o + db 72h ; r + db 0Dh + db 0Ah + db 0 +dword_F03A dd 0 ; DATA XREF: sub_178:loc_17Ew + ; __restorezero+4r ... +dword_F03E dd 0 ; DATA XREF: sub_178+13w + ; __restorezero+Fr ... +dword_F042 dd 0 ; DATA XREF: sub_178+20w + ; __restorezero+1Ar ... +dword_F046 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_F04E dw 0 ; DATA XREF: start+12Fr +; char **envp +envp dw 0 ; DATA XREF: start+12Br seg000:9C84w +word_F052 dw 0 ; DATA XREF: start+127r seg000:9C7Ew +word_F054 dw 0 ; DATA XREF: start+46w +word_F056 dw 0 ; DATA XREF: start+1Dw start+28r ... +word_F058 dw 0 ; DATA XREF: start+55w seg000:9C39r +; unsigned int segx +segx dw 0 ; DATA XREF: start+19w start+8Fr ... +word_F05C dw 0 ; DATA XREF: start+16w start+C7r ... +word_F05E dw 0 ; DATA XREF: __IOERROR:loc_3FF6w + ; seg000:4F3Ew ... + db 0FFh + db 0FFh + db 0DEh ; Þ + db 51h ; Q +word_F064 dw 0 ; DATA XREF: __brk+9r __sbrk+45r +word_F066 dw 0 ; DATA XREF: start+87w __brk+5r ... +word_F068 dw 0 ; DATA XREF: sub_4C4C+48w __sbrk+12r ... +word_F06A dw 0 ; DATA XREF: start+8Bw sub_4C4C+44w ... +word_F06C dw 0 ; DATA XREF: sub_4C4C+58w __brk+1Cr ... +word_F06E dw 0 ; DATA XREF: start+21w start+F5w ... + db 0 +byte_F071 db 0 ; DATA XREF: sub_A968+3r sub_A968+11w ... +byte_F072 db 0 ; DATA XREF: sub_A9D6+1CDw + ; sub_A9D6+1D9w ... +byte_F073 db 1 ; DATA XREF: sub_A9D6+Bw + dd unk_F0E7 + dd unk_F0FA + dd unk_F119 + dd unk_F136 + dd unk_F147 + dd aVcvnvrvCVsvV ; "‚c‚n‚r‚É–ß‚è‚Ü‚·" + dd unk_F16F + dd unk_F19E + dd unk_F1CD + dd unk_F1FC + dd unk_F22B + dd unk_F262 + dd unk_F291 + dd unk_F2A4 + dd unk_F2C7 + dd unk_F2E8 + dd unk_F2FB + dd unk_F318 + dd aUgtevSVvpPkvBa ; "“G’e‚Ì‘½‚¢êŠ‚ÅA‚í‚´‚ƈ——Ž‚¿iƒXƒ"... + dd unk_F378 + dd unk_F3A5 + dd unk_F3C8 + dd unk_F3DF + dd unk_F3FE + dd unk_F41D + dd unk_F43A +byte_F0DC db 0 ; DATA XREF: sub_A9D6+4r sub_A9D6+4Bw ... +byte_F0DD db 0 ; DATA XREF: sub_ABCF+4r sub_ABCF+46w ... +; char aMain[] +aMain db 'main',0 ; DATA XREF: sub_A39C+8Bo sub_A39C+8Fo ... +; char path[] +path db 'deb',0 ; DATA XREF: sub_A39C+98o sub_A39C+9Co +unk_F0E7 db 83h ; ƒ ; DATA XREF: dseg:0094o + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F0FA db 83h ; ƒ ; DATA XREF: dseg:0098o + db 47h ; G + db 83h ; ƒ + db 4Ch ; L + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 67h ; g + db 83h ; ƒ + db 89h ; ‰ + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 65h ; e + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 57h ; W + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F119 db 8Ch ; Œ ; DATA XREF: dseg:009Co + db 0BBh ; » + db 8Dh ; + db 0DDh ; Ý + db 82h ; ‚ + db 0CCh ; Ì + db 83h ; ƒ + db 6Eh ; n + db 83h ; ƒ + db 43h ; C + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 52h ; R + db 83h ; ƒ + db 41h ; A + db 82h ; ‚ + db 0F0h ; ð + db 95h ; • + db 5Ch ; \ + db 8Eh ; Ž + db 0A6h ; ¦ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F136 db 89h ; ‰ ; DATA XREF: dseg:00A0o + db 0B9h ; ¹ + db 8Ah ; Š + db 79h ; y + db 8Eh ; Ž + db 0BAh ; º + db 82h ; ‚ + db 0C9h ; É + db 93h ; “ + db 0FCh ; ü + db 82h ; ‚ + db 0E8h ; è + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F147 db 8Ah ; Š ; DATA XREF: dseg:00A4o + db 65h ; e + db 8Eh ; Ž + db 0EDh ; í + db 90h ; + db 0DDh ; Ý + db 92h ; ’ + db 0E8h ; è + db 82h ; ‚ + db 0F0h ; ð + db 95h ; • + db 0CFh ; Ï + db 8Dh ; + db 58h ; X + db 8Fh ; + db 6Fh ; o + db 97h ; — + db 88h ; ˆ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +aVcvnvrvCVsvV db '‚c‚n‚r‚É–ß‚è‚Ü‚·',0 ; DATA XREF: dseg:00A8o +unk_F16F db 93h ; “ ; DATA XREF: dseg:00ACo + db 0EFh ; ï + db 88h ; ˆ + db 0D5h ; Õ + db 93h ; “ + db 78h ; x + db 82h ; ‚ + db 0F0h ; ð + db 82h ; ‚ + db 0E2h ; â + db 82h ; ‚ + db 0B3h ; ³ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0ADh ; ­ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 40h ; @ + db 20h + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 69h ; i + db 8Fh ; + db 89h ; ‰ + db 90h ; + db 53h ; S + db 8Eh ; Ž + db 0D2h ; Ò + db 8Ch ; Œ + db 0FCh ; ü + db 82h ; ‚ + db 0AFh ; ¯ + db 81h ; + db 6Ah ; j + db 81h ; + db 40h ; @ + db 20h + db 0 +unk_F19E db 93h ; “ ; DATA XREF: dseg:00B0o + db 0EFh ; ï + db 88h ; ˆ + db 0D5h ; Õ + db 93h ; “ + db 78h ; x + db 82h ; ‚ + db 0F0h ; ð + db 95h ; • + db 57h ; W + db 8Fh ; + db 80h ; € + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 69h ; i + db 88h ; ˆ + db 0EAh ; ê + db 94h ; ” + db 0CAh ; Ê + db 8Ch ; Œ + db 0FCh ; ü + db 82h ; ‚ + db 0AFh ; ¯ + db 81h ; + db 6Ah ; j + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 0 +unk_F1CD db 93h ; “ ; DATA XREF: dseg:00B4o + db 0EFh ; ï + db 88h ; ˆ + db 0D5h ; Õ + db 93h ; “ + db 78h ; x + db 82h ; ‚ + db 0F0h ; ð + db 93h ; “ + db 0EFh ; ï + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0ADh ; ­ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 69h ; i + db 83h ; ƒ + db 41h ; A + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 50h ; P + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 5Fh ; _ + db 81h ; + db 5Bh ; [ + db 8Ch ; Œ + db 0FCh ; ü + db 82h ; ‚ + db 0AFh ; ¯ + db 81h ; + db 6Ah ; j + db 0 +unk_F1FC db 93h ; “ ; DATA XREF: dseg:00B8o + db 0EFh ; ï + db 88h ; ˆ + db 0D5h ; Õ + db 93h ; “ + db 78h ; x + db 82h ; ‚ + db 0F0h ; ð + db 94h ; ” + db 0F1h ; ñ + db 8Fh ; + db 0EDh ; í + db 82h ; ‚ + db 0C9h ; É + db 93h ; “ + db 0EFh ; ï + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0ADh ; ­ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 40h ; @ + db 81h ; + db 69h ; i + db 83h ; ƒ + db 56h ; V + db 83h ; ƒ + db 85h ; … + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 5Eh ; ^ + db 81h ; + db 5Bh ; [ + db 8Ch ; Œ + db 0FCh ; ü + db 82h ; ‚ + db 0AFh ; ¯ + db 81h ; + db 6Ah ; j + db 0 +unk_F22B db 83h ; ƒ ; DATA XREF: dseg:00BCo + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 5Eh ; ^ + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 67h ; g + db 8Eh ; Ž + db 9Eh ; ž + db 82h ; ‚ + db 0CCh ; Ì + db 90h ; + db 6Ch ; l + db 90h ; + db 94h ; ” + db 82h ; ‚ + db 0F0h ; ð + db 95h ; • + db 0CFh ; Ï + db 8Dh ; + db 58h ; X + db 8Fh ; + db 6Fh ; o + db 97h ; — + db 88h ; ˆ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 8Fh ; + db 9Ch ; œ + db 82h ; ‚ + db 0ADh ; ­ + db 83h ; ƒ + db 47h ; G + db 83h ; ƒ + db 4Ch ; L + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 67h ; g + db 83h ; ƒ + db 89h ; ‰ + db 81h ; + db 6Ah ; j + db 0 +unk_F262 db 83h ; ƒ ; DATA XREF: dseg:00C0o + db 7Bh ; { + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0CCh ; Ì + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 89h ; ‰ + db 0F1h ; ñ + db 90h ; + db 94h ; ” + db 82h ; ‚ + db 0F0h ; ð + db 95h ; • + db 0CFh ; Ï + db 8Dh ; + db 58h ; X + db 8Fh ; + db 6Fh ; o + db 97h ; — + db 88h ; ˆ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 8Fh ; + db 9Ch ; œ + db 82h ; ‚ + db 0ADh ; ­ + db 83h ; ƒ + db 47h ; G + db 83h ; ƒ + db 4Ch ; L + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 67h ; g + db 83h ; ƒ + db 89h ; ‰ + db 81h ; + db 6Ah ; j + db 0 +unk_F291 db 82h ; ‚ ; DATA XREF: dseg:00C4o + db 61h ; a + db 82h ; ‚ + db 66h ; f + db 82h ; ‚ + db 6Ch ; l + db 82h ; ‚ + db 0CDh ; Í + db 97h ; — + db 0ACh ; ¬ + db 82h ; ‚ + db 0EAh ; ê + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F1h ; ñ + db 0 +unk_F2A4 db 82h ; ‚ ; DATA XREF: dseg:00C8o + db 61h ; a + db 82h ; ‚ + db 66h ; f + db 82h ; ‚ + db 6Ch ; l + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 51h ; Q + db 82h ; ‚ + db 55h ; U + db 82h ; ‚ + db 6Ah ; j + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0DDh ; Ý + db 8Ah ; Š + db 0B7h ; · + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F2C7 db 82h ; ‚ ; DATA XREF: dseg:00CCo + db 61h ; a + db 82h ; ‚ + db 66h ; f + db 82h ; ‚ + db 6Ch ; l + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 57h ; W + db 82h ; ‚ + db 55h ; U + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0DDh ; Ý + db 8Ah ; Š + db 0B7h ; · + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F2E8 db 8Ch ; Œ ; DATA XREF: dseg:00D0o + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0CDh ; Í + db 97h ; — + db 0ACh ; ¬ + db 82h ; ‚ + db 0EAh ; ê + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F1h ; ñ + db 0 +unk_F2FB db 8Ch ; Œ ; DATA XREF: dseg:00D4o + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 65h ; e + db 82h ; ‚ + db 6Ch ; l + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F318 db 8Ch ; Œ ; DATA XREF: dseg:00D8o + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 61h ; a + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 90h ; + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +aUgtevSVvpPkvBa db '“G’e‚Ì‘½‚¢êŠ‚ÅA‚í‚´‚ƈ——Ž‚¿iƒXƒ[j‚³‚¹‚Ü‚·i‰SŽÒ—pj',0 + ; DATA XREF: dseg:00DCo +unk_F378 db 8Fh ; ; DATA XREF: dseg:00E0o + db 88h ; ˆ + db 97h ; — + db 9Dh ; + db 97h ; — + db 8Eh ; Ž + db 82h ; ‚ + db 0BFh ; ¿ + db 82h ; ‚ + db 0F0h ; ð + db 83h ; ƒ + db 7Dh ; } + db 83h ; ƒ + db 56h ; V + db 83h ; ƒ + db 93h ; “ + db 82h ; ‚ + db 0CCh ; Ì + db 83h ; ƒ + db 58h ; X + db 83h ; ƒ + db 73h ; s + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 68h ; h + db 82h ; ‚ + db 0C9h ; É + db 94h ; ” + db 43h ; C + db 82h ; ‚ + db 0B9h ; ¹ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 95h ; • + db 57h ; W + db 8Fh ; + db 80h ; € + db 81h ; + db 6Ah ; j + db 0 +unk_F3A5 db 82h ; ‚ ; DATA XREF: dseg:00E4o + db 0B1h ; ± + db 82h ; ‚ + db 0CCh ; Ì + db 83h ; ƒ + db 49h ; I + db 83h ; ƒ + db 76h ; v + db 83h ; ƒ + db 56h ; V + db 83h ; ƒ + db 87h ; ‡ + db 83h ; ƒ + db 93h ; “ + db 82h ; ‚ + db 0F0h ; ð + db 91h ; ‘ + db 53h ; S + db 82h ; ‚ + db 0C4h ; Ä + db 95h ; • + db 57h ; W + db 8Fh ; + db 80h ; € + db 82h ; ‚ + db 0C9h ; É + db 96h ; – + db 0DFh ; ß + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F3C8 db 83h ; ƒ ; DATA XREF: dseg:00E8o + db 49h ; I + db 83h ; ƒ + db 76h ; v + db 83h ; ƒ + db 56h ; V + db 83h ; ƒ + db 87h ; ‡ + db 83h ; ƒ + db 93h ; “ + db 82h ; ‚ + db 0F0h ; ð + db 8Fh ; + db 49h ; I + db 97h ; — + db 0B9h ; ¹ + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +unk_F3DF db 83h ; ƒ ; DATA XREF: dseg:00ECo + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 83h ; ƒ + db 43h ; C + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 57h ; W + db 81h ; + db 5Bh ; [ + db 81h ; + db 6Ah ; j + db 0 +unk_F3FE db 83h ; ƒ ; DATA XREF: dseg:00F0o + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 83h ; ƒ + db 6Dh ; m + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 7Dh ; } + db 83h ; ƒ + db 8Bh ; ‹ + db 81h ; + db 6Ah ; j + db 0 +unk_F41D db 83h ; ƒ ; DATA XREF: dseg:00F4o + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 83h ; ƒ + db 6Eh ; n + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 68h ; h + db 81h ; + db 6Ah ; j + db 0 +unk_F43A db 83h ; ƒ ; DATA XREF: dseg:00F8o + db 51h ; Q + db 81h ; + db 5Bh ; [ + db 83h ; ƒ + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 8Ah ; Š + db 4Ah ; J + db 8Eh ; Ž + db 6Eh ; n + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 69h ; i + db 83h ; ƒ + db 8Bh ; ‹ + db 83h ; ƒ + db 69h ; i + db 83h ; ƒ + db 65h ; e + db 83h ; ƒ + db 42h ; B + db 83h ; ƒ + db 62h ; b + db 83h ; ƒ + db 4Eh ; N + db 81h ; + db 6Ah ; j + db 0 +aOp1_pi db 'op1.pi',0 ; DATA XREF: sub_A9D6+C7o + ; sub_A9D6+117o ... +aMiko db 'miko',0 ; DATA XREF: sub_ABCF+E4o + ; sub_ABCF+20Bo ... +aOp db 'op',0 ; DATA XREF: sub_ABCF+F0o + ; sub_ABCF+1C5o ... +unk_F46C db 89h ; ‰ ; DATA XREF: _main+17o + db 0F6h ; ö + db 0E3h ; ã + db 59h ; Y + db 92h ; ’ + db 6Bh ; k + db 31h ; 1 + db 2Eh ; . + db 64h ; d + db 61h ; a + db 74h ; t + db 0 +unk_F478 db 0Ah ; DATA XREF: _main+27o + db 8Bh ; ‹ + db 0F3h ; ó + db 82h ; ‚ + db 0ABh ; « + db 83h ; ƒ + db 81h ; + db 83h ; ƒ + db 82h ; ‚ + db 83h ; ƒ + db 8Ah ; Š + db 95h ; • + db 73h ; s + db 91h ; ‘ + db 0ABh ; « + db 82h ; ‚ + db 0C5h ; Å + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 42h ; B + db 83h ; ƒ + db 81h ; + db 83h ; ƒ + db 82h ; ‚ + db 83h ; ƒ + db 8Ah ; Š + db 8Bh ; ‹ + db 0F3h ; ó + db 82h ; ‚ + db 0ABh ; « + db 82h ; ‚ + db 0F0h ; ð + db 91h ; ‘ + db 9Dh ; + db 82h ; ‚ + db 0E2h ; â + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0C4h ; Ä + db 82h ; ‚ + db 0A9h ; © + db 82h ; ‚ + db 0E7h ; ç + db 8Eh ; Ž + db 0C0h ; À + db 8Dh ; + db 73h ; s + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0C4h ; Ä + db 82h ; ‚ + db 0CBh ; Ë + db 0Ah + db 0 + db 0 + dw 0 +word_F4B4 dw 0 ; DATA XREF: seg000:050Ar +word_F4B6 dw 0 ; DATA XREF: seg000:050Er seg000:0515r + db 0 + db 0 + db 42h ; B + db 46h ; F + db 4Eh ; N + db 54h ; T + db 1Ah + db 0 +word_F4C0 dw 0 ; DATA XREF: sub_C44+21r sub_CCA+7Br ... +word_F4C2 dw 27Fh ; DATA XREF: sub_C44+3Ar sub_11C8+36w ... +word_F4C4 dw 27Fh ; DATA XREF: sub_CCA+75r sub_F12+39r ... +word_F4C6 dw 0 ; DATA XREF: sub_BAC+3r sub_C44+7r ... +word_F4C8 dw 18Fh ; DATA XREF: sub_BAC+1Fr sub_C44+Br ... +word_F4CA dw 18Fh ; DATA XREF: sub_CCA+84r sub_CCA+93r ... +word_F4CC dw 0A800h ; DATA XREF: sub_BAC+19r sub_C44+4Ar ... +word_F4CE dw 7CB0h ; DATA XREF: sub_11C8+46w + ; seg000:loc_2BD6r + db 0 + db 0 + db 80h ; € + db 0 + db 0C0h ; À + db 0 + db 0E0h ; à + db 0 + db 0F0h ; ð + db 0 + db 0F8h ; ø + db 0 + db 0FCh ; ü + db 0 + db 0FEh ; þ + db 0 + db 0FFh + db 0 + db 0FFh + db 80h ; € + db 0FFh + db 0C0h ; À + db 0FFh + db 0E0h ; à + db 0FFh + db 0F0h ; ð + db 0FFh + db 0F8h ; ø + db 0FFh + db 0FCh ; ü + db 0FFh + db 0FEh ; þ + db 0FFh + db 0FFh +word_F4F2 dw 0 ; DATA XREF: sub_9A4+5r sub_9A4+26r ... +word_F4F4 dw 0FFFFh ; DATA XREF: sub_878+6r sub_878+1Fw ... +byte_F4F6 db 0 ; DATA XREF: sub_B92+4r + align 2 + db 0Dh + db 16h + db 20h + db 22h ; " + db 27h ; ' + db 2Ah ; * + db 2Eh ; . + db 36h ; 6 + db 3Fh ; ? + db 0 + db 24h ; $ + db 49h ; I + db 42h ; B + db 4Dh ; M + db 41h ; A + db 44h ; D + db 53h ; S + db 50h ; P + db 0 + db 24h ; $ + db 49h ; I + db 42h ; B + db 4Dh ; M + db 41h ; A + db 46h ; F + db 4Eh ; N + db 54h ; T + db 0 +dword_F514 dd 0 ; DATA XREF: sub_11AC-8Cr +word_F518 dw 0A800h ; DATA XREF: sub_11C8+9w sub_1216+18r ... +word_F51A dw 3E80h ; DATA XREF: sub_11C8+Fw sub_1216+14r ... +word_F51C dw 190h ; DATA XREF: sub_11C8+3Cw + db 50h ; P + db 0 +word_F520 dw 0 ; DATA XREF: sub_11C8+2Dw + db 55h ; U + db 0 +word_F524 dw 0 ; DATA XREF: sub_2BAC:loc_2BD1w + ; sub_DF96+E9r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_F52C dw 0 ; DATA XREF: sub_11AC:loc_100Fw + ; sub_11AC:loc_1162w ... +word_F52E dw 64h ; DATA XREF: sub_600+8w + ; sub_600:loc_627w ... + 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_F560 dw 0 ; DATA XREF: seg000:1A1Br +word_F562 dw 0 ; DATA XREF: sub_2ADC+36w sub_2B18+46w ... + db 0 + db 0 +word_F566 dw 200h ; DATA XREF: sub_682+9r sub_682+2Fr ... +byte_F568 db 0 ; DATA XREF: sub_682:loc_6BEw + ; sub_682+48w + align 4 +word_F56C dw 1 ; DATA XREF: sub_1C5E+Cr sub_1C5E+15r ... +word_F56E dw 0 ; DATA XREF: sub_1C5E+3r sub_1C5E+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_F7F6 dw 1 ; DATA XREF: sub_12A6+2Er +unk_F7F8 db 0 ; DATA XREF: seg000:21FCr + db 0 +word_F7FA dw 0 ; DATA XREF: seg000:21EEr +word_F7FC dw 0 ; DATA XREF: sub_2162+Ew sub_2162+16w ... +byte_F7FE db 0 ; DATA XREF: sub_2162+24r sub_2162+4Cw ... + db 90h ; + db 0FFh + db 7Fh ;  + db 3Fh ; ? + db 1Fh + db 0Fh + db 7 + db 3 + db 1 +word_F808 dw 0 ; DATA XREF: sub_209Er sub_22D4+6w ... +word_F80A dw 0 ; DATA XREF: sub_22B2+15w sub_22D4+1Bw ... +word_F80C dw 0 ; DATA XREF: sub_682+3w sub_1354+DFw ... +word_F80E dw 100h ; DATA XREF: sub_22FA+8r + db 0 + db 0 + db 0 + db 0 + db 0 +byte_F815 db 0 ; DATA XREF: sub_2656+24r + ; sub_2656:loc_269Cr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +word_F81C dw 0 ; DATA XREF: sub_2656+6Er +word_F81E dw 0 ; DATA XREF: sub_2656+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_F82C dw 0 ; DATA XREF: sub_2656+32r + align 4 +word_F830 dw 0 ; DATA XREF: sub_24F2r sub_24F2+7r ... +word_F832 dw 0 ; DATA XREF: sub_24F2:loc_250Fr + ; sub_2536+5r ... +word_F834 dw 0 ; DATA XREF: sub_24F2+24r sub_24F2+2Br +aPal98Grb db 'pal98 grb',0 + dw 0FFFFh +word_F842 dw 1 ; DATA XREF: seg000:304Dr seg000:3057w ... + 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_F8F4 dw 0 ; DATA XREF: sub_2F92+Cw sub_2F92+31r ... +word_F8F6 dw 0 ; DATA XREF: sub_2F92+28r seg000:3053r ... +word_F8F8 dw 0 ; DATA XREF: sub_3360+12w +word_F8FA dw 0 ; DATA XREF: seg000:3084r seg000:309Ew ... +word_F8FC dw 0 ; DATA XREF: sub_338E+ABw +word_F8FE dw 0 ; DATA XREF: sub_3156+6r + ; sub_3156:loc_3200r ... +word_F900 dw 0 ; DATA XREF: sub_3156+CAw sub_3156+E1r ... +word_F902 dw 0 ; DATA XREF: seg000:3097r sub_338E+BDw +word_F904 dw 0 ; DATA XREF: seg000:3074w seg000:3078r ... +word_F906 dw 0 ; DATA XREF: sub_338E+2Ew + ; sub_338E+139r +word_F908 dw 0 ; DATA XREF: sub_338E+C9w +word_F90A dw 0 ; DATA XREF: sub_338E+9Fw +word_F90C dw 0 ; DATA XREF: sub_3000+6r sub_338E+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_F92E dw 0 ; DATA XREF: sub_3156+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_F950 dw 0 ; DATA XREF: seg000:30B8r seg000:30C7w ... +word_F952 dw 0 ; DATA XREF: sub_2E52+64r sub_2E52+CCr ... +word_F954 dw 0 ; DATA XREF: sub_3284+25w sub_32CEr ... +word_F956 dw 0 ; DATA XREF: sub_338E+EFw +word_F958 dw 0 ; DATA XREF: sub_3284:loc_329Dr + ; sub_338E+F5w +word_F95A dw 0 ; DATA XREF: sub_338E+Dr + ; sub_338E:loc_3523w ... +word_F95C dw 0 ; DATA XREF: sub_3360+16r + ; sub_338E+126w +word_F95E dw 0 ; DATA XREF: sub_3360+19r + ; sub_338E+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 + 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 0BEh ; ¾ + db 9 + db 0C6h ; Æ + db 9 + db 0CEh ; Î + db 9 + db 0D6h ; Ö + db 9 + 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_F9BE dw 2 ; DATA XREF: sub_A5F6+D7w + ; sub_A717+204w ... +word_F9C0 dw 10h ; DATA XREF: sub_DA6B-5C9r +byte_F9C2 db 0FFh ; DATA XREF: sub_D5F6+5w sub_D602+Dr ... +byte_F9C3 db 0 ; DATA XREF: sub_D5F6w sub_D602+31w ... +word_F9C4 dw 0 ; DATA XREF: sub_D688+2r sub_D688+11w ... +word_F9C6 dw 0 ; DATA XREF: sub_D688+1Cw sub_D688+49r ... +word_F9C8 dw 0 ; DATA XREF: sub_D688+27w sub_D688+42r ... +word_F9CA dw 0 ; DATA XREF: sub_D688+32w sub_D688+3Br ... +word_F9CC dw 4E20h ; DATA XREF: _main+10w sub_DF12+3r + db 3Bh ; ; + db 83h ; ƒ + db 0BBh ; » + db 83h ; ƒ + db 0B8h ; ¸ + db 3Bh ; ; + db 0B8h ; ¸ + db 3Bh ; ; + db 83h ; ƒ + db 0BBh ; » + db 83h ; ƒ + db 0B8h ; ¸ + db 3Bh ; ; + db 0B8h ; ¸ + db 3Bh ; ; + db 83h ; ƒ + db 0BBh ; » + db 83h ; ƒ + db 0B8h ; ¸ + db 3Bh ; ; + db 0B8h ; ¸ + db 3Bh ; ; + db 83h ; ƒ + db 0BBh ; » + db 83h ; ƒ + db 0B8h ; ¸ + db 3Bh ; ; + db 0B8h ; ¸ + db 3Fh ; ? + db 60h ; ` + db 0C0h ; À + db 0FEh ; þ + db 80h ; € + db 80h ; € +unk_F9F0 db 0C0h ; À ; DATA XREF: sub_DD10+29o + db 40h ; @ + db 66h ; f + db 0A9h ; © + db 99h ; ™ + db 81h ; + db 81h ; + db 81h ; + db 0C3h ; à + db 42h ; B + db 3Ch ; < + db 4 + db 4 + db 4 + db 4 + db 4 + db 0Ch + db 8 + db 3Ch ; < + db 42h ; B + db 81h ; + db 1 + db 6 + db 18h + db 61h ; a + db 7Eh ; ~ + db 3Ch ; < + db 42h ; B + db 1 + db 0Eh + db 1 + db 0C1h ; Á + db 42h ; B + db 7Ch ; | + db 0Ch + db 12h + db 22h ; " + db 42h ; B + db 42h ; B + db 7Fh ;  + db 2 + db 2 + db 3Eh ; > + db 40h ; @ + db 80h ; € + db 0BCh ; ¼ + db 42h ; B + db 1 + db 82h ; ‚ + db 7Ch ; | + db 7Eh ; ~ + db 0C1h ; Á + db 80h ; € + db 70h ; p + db 0Eh + db 1 + db 83h ; ƒ + db 7Eh ; ~ + db 3Eh ; > + db 63h ; c + db 0C0h ; À + db 80h ; € + db 86h ; † + db 0C1h ; Á + db 63h ; c + db 3Ch ; < + db 65h ; e + db 66h ; f + db 63h ; c + db 0 +dword_FA36 dd 6Dh ; DATA XREF: sub_DBBE+88r + db 6Dh ; m + db 32h ; 2 + db 0 + db 6Dh ; m + db 6Dh ; m + db 64h ; d + db 0 +byte_FA41 db 0 ; DATA XREF: sub_D322+Dw + ; sub_D380:loc_D3CCw ... +byte_FA42 db 0 ; DATA XREF: sub_D322+Aw sub_D380+22w ... +byte_FA43 db 0 ; DATA XREF: sub_D322+7w sub_D350+23w ... + db 0 + db 0 + db 11h + db 11h + db 0 + db 0 + db 44h ; D + db 44h ; D + db 88h ; ˆ + db 88h ; ˆ + db 11h + db 11h + db 22h ; " + db 22h ; " + db 44h ; D + db 44h ; D + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0AAh ; ª + db 0AAh ; ª + db 55h ; U + db 55h ; U + db 0EEh ; î + db 0EEh ; î + db 77h ; w + db 77h ; w + db 0BBh ; » + db 0BBh ; » + db 0DDh ; Ý + db 0DDh ; Ý + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +dword_FA84 dd 0A8000000h ; DATA XREF: sub_BFB7:loc_BFCAr + ; sub_CE65:loc_CEC6r + db 0 + db 0 + db 0 + db 0B0h ; ° + db 0 + db 0 + db 0 + db 0B8h ; ¸ + db 0 + db 0 + db 0 + db 0E0h ; à +byte_FA94 db 0 ; DATA XREF: sub_E174w sub_E17A+54w ... + align 2 + 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_FC27 ; " "... + dd aVVibavVVcvRTsv ; "‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰"... + dd unk_FC85 + dd unk_FCB4 + dd unk_FCE3 + dd aB@B@b@b@b@VVBa ; "@ @@@@ ‚Ì‚ÅA‚a‚f‚l‚ª³í‚É‚«‚¯‚È‚"... + dd unk_FD41 + dd aVevliMVkcVvpNz ; " ‚e‚l‰¹Œ¹‚ª–³‚¢ê‡Žg—p‚µ‚"... + dd unk_FD9F + dd aB@b@b@b@b@b@_2 ; "@@@@@@@–³‚¢ê‡ "... + dd aVVibavVVcvRTsv ; "‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰"... +aGxgegmgivevliM db 'ƒXƒeƒŒƒI‚e‚l‰¹Œ¹FPC-9801-86(ŒÝŠ·)ƒ{[ƒh@@@',0 + ; DATA XREF: dseg:0AB6o +aB@b@b@b@b@b@b@ db '@@@@@@@@@CanBe“à‘ ‰¹Œ¹‚È‚ÇA ',0 + ; DATA XREF: dseg:0ABAo +aB@b@b@b@b@b@_0 db '@@@@@@@‚e‚l‚U‰¹{‚r‚r‚f‚R‰¹{ƒŠƒYƒ€‰¹Œ¹',0 + ; DATA XREF: dseg:0ABEo +aB@xwpavevliMBf db '@•W€‚e‚l‰¹Œ¹F PC-9801-26K(ŒÝŠ·)ƒ{[ƒh ',0 + ; DATA XREF: dseg:0AC2o +aPc9801dausvUrs db ' PC-9801DA“™‚É“à‘ ‚̉¹Œ¹‚È‚Ç ',0 + ; DATA XREF: dseg:0AC6o +aB@b@b@b@b@b@_1 db '@@@@@@@@@‚e‚l‚R‰¹{‚r‚r‚f‚R‰¹ ',0 + ; DATA XREF: dseg:0ACAo +aB@b@iKycVBfb@b db '@@‰¹Šy–³‚µF@@‚e‚l‰¹Œ¹‚ª–³‚¢ê‡ ',0 + ; DATA XREF: dseg:0ACEo +asc_FC27 db ' ',0 + ; DATA XREF: dseg:0AD2o +aVVibavVVcvRTsv db '‚È‚¨A‚±‚ê‚ç‚ÌÝ’è‚Í‚n‚‚”‚‰‚‚Ž‚Å•ÏX‰Â”\‚Å‚·',0 + ; DATA XREF: dseg:0AD6o dseg:0AFAo +unk_FC85 db 81h ; ; DATA XREF: dseg:0ADAo + db 40h ; @ + db 82h ; ‚ + db 65h ; e + db 82h ; ‚ + db 6Ch ; l + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 81h ; + db 40h ; @ + db 81h ; + db 46h ; F + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 65h ; e + db 82h ; ‚ + db 6Ch ; l + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 0 +unk_FCB4 db 81h ; ; DATA XREF: dseg:0ADEo + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 82h ; ‚ + db 61h ; a + db 82h ; ‚ + db 66h ; f + db 82h ; ‚ + db 6Ch ; l +word_FCC8 dw 0AA82h ; DATA XREF: seg000:0277r +aGxgegmgivevl_0 db 'ƒXƒeƒŒƒI‚e‚l‰¹Œ¹Žž„§@',0 +unk_FCE3 db 81h ; ; DATA XREF: dseg:0AE2o + db 40h ; @ + db 20h + db 81h ; + db 40h ; @ + db 20h + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 69h ; i + db 95h ; • + db 57h ; W + db 8Fh ; + db 80h ; € + db 82h ; ‚ + db 65h ; e + db 82h ; ‚ + db 6Ch ; l + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C5h ; Å + db 82h ; ‚ + db 0CDh ; Í + db 81h ; + db 41h ; A + db 33h ; 3 + db 63h ; c + db 68h ; h + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 20h + db 0 +aB@B@b@b@b@VVBa db '@ @@@@ ‚Ì‚ÅA‚a‚f‚l‚ª³í‚É‚«‚¯‚È‚¢‚©‚àj',0 + ; DATA XREF: dseg:0AE6o +unk_FD41 db 82h ; ‚ ; DATA XREF: dseg:0AEAo + db 61h ; a + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 90h ; + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 81h ; + db 46h ; F + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C9h ; É + db 82h ; ‚ + db 61h ; a + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 85h ; … + db 82h ; ‚ + db 90h ; + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0DCh ; Ü + db 82h ; ‚ + db 0B7h ; · + db 0 +aVevliMVkcVvpNz db ' ‚e‚l‰¹Œ¹‚ª–³‚¢ê‡Žg—p‚µ‚Ü‚·@@',0 + ; DATA XREF: dseg:0AEEo +unk_FD9F db 20h ; DATA XREF: dseg:0AF2o + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 96h ; – + db 0B3h ; ³ + db 82h ; ‚ + db 0B5h ; µ + db 20h + db 81h ; + db 46h ; F + db 89h ; ‰ + db 0BDh ; ½ + db 82h ; ‚ + db 0E7h ; ç + db 82h ; ‚ + db 0A9h ; © + db 82h ; ‚ + db 0CCh ; Ì + db 8Eh ; Ž + db 96h ; – + db 8Fh ; + db 0EEh ; î + db 82h ; ‚ + db 0C5h ; Å + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 96h ; – + db 0C2h ;  + db 82h ; ‚ + db 0E7h ; ç + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0BDh ; ½ + db 82h ; ‚ + db 0ADh ; ­ + db 0 +aB@b@b@b@b@b@_2 db '@@@@@@@–³‚¢ê‡ ',0 + ; DATA XREF: dseg:0AF6o +aGxgegmgivevl_1 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 + db 81h ; + db 40h ; @ + db 20h + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 96h ; – + db 0B3h ; ³ + db 82h ; ‚ + db 0B5h ; µ + db 20h + db 81h ; + db 40h ; @ + db 0 +unk_FE63 db 81h ; ; DATA XREF: sub_B36C+1Co + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B7h ; · + db 82h ; ‚ + db 0E9h ; é + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 91h ; ‘ + db 49h ; I + db 91h ; ‘ + db 0F0h ; ð + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0C4h ; Ä + db 89h ; ‰ + db 0BAh ; º + db 82h ; ‚ + db 0B3h ; ³ + db 82h ; ‚ + db 0A2h ; ¢ + db 82h ; ‚ + db 0CBh ; Ë + db 81h ; + db 99h ; ™ + db 0 +unk_FE8E db 81h ; ; DATA XREF: sub_B489+1Co + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 8Ch ; Œ + db 0F8h ; ø + db 89h ; ‰ + db 0CAh ; Ê + db 89h ; ‰ + db 0B9h ; ¹ + db 82h ; ‚ + db 0C9h ; É + db 8Eh ; Ž + db 67h ; g + db 97h ; — + db 70h ; p + db 82h ; ‚ + db 0B7h ; · + db 82h ; ‚ + db 0E9h ; é + db 89h ; ‰ + db 0B9h ; ¹ + db 8Ch ; Œ + db 0B9h ; ¹ + db 82h ; ‚ + db 0F0h ; ð + db 91h ; ‘ + db 49h ; I + db 91h ; ‘ + db 0F0h ; ð + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0C4h ; Ä + db 82h ; ‚ + db 0CBh ; Ë + db 81h ; + db 99h ; ™ + db 0 +aMswin_bft db 'mswin.bft',0 ; DATA XREF: sub_B5A6+Fo +aMs_pi db 'ms.pi',0 ; DATA XREF: sub_B5A6+20o + align 2 +aZun00_pi db 'zun00.pi',0 ; DATA XREF: sub_B806+26o +aLogo db 'logo',0 ; DATA XREF: sub_B806+C7o +aZun02_bft db 'zun02.bft',0 ; DATA XREF: sub_B806+10Bo +aZun04_bft db 'zun04.bft',0 ; DATA XREF: sub_B806+114o +aZun01_bft db 'zun01.bft',0 ; DATA XREF: sub_B806+11Do +aZun03_bft db 'zun03.bft',0 ; DATA XREF: sub_B806+126o +unk_FF00 db 0 ; DATA XREF: sub_BB91+Ao + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 +aMiko_cfg db 'MIKO.CFG',0 ; DATA XREF: sub_BA94+5o sub_BB0E+5o ... + align 2 +aSft1_cd2 db 'sft1.cd2',0 ; DATA XREF: sub_BC0F+6o +aSft2_cd2 db 'sft2.cd2',0 ; DATA XREF: sub_BC0F+11o +aCar_cd2 db 'car.cd2',0 ; DATA XREF: sub_BC0F+1Co +aSl00_cdg db 'sl00.cdg',0 ; DATA XREF: sub_BC0F+27o +aSl01_cdg db 'sl01.cdg',0 ; DATA XREF: sub_BC0F+34o +aSl02_cdg db 'sl02.cdg',0 ; DATA XREF: sub_BC0F+41o +aSl03_cdg db 'sl03.cdg',0 ; DATA XREF: sub_BC0F+4Eo +aSlcl_cdg db 'slcl.cdg',0 ; DATA XREF: sub_BC0F+5Bo +aSl04_cdg db 'sl04.cdg',0 ; DATA XREF: sub_BC0F+68o +aOp2a_pi db 'op2a.pi',0 ; DATA XREF: sub_BC8D+13o +aOp2b_pi db 'op2b.pi',0 ; DATA XREF: sub_BC8D+1Eo +aOp2c_pi db 'op2c.pi',0 ; DATA XREF: sub_BC8D+29o +aOp2d_pi db 'op2d.pi',0 ; DATA XREF: sub_BC8D+34o +aOp2e_pi db 'op2e.pi',0 ; DATA XREF: sub_BC8D+3Fo +aOp2f_pi db 'op2f.pi',0 ; DATA XREF: sub_BC8D+4Ao +aOp2g_pi db 'op2g.pi',0 ; DATA XREF: sub_BC8D+55o +aOp2h_pi db 'op2h.pi',0 ; DATA XREF: sub_BC8D+60o +aOp_0 db 'op',0 ; DATA XREF: sub_BC8D+149o +aOp1_pi_0 db 'op1.pi',0 ; DATA XREF: sub_BC8D+15Eo +off_FFAE dd aBg ; DATA XREF: sub_BF4D+30r + ; " ------ £ ------ " +off_FFB2 dd aBe ; DATA XREF: sub_BF4D+42r + ; " ------ ¥ ------ " + dd asc_104D5 ; " ---------------- " + dd unk_104FA + dd unk_1051F + dd unk_10544 + dd unk_10569 + dd unk_1058E + dd aNo_1ASacredLot ; "No.1 A Sacred Lot " + dd aNo_2IiiuvIPc ; "No.2 ‰i‰“‚̛ޗ " + dd aNo_3ThePositiv ; "No.3 The Positive and Negative " + dd aNo_4HighlyResp ; "No.4 Highly Responsive to Prayers " + dd unk_10647 + dd aNo_6UvoguRr ; "No.6 “VŽg“`à " + dd aNo_7OrientalMa ; "No.7 Oriental Magician " + dd aNo_8FjoVPmsUb ; "No.8 ”jŽ×‚̬‘¾“ " + dd aNo_9Cvl ; "No.9 –‚‹¾ " + dd aNo_10TheLegend ; "No.10 the Legend of KAGE " + dd aNo_11VvvBauVRV ; "No.11 ‚¢‚´A“|‚êÀ‚­‚»‚ÌŽž‚Ü‚Å " + dd aNo_12Civilizat ; "No.12 Civilization of Magic " + dd aNo_13Rpchuvog ; "No.13 ¯—H“VŽg " + dd aNo_14Gagcgkgx ; "No.14 ƒAƒCƒŠƒX " + dd aGGcggglvCVs ; " ƒ^ƒCƒgƒ‹‚É–ß‚é " + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 unk_107DE + dd aNo_2B@Focab@bE ; "No.2 @ ”Ž—í@`Eastern Wind " + dd aNo_3B@SheSInAT ; "No.3 @ She's in a temper!! " + dd aNo_4B@EndOfDay ; "No.4 @ End of Daylight@ " + dd aNo_5B@B@VtvVVV ; "No.5 @ @ ‚â‚Ý‚Ì‚¿‚©‚ç@@ " + dd aNo_6B@b@b@b@b@ ; "No.6 @@@@@Œ¶–²ŠE@@@@ " + dd unk_108BC + dd aNo_8VVrvivmbav ; "No.8 ‚Ђà‚났A‚ނ炳‚«‚É‚à‚¦ " + dd unk_10906 + dd unk_1092B + dd aNo_11CompleteD ; "No.11 Complete Darkness " + dd aNo_12B@Ggglgxg ; "No.12 @ ƒGƒLƒXƒgƒ‰ƒ‰ƒu " + dd aNo_13RaoVVVVVV ; "No.13 íŽÔ‚Þ‚·‚ß‚Ì‚Ý‚é‚ä‚ß " + dd aNo_14B@b@iucVR ; "No.14 @@‰“–ì‚ÌX@@@ " + dd unk_109E4 + dd aCvogcp_1Focar_ ; "–¢Žg—p.1 ”Ž—í_ŽÐ‹«“à " + dd aCvogcp_2B@czco ; "–¢Žg—p.2 @—z—Ž‚¿‚Ä @ " + dd aCvogcp_3B@xxcv ; "–¢Žg—p.3 @••–‚I‰‰ @ " + dd aGGcggglvCVs ; " ƒ^ƒCƒgƒ‹‚É–ß‚é " + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 unk_10A78 + dd aNo_2B@B@Select ; "No.2 @ @ Selection " + dd unk_10AC2 + dd aNo_4Reincarnat ; "No.4 Reincarnation " + dd aNo_5Dim_Dream ; "No.5 Dim. Dream " + dd unk_10B31 + dd aNo_7B@Maniacal ; "No.7 @ Maniacal Princess " + dd aNo_8CPOBLostDr ; "No.8 –²ÁŽ¸ `Lost Dream " + dd aNo_9CMCvlyBDre ; "No.9 –²Œ¶—V‹Y `Dream War " + dd aNo_10Cvc@mirab ; "No.10 –‚–@ŒˆíI`Fight it out! " + dd aNo_11B@SailorO ; "No.11 @ Sailor of Time " + dd aNo_12Strawberr ; "No.12 Strawberry Crisis!! " + dd unk_10C34 + dd aNo_14B@cvc@pri ; "No.14 @–‚–@àˆ¤ " + dd aNo_15B@lviuvC ; "No.15 @‹v‰“‚Ì–² " + dd unk_10CA3 + dd aNo_17IiiuvCumo ; "No.17 ‰i‰“‚Ì–žŒŽ " + dd aNo_18MapleDrea ; "No.18 Maple Dream... " + dd unk_10D12 + dd aNo_20Pqcsgfgv ; "No.20 Ÿ—˜ƒfƒ‚ " + dd aNo_21GqbGagibG ; "No.21 ƒQ[ƒ€ƒI[ƒo[ " + dd aCvogcp_1OuvXc ; "–¢Žg—p.1 Žž‚Ì•— " + dd aCvogcp_2GxgBGG ; "–¢Žg—p.2 ƒXƒ^[ƒ{ƒEƒhƒŠ[ƒ€ " + dd aCvogcp_3Phanta ; "–¢Žg—p.3 Phantasmagoria " + dd aGGcggglvCVs_0 ; " ƒ^ƒCƒgƒ‹‚É–ß‚é " + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 aNo_1MSzlBLotus ; "No.1 Œ¶‘z‹½ ` Lotus Land Story " + dd aNo_2WitchingDr ; "No.2 Witching Dream " + dd aNo_3SeleneSLig ; "No.3 Selene's light " + dd unk_10E84 + 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 unk_11040 + 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 aCvogcp_1LotusR ; "–¢Žg—p.1 Lotus Road " + dd aCvogcp_2Dreamy ; "–¢Žg—p.2 Dreamy pilot " + dd aCvogcp_3Incomp ; "–¢Žg—p.3 Incomplete Plot " + dd aCvogcp_4Border ; "–¢Žg—p.4 Border Land " + dd aCvogcp_5MagicS ; "–¢Žg—p.5 Magic Shop of Raspberry " + dd aCvogcp_6Cresce ; "–¢Žg—p.6 Crescent Dream " + dd aGGcggglvCVs ; " ƒ^ƒCƒgƒ‹‚É–ß‚é " + db 0 + db 0 + db 0 + db 0 + dd unk_11221 + dd aNo_2DreamExpre ; "No.2 Dream Express " + dd aNo_3Cvc@rwb@bM ; "No.3 –‚–@w@` Magic Square " + dd unk_11290 + dd aNo_5CUvb@bSpir ; "No.5 —ì“V@` Spiritual Heaven " + dd aNo_6RomanticCh ; "No.6 Romantic Children " + dd aNo_7GvgigxgGbg ; "No.7 ƒvƒ‰ƒXƒ`ƒbƒNƒ}ƒCƒ“ƒh " + dd aNo_8Gbgcgvglgp ; "No.8 ƒƒCƒvƒ‹ƒƒCƒY " + dd aNo_9LTfvCvc@BF ; "No.9 ‹Ö’f‚Ì–‚–@ ` Forbidden Magic" + dd aNo_10RNgvPnpcb ; "No.10 ^g‚Ì­—@` Crimson Dead!!" + dd aNo_11CarVsvPnp ; "No.11 — Ø‚è‚Ì­—@` Judas Kiss " + dd aNo_12TheLastJu ; "No.12 the Last Judgement " + dd aNo_13FVVlrlmB@ ; "No.13 ”ß‚µ‚«lŒ`@` Doll of Misery" + dd aNo_14RvkevIVB@ ; "No.14 ¢ŠE‚̉ʂÄ@` World's End " + dd aNo_15R_sbmSzb@ ; "No.15 _˜bŒ¶‘z@` Infinite Being " + dd aNo_16XsovlcvNs ; "No.16 •sŽv‹c‚Ì‘‚̃AƒŠƒX " + dd aNo_17TheGrimoi ; "No.17 the Grimoire of Alice " + dd aNo_18R_o ; "No.18 _ŽÐ " + dd aNo_19Endless ; "No.19 Endless " + dd aNo_20LviuvKyia ; "No.20 ‹v‰“‚ÌŠy‰€ " + dd aNo_21MysticDre ; "No.21 Mystic Dream " + dd aNo_22PeacefulR ; "No.22 Peaceful Romancer " + dd aNo_23NVLxvcvPk ; "No.23 °‚Ì‹x‚ç‚ÞŠ " + dd aGGcggglvCVs ; " ƒ^ƒCƒgƒ‹‚É–ß‚é " + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 aR_00 ; "r_00" + dd aR_01 ; "r_01" + dd aR_02 ; "r_02" + dd aR_03 ; "r_03" + dd aR_04 ; "r_04" + dd aR_05 ; "r_05" + dd aR_06 ; "r_06" + dd aR_07 ; "r_07" + dd aR_08 ; "r_08" + dd aR_09 ; "r_09" + dd aR_10 ; "r_10" + dd aR_11 ; "r_11" + dd aR_12 ; "r_12" + dd aR_13 ; "r_13" + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 aH_op ; "h_op" + dd aH_st00 ; "h_st00" + dd aH_st00b ; "h_st00b" + dd aH_st01 ; "h_st01" + dd aH_st01b ; "h_st01b" + dd aH_st02 ; "h_st02" + dd aH_st02b ; "h_st02b" + dd aH_st03 ; "h_st03" + dd aH_st03b ; "h_st03b" + dd aH_st04 ; "h_st04" + dd aH_st04b ; "h_st04b" + dd aH_st05 ; "h_st05" + dd aH_st05b ; "h_st05b" + dd aH_end ; "h_end" + dd aH_staff ; "h_staff" + dd aH_ng00 ; "h_ng00" + dd aH_ng01 ; "h_ng01" + dd aH_ng02 ; "h_ng02" + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 aY_op ; "y_op" + dd aY_select ; "y_select" + dd aY_00mm ; "y_00mm" + dd aY_01mm ; "y_01mm" + dd aY_02mm ; "y_02mm" + dd aY_03mm ; "y_03mm" + dd aY_04mm ; "y_04mm" + dd aY_05mm ; "y_05mm" + dd aY_06mm ; "y_06mm" + dd aY_dec ; "y_dec" + dd aY_07mm ; "y_07mm" + dd aY_08mm ; "y_08mm" + dd aY_demo1 ; "y_demo1" + dd aY_demo2 ; "y_demo2" + dd aY_demo3 ; "y_demo3" + dd aY_demo4 ; "y_demo4" + dd aY_demo5 ; "y_demo5" + dd aY_ed ; "y_ed" + dd aY_score ; "y_score" + dd aY_win ; "y_win" + dd aY_over ; "y_over" + dd aY_ng00 ; "y_ng00" + dd aY_ng01 ; "y_ng01" + dd aY_ng02 ; "y_ng02" + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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 aG_op ; "g_op" + dd aG_st00 ; "g_st00" + dd aG_st10 ; "g_st10" + dd aG_st00b ; "g_st00b" + dd aG_st01 ; "g_st01" + dd aG_st01b ; "g_st01b" + dd aG_st02 ; "g_st02" + dd aG_st02b ; "g_st02b" + dd aG_st03 ; "g_st03" + dd aG_st03c ; "g_st03c" + dd aG_st03b ; "g_st03b" + dd aG_st04 ; "g_st04" + dd aG_st04b ; "g_st04b" + dd aG_st05 ; "g_st05" + dd aG_st05b ; "g_st05b" + dd aG_st06 ; "g_st06" + dd aG_st06b ; "g_st06b" + dd aG_st06c ; "g_st06c" + dd aG_end1 ; "g_end1" + dd aG_end2 ; "g_end2" + dd aG_staff ; "g_staff" + dd aG_name ; "g_name" + dd aG_ng00 ; "g_ng00" + dd aG_ng01 ; "g_ng01" + dd aG_ng02 ; "g_ng02" + dd aG_ng03 ; "g_ng03" + dd aG_ng04 ; "g_ng04" + dd aG_ng05 ; "g_ng05" + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + dd aH_op+2 + dd aH_st00+2 + dd aH_st00b+2 + dd aH_st01+2 + dd aH_st01b+2 + dd aH_st02+2 + dd aH_st02b+2 + dd aH_st03+2 + dd aH_st03b+2 + dd aG_st03c+2 + dd aSt03d ; "st03d" + dd aH_st04+2 + dd aH_st04b+2 + dd aH_st05+2 + dd aH_st05b+2 + dd aG_st06+2 + dd aG_st06b+2 + dd aEd00 ; "ed00" + dd aEd01 ; "ed01" + dd aEd02 ; "ed02" + dd aH_staff+2 + dd aExed ; "exed" + dd aG_name+2 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_1047E dw 4 ; DATA XREF: sub_BE79:loc_BF14r + ; sub_BF4D+54r ... + db 0Eh + db 0 + db 12h + db 0 + db 18h + db 0 + db 1Ch + db 0 + db 17h + db 0 +byte_1048A db 0 ; DATA XREF: sub_C09D+4r sub_C09D+AAw +aBg db ' ------ £ ------ ',0 ; DATA XREF: dseg:off_FFAEo +aBe db ' ------ ¥ ------ ',0 ; DATA XREF: dseg:off_FFB2o +asc_104D5 db ' ---------------- ',0 ; DATA XREF: dseg:0FD6o +unk_104FA db 20h ; DATA XREF: dseg:0FDAo + db 20h + db 20h + db 91h ; ‘ + db 0E6h ; æ + db 82h ; ‚ + db 50h ; P + db 92h ; ’ + db 65h ; e + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 0E8h ; è + db 0CBh ; Ë + db 88h ; ˆ + db 0D9h ; Ù + db 93h ; “ + db 60h ; ` + db 20h + db 20h + db 41h ; A + db 72h ; r + db 72h ; r + db 61h ; a + db 6Eh ; n + db 67h ; g + db 65h ; e + db 20h + db 76h ; v + db 65h ; e + db 72h ; r + db 20h + db 20h + db 0 +unk_1051F db 20h ; DATA XREF: dseg:0FDEo + db 20h + db 20h + db 91h ; ‘ + db 0E6h ; æ + db 82h ; ‚ + db 51h ; Q + db 92h ; ’ + db 65h ; e + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 95h ; • + db 95h ; • + db 96h ; – + db 82h ; ‚ + db 98h ; ˜ + db 5Eh ; ^ + db 20h + db 20h + db 53h ; S + db 70h ; p + db 65h ; e + db 63h ; c + db 69h ; i + db 61h ; a + db 6Ch ; l + db 20h + db 4Dh ; M + db 49h ; I + db 58h ; X + db 20h + db 20h + db 0 +unk_10544 db 20h ; DATA XREF: dseg:0FE2o + db 20h + db 20h + db 91h ; ‘ + db 0E6h ; æ + db 82h ; ‚ + db 52h ; R + db 92h ; ’ + db 65h ; e + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 96h ; – + db 0B2h ; ² + db 8Eh ; Ž + db 9Eh ; ž + db 8Bh ; ‹ + db 0F3h ; ó + db 20h + db 20h + db 53h ; S + db 70h ; p + db 65h ; e + db 63h ; c + db 69h ; i + db 61h ; a + db 6Ch ; l + db 20h + db 4Dh ; M + db 49h ; I + db 58h ; X + db 20h + db 20h + db 0 +unk_10569 db 20h ; DATA XREF: dseg:0FE6o + db 20h + db 20h + db 91h ; ‘ + db 0E6h ; æ + db 82h ; ‚ + db 53h ; S + db 92h ; ’ + db 65h ; e + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 8Ch ; Œ + db 0B6h ; ¶ + db 91h ; ‘ + db 7Ah ; z + db 8Bh ; ‹ + db 0BDh ; ½ + db 20h + db 20h + db 53h ; S + db 70h ; p + db 65h ; e + db 63h ; c + db 69h ; i + db 61h ; a + db 6Ch ; l + db 20h + db 4Dh ; M + db 49h ; I + db 58h ; X + db 20h + db 20h + db 0 +unk_1058E db 20h ; DATA XREF: dseg:0FEAo + db 20h + db 20h + db 91h ; ‘ + db 0E6h ; æ + db 82h ; ‚ + db 54h ; T + db 92h ; ’ + db 65h ; e + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 89h ; ‰ + db 0F6h ; ö + db 0E3h ; ã + db 59h ; Y + db 92h ; ’ + db 6Bh ; k + db 20h + db 4Dh ; M + db 79h ; y + db 73h ; s + db 74h ; t + db 69h ; i + db 63h ; c + db 53h ; S + db 71h ; q + db 75h ; u + db 61h ; a + db 72h ; r + db 65h ; e + db 20h + db 20h + db 0 +aNo_1ASacredLot db 'No.1 A Sacred Lot ',0 ; DATA XREF: dseg:0FEEo +aNo_2IiiuvIPc db 'No.2 ‰i‰“‚̛ޗ ',0 ; DATA XREF: dseg:0FF2o +aNo_3ThePositiv db 'No.3 The Positive and Negative ',0 ; DATA XREF: dseg:0FF6o +aNo_4HighlyResp db 'No.4 Highly Responsive to Prayers ',0 ; DATA XREF: dseg:0FFAo +unk_10647 db 4Eh ; N ; DATA XREF: dseg:0FFEo + db 6Fh ; o + db 2Eh ; . + db 35h ; 5 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 89h ; ‰ + db 0F6h ; ö + db 8Ah ; Š + db 0EFh ; ï + db 92h ; ’ + db 6Bh ; k + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_6UvoguRr db 'No.6 “VŽg“`à ',0 ; DATA XREF: dseg:1002o +aNo_7OrientalMa db 'No.7 Oriental Magician ',0 ; DATA XREF: dseg:1006o +aNo_8FjoVPmsUb db 'No.8 ”jŽ×‚̬‘¾“ ',0 ; DATA XREF: dseg:100Ao +aNo_9Cvl db 'No.9 –‚‹¾ ',0 ; DATA XREF: dseg:100Eo +aNo_10TheLegend db 'No.10 the Legend of KAGE ',0 ; DATA XREF: dseg:1012o +aNo_11VvvBauVRV db 'No.11 ‚¢‚´A“|‚êÀ‚­‚»‚ÌŽž‚Ü‚Å ',0 ; DATA XREF: dseg:1016o +aNo_12Civilizat db 'No.12 Civilization of Magic ',0 ; DATA XREF: dseg:101Ao +aNo_13Rpchuvog db 'No.13 ¯—H“VŽg ',0 ; DATA XREF: dseg:101Eo +aNo_14Gagcgkgx db 'No.14 ƒAƒCƒŠƒX ',0 ; DATA XREF: dseg:1022o +aGGcggglvCVs db ' ƒ^ƒCƒgƒ‹‚É–ß‚é ',0 ; DATA XREF: dseg:1026o + ; dseg:10AEo ... +unk_107DE db 4Eh ; N ; DATA XREF: dseg:1066o + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 95h ; • + db 95h ; • + db 96h ; – + db 82h ; ‚ + db 98h ; ˜ + db 5Eh ; ^ + db 81h ; + db 40h ; @ + db 81h ; + db 60h ; ` + db 8Fh ; + db 0F2h ; ò + db 93h ; “ + db 79h ; y + db 99h ; ™ + db 0D6h ; Ö + db 0E4h ; ä + db 0B6h ; ¶ + db 97h ; — + db 85h ; … + db 20h + db 20h + db 0 +aNo_2B@Focab@bE db 'No.2 @ ”Ž—í@`Eastern Wind ',0 ; DATA XREF: dseg:106Ao +aNo_3B@SheSInAT db 'No.3 @ She',27h,'s in a temper!! ',0 ; DATA XREF: dseg:106Eo +aNo_4B@EndOfDay db 'No.4 @ End of Daylight@ ',0 ; DATA XREF: dseg:1072o +aNo_5B@B@VtvVVV db 'No.5 @ @ ‚â‚Ý‚Ì‚¿‚©‚ç@@ ',0 ; DATA XREF: dseg:1076o +aNo_6B@b@b@b@b@ db 'No.6 @@@@@Œ¶–²ŠE@@@@ ',0 ; DATA XREF: dseg:107Ao +unk_108BC db 4Eh ; N ; DATA XREF: dseg:107Eo + db 6Fh ; o + db 2Eh ; . + db 37h ; 7 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 8Eh ; Ž + db 80h ; € + db 82h ; ‚ + db 0F0h ; ð + db 93h ; “ + db 71h ; q + db 82h ; ‚ + db 0B5h ; µ + db 82h ; ‚ + db 0C4h ; Ä + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 81h ; + db 40h ; @ + db 20h + db 20h + db 0 +aNo_8VVrvivmbav db 'No.8 ‚Ђà‚났A‚ނ炳‚«‚É‚à‚¦ ',0 ; DATA XREF: dseg:1082o +unk_10906 db 4Eh ; N ; DATA XREF: dseg:1086o + db 6Fh ; o + db 2Eh ; . + db 39h ; 9 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 40h ; @ + db 20h + db 20h + db 81h ; + db 40h ; @ + db 20h + db 97h ; — + db 0F6h ; ö + db 90h ; + db 46h ; F + db 83h ; ƒ + db 7Dh ; } + db 83h ; ƒ + db 57h ; W + db 83h ; ƒ + db 62h ; b + db 83h ; ƒ + db 4Eh ; N + db 20h + db 81h ; + db 40h ; @ + db 20h + db 20h + db 20h + db 20h + db 0 +unk_1092B db 4Eh ; N ; DATA XREF: dseg:108Ao + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 30h ; 0 + db 20h + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 40h ; @ + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 95h ; • + db 95h ; • + db 96h ; – + db 82h ; ‚ + db 98h ; ˜ + db 5Eh ; ^ + db 81h ; + db 40h ; @ + db 81h ; + db 60h ; ` + db 97h ; — + db 48h ; H + db 8Ch ; Œ + db 0B6h ; ¶ + db 97h ; — + db 90h ; + db 95h ; • + db 91h ; ‘ + db 20h + db 20h + db 0 +aNo_11CompleteD db 'No.11 Complete Darkness ',0 ; DATA XREF: dseg:108Eo +aNo_12B@Ggglgxg db 'No.12 @ ƒGƒLƒXƒgƒ‰ƒ‰ƒu ',0 ; DATA XREF: dseg:1092o +aNo_13RaoVVVVVV db 'No.13 íŽÔ‚Þ‚·‚ß‚Ì‚Ý‚é‚ä‚ß ',0 ; DATA XREF: dseg:1096o +aNo_14B@b@iucVR db 'No.14 @@‰“–ì‚ÌX@@@ ',0 ; DATA XREF: dseg:109Ao +unk_109E4 db 4Eh ; N ; DATA XREF: dseg:109Eo + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 35h ; 5 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 90h ; + db 0CCh ; Ì + db 98h ; ˜ + db 62h ; b + db 82h ; ‚ + db 0EDh ; í + db 82h ; ‚ + db 0F1h ; ñ + db 82h ; ‚ + db 0BEh ; ¾ + db 81h ; + db 5Bh ; [ + db 82h ; ‚ + db 0E7h ; ç + db 82h ; ‚ + db 0F1h ; ñ + db 82h ; ‚ + db 0C7h ; Ç + db 20h + db 20h + db 20h + db 20h + db 0 +aCvogcp_1Focar_ db '–¢Žg—p.1 ”Ž—í_ŽÐ‹«“à ',0 ; DATA XREF: dseg:10A2o +aCvogcp_2B@czco db '–¢Žg—p.2 @—z—Ž‚¿‚Ä @ ',0 ; DATA XREF: dseg:10A6o +aCvogcp_3B@xxcv db '–¢Žg—p.3 @••–‚I‰‰ @ ',0 ; DATA XREF: dseg:10AAo +unk_10A78 db 4Eh ; N ; DATA XREF: dseg:10DEo + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 81h ; + db 40h ; @ + db 96h ; – + db 0B2h ; ² + db 82h ; ‚ + db 0CDh ; Í + db 8Eh ; Ž + db 9Eh ; ž + db 8Bh ; ‹ + db 0F3h ; ó + db 82h ; ‚ + db 0F0h ; ð + db 89h ; ‰ + db 7Ah ; z + db 82h ; ‚ + db 0A6h ; ¦ + db 82h ; ‚ + db 0C4h ; Ä + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_2B@B@Select db 'No.2 @ @ Selection ',0 ; DATA XREF: dseg:10E2o +unk_10AC2 db 4Eh ; N ; DATA XREF: dseg:10E6o + db 6Fh ; o + db 2Eh ; . + db 33h ; 3 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 97h ; — + db 64h ; d + db 97h ; — + db 0F6h ; ö + db 92h ; ’ + db 6Bh ; k + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_4Reincarnat db 'No.4 Reincarnation ',0 ; DATA XREF: dseg:10EAo +aNo_5Dim_Dream db 'No.5 Dim. Dream ',0 ; DATA XREF: dseg:10EEo +unk_10B31 db 4Eh ; N ; DATA XREF: dseg:10F2o + db 6Fh ; o + db 2Eh ; . + db 36h ; 6 + db 20h + db 20h + db 20h + db 20h + db 20h + db 54h ; T + db 61h ; a + db 62h ; b + db 75h ; u + db 6Ch ; l + db 61h ; a + db 20h + db 72h ; r + db 61h ; a + db 73h ; s + db 61h ; a + db 81h ; + db 40h ; @ + db 81h ; + db 60h ; ` + db 8Bh ; ‹ + db 0F3h ; ó + db 94h ; ” + db 92h ; ’ + db 8Fh ; + db 0ADh ; ­ + db 8Fh ; + db 97h ; — + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_7B@Maniacal db 'No.7 @ Maniacal Princess ',0 ; DATA XREF: dseg:10F6o +aNo_8CPOBLostDr db 'No.8 –²ÁŽ¸ `Lost Dream ',0 ; DATA XREF: dseg:10FAo +aNo_9CMCvlyBDre db 'No.9 –²Œ¶—V‹Y `Dream War ',0 ; DATA XREF: dseg:10FEo +aNo_10Cvc@mirab db 'No.10 –‚–@ŒˆíI`Fight it out! ',0 ; DATA XREF: dseg:1102o +aNo_11B@SailorO db 'No.11 @ Sailor of Time ',0 ; DATA XREF: dseg:1106o +aNo_12Strawberr db 'No.12 Strawberry Crisis!! ',0 ; DATA XREF: dseg:110Ao +unk_10C34 db 4Eh ; N ; DATA XREF: dseg:110Eo + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 33h ; 3 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 94h ; ” + db 0F1h ; ñ + db 93h ; “ + db 9Dh ; + db 88h ; ˆ + db 0EAh ; ê + db 96h ; – + db 82h ; ‚ + db 96h ; – + db 40h ; @ + db 90h ; + db 0A2h ; ¢ + db 8Ah ; Š + db 45h ; E + db 98h ; ˜ + db 5Fh ; _ + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_14B@cvc@pri db 'No.14 @–‚–@àˆ¤ ',0 ; DATA XREF: dseg:1112o +aNo_15B@lviuvC db 'No.15 @‹v‰“‚Ì–² ',0 ; DATA XREF: dseg:1116o +unk_10CA3 db 4Eh ; N ; DATA XREF: dseg:111Ao + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 36h ; 6 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 93h ; “ + db 8Ch ; Œ + db 95h ; • + db 0FBh ; û + db 82h ; ‚ + db 0CCh ; Ì + db 90h ; + db 0C2h ;  + db 82h ; ‚ + db 0A2h ; ¢ + db 8Bh ; ‹ + db 0F3h ; ó + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_17IiiuvCumo db 'No.17 ‰i‰“‚Ì–žŒŽ ',0 ; DATA XREF: dseg:111Eo +aNo_18MapleDrea db 'No.18 Maple Dream... ',0 ; DATA XREF: dseg:1122o +unk_10D12 db 4Eh ; N ; DATA XREF: dseg:1126o + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 39h ; 9 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 97h ; — + db 0ECh ; ì + db 90h ; + db 6Ch ; l + db 82h ; ‚ + db 0CCh ; Ì + db 8Bh ; ‹ + db 78h ; x + db 93h ; “ + db 0FAh ; ú + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_20Pqcsgfgv db 'No.20 Ÿ—˜ƒfƒ‚ ',0 ; DATA XREF: dseg:112Ao +aNo_21GqbGagibG db 'No.21 ƒQ[ƒ€ƒI[ƒo[ ',0 ; DATA XREF: dseg:112Eo +aCvogcp_1OuvXc db '–¢Žg—p.1 Žž‚Ì•— ',0 ; DATA XREF: dseg:1132o +aCvogcp_2GxgBGG db '–¢Žg—p.2 ƒXƒ^[ƒ{ƒEƒhƒŠ[ƒ€ ',0 ; DATA XREF: dseg:1136o +aCvogcp_3Phanta db '–¢Žg—p.3 Phantasmagoria ',0 ; DATA XREF: dseg:113Ao +aGGcggglvCVs_0 db ' ƒ^ƒCƒgƒ‹‚É–ß‚é ',0 ; DATA XREF: dseg:113Eo +aNo_1MSzlBLotus db 'No.1 Œ¶‘z‹½ ` Lotus Land Story ',0 ; DATA XREF: dseg:1156o +aNo_2WitchingDr db 'No.2 Witching Dream ',0 ; DATA XREF: dseg:115Ao +aNo_3SeleneSLig db 'No.3 Selene',27h,'s light ',0 ; DATA XREF: dseg:115Eo +unk_10E84 db 4Eh ; N ; DATA XREF: dseg:1162o + db 6Fh ; o + db 2Eh ; . + db 34h ; 4 + db 20h + db 20h + db 20h + db 91h ; ‘ + db 95h ; • + db 8Fh ; + db 0FCh ; ü + db 90h ; + db 0EDh ; í + db 81h ; + db 40h ; @ + db 81h ; + db 60h ; ` + db 20h + db 44h ; D + db 65h ; e + db 63h ; c + db 6Fh ; o + db 72h ; r + db 61h ; a + db 74h ; t + db 69h ; i + db 6Fh ; o + db 6Eh ; n + db 20h + db 42h ; B + db 61h ; a + db 74h ; t + db 74h ; t + db 6Ch ; l + db 65h ; e + db 20h + db 0 +aNo_5BreakTheSa db 'No.5 Break the Sabbath ',0 ; DATA XREF: dseg:1166o +aNo_6NglLBScarl db 'No.6 g‹¿‹È ` Scarlet Phoneme ',0 ; DATA XREF: dseg:116Ao +aNo_7BadApple db 'No.7 Bad Apple!! ',0 ; DATA XREF: dseg:116Eo +aNo_8CRab@bPerd db 'No.8 —ìí@` Perdition crisis ',0 ; DATA XREF: dseg:1172o +aNo_9GagkgxgGgg db 'No.9 ƒAƒŠƒXƒ}ƒGƒXƒeƒ‰ ',0 ; DATA XREF: dseg:1176o +aNo_10Pnpcuyszl db 'No.10 ­—ãY‘z‹È@` Capriccio ',0 ; DATA XREF: dseg:117Ao +aNo_11RpvKab@bC db 'No.11 ¯‚ÌŠí@` Casket of Star ',0 ; DATA XREF: dseg:117Eo +aNo_12LotusLove db 'No.12 Lotus Love ',0 ; DATA XREF: dseg:1182o +aNo_13CVVslXBSl db 'No.13 –°‚ê‚é‹°•| `Sleeping Terror ',0 ; DATA XREF: dseg:1186o +aNo_14DreamLand db 'No.14 Dream Land ',0 ; DATA XREF: dseg:118Ao +aNo_15ChcB@bIna db 'No.15 —H–²@` Inanimate Dream ',0 ; DATA XREF: dseg:118Eo +unk_11040 db 4Eh ; N ; DATA XREF: dseg:1192o + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 36h ; 6 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 8Bh ; ‹ + db 0D6h ; Ö + db 82h ; ‚ + db 0B6h ; ¶ + db 82h ; ‚ + db 0B4h ; ´ + db 82h ; ‚ + db 0E9h ; é + db 82h ; ‚ + db 0F0h ; ð + db 82h ; ‚ + db 0A6h ; ¦ + db 82h ; ‚ + db 0C8h ; È + db 82h ; ‚ + db 0A2h ; ¢ + db 97h ; — + db 56h ; V + db 8Bh ; ‹ + db 59h ; Y + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_17GbgcghmSz db 'No.17 ƒƒCƒhŒ¶‘z@` Icemilk Magic ',0 ; DATA XREF: dseg:1196o +aNo_18Vivavvvvi db 'No.18 ‚©‚í‚¢‚¢ˆ«–‚@` Innocence ',0 ; DATA XREF: dseg:119Ao +aNo_19Days db 'No.19 Days ',0 ; DATA XREF: dseg:119Eo +aNo_20Peaceful db 'No.20 Peaceful ',0 ; DATA XREF: dseg:11A2o +aNo_21ArcadianD db 'No.21 Arcadian Dream ',0 ; DATA XREF: dseg:11A6o +aNo_22MSzvPzrl db 'No.22 Œ¶‘z‚ÌZl ',0 ; DATA XREF: dseg:11AAo +aCvogcp_1LotusR db '–¢Žg—p.1 Lotus Road ',0 ; DATA XREF: dseg:11AEo +aCvogcp_2Dreamy db '–¢Žg—p.2 Dreamy pilot ',0 ; DATA XREF: dseg:11B2o +aCvogcp_3Incomp db '–¢Žg—p.3 Incomplete Plot ',0 ; DATA XREF: dseg:11B6o +aCvogcp_4Border db '–¢Žg—p.4 Border Land ',0 ; DATA XREF: dseg:11BAo +aCvogcp_5MagicS db '–¢Žg—p.5 Magic Shop of Raspberry ',0 ; DATA XREF: dseg:11BEo +aCvogcp_6Cresce db '–¢Žg—p.6 Crescent Dream ',0 ; DATA XREF: dseg:11C2o +unk_11221 db 4Eh ; N ; DATA XREF: dseg:11CEo + db 6Fh ; o + db 2Eh ; . + db 31h ; 1 + db 20h + db 20h + db 20h + db 20h + db 20h + db 89h ; ‰ + db 0F6h ; ö + db 0E3h ; ã + db 59h ; Y + db 92h ; ’ + db 6Bh ; k + db 81h ; + db 40h ; @ + db 81h ; + db 60h ; ` + db 20h + db 4Dh ; M + db 79h ; y + db 73h ; s + db 74h ; t + db 69h ; i + db 63h ; c + db 20h + db 53h ; S + db 71h ; q + db 75h ; u + db 61h ; a + db 72h ; r + db 65h ; e + db 20h + db 20h + db 20h + db 0 +aNo_2DreamExpre db 'No.2 Dream Express ',0 ; DATA XREF: dseg:11D2o +aNo_3Cvc@rwb@bM db 'No.3 –‚–@w@` Magic Square ',0 ; DATA XREF: dseg:11D6o +unk_11290 db 4Eh ; N ; DATA XREF: dseg:11DAo + db 6Fh ; o + db 2Eh ; . + db 34h ; 4 + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 96h ; – + db 0B2h ; ² + db 91h ; ‘ + db 7Ah ; z + db 8Eh ; Ž + db 9Eh ; ž + db 8Bh ; ‹ + db 0F3h ; ó + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 20h + db 0 +aNo_5CUvb@bSpir db 'No.5 —ì“V@` Spiritual Heaven ',0 ; DATA XREF: dseg:11DEo +aNo_6RomanticCh db 'No.6 Romantic Children ',0 ; DATA XREF: dseg:11E2o +aNo_7GvgigxgGbg db 'No.7 ƒvƒ‰ƒXƒ`ƒbƒNƒ}ƒCƒ“ƒh ',0 ; DATA XREF: dseg:11E6o +aNo_8Gbgcgvglgp db 'No.8 ƒƒCƒvƒ‹ƒƒCƒY ',0 ; DATA XREF: dseg:11EAo +aNo_9LTfvCvc@BF db 'No.9 ‹Ö’f‚Ì–‚–@ ` Forbidden Magic',0 ; DATA XREF: dseg:11EEo +aNo_10RNgvPnpcb db 'No.10 ^g‚Ì­—@` Crimson Dead!!',0 ; DATA XREF: dseg:11F2o +aNo_11CarVsvPnp db 'No.11 — Ø‚è‚Ì­—@` Judas Kiss ',0 ; DATA XREF: dseg:11F6o +aNo_12TheLastJu db 'No.12 the Last Judgement ',0 ; DATA XREF: dseg:11FAo +aNo_13FVVlrlmB@ db 'No.13 ”ß‚µ‚«lŒ`@` Doll of Misery',0 ; DATA XREF: dseg:11FEo +aNo_14RvkevIVB@ db 'No.14 ¢ŠE‚̉ʂÄ@` World',27h,'s End ',0 ; DATA XREF: dseg:1202o +aNo_15R_sbmSzb@ db 'No.15 _˜bŒ¶‘z@` Infinite Being ',0 ; DATA XREF: dseg:1206o +aNo_16XsovlcvNs db 'No.16 •sŽv‹c‚Ì‘‚̃AƒŠƒX ',0 ; DATA XREF: dseg:120Ao +aNo_17TheGrimoi db 'No.17 the Grimoire of Alice ',0 ; DATA XREF: dseg:120Eo +aNo_18R_o db 'No.18 _ŽÐ ',0 ; DATA XREF: dseg:1212o +aNo_19Endless db 'No.19 Endless ',0 ; DATA XREF: dseg:1216o +aNo_20LviuvKyia db 'No.20 ‹v‰“‚ÌŠy‰€ ',0 ; DATA XREF: dseg:121Ao +aNo_21MysticDre db 'No.21 Mystic Dream ',0 ; DATA XREF: dseg:121Eo +aNo_22PeacefulR db 'No.22 Peaceful Romancer ',0 ; DATA XREF: dseg:1222o +aNo_23NVLxvcvPk db 'No.23 °‚Ì‹x‚ç‚ÞŠ ',0 ; DATA XREF: dseg:1226o +aR_00 db 'r_00',0 ; DATA XREF: dseg:1246o +aR_01 db 'r_01',0 ; DATA XREF: dseg:124Ao +aR_02 db 'r_02',0 ; DATA XREF: dseg:124Eo +aR_03 db 'r_03',0 ; DATA XREF: dseg:1252o +aR_04 db 'r_04',0 ; DATA XREF: dseg:1256o +aR_05 db 'r_05',0 ; DATA XREF: dseg:125Ao +aR_06 db 'r_06',0 ; DATA XREF: dseg:125Eo +aR_07 db 'r_07',0 ; DATA XREF: dseg:1262o +aR_08 db 'r_08',0 ; DATA XREF: dseg:1266o +aR_09 db 'r_09',0 ; DATA XREF: dseg:126Ao +aR_10 db 'r_10',0 ; DATA XREF: dseg:126Eo +aR_11 db 'r_11',0 ; DATA XREF: dseg:1272o +aR_12 db 'r_12',0 ; DATA XREF: dseg:1276o +aR_13 db 'r_13',0 ; DATA XREF: dseg:127Ao +aH_op db 'h_op',0 ; DATA XREF: dseg:12BEo sub_C490+330o ... +aH_st00 db 'h_st00',0 ; DATA XREF: dseg:12C2o dseg:142Ao +aH_st00b db 'h_st00b',0 ; DATA XREF: dseg:12C6o dseg:142Eo +aH_st01 db 'h_st01',0 ; DATA XREF: dseg:12CAo dseg:1432o +aH_st01b db 'h_st01b',0 ; DATA XREF: dseg:12CEo dseg:1436o +aH_st02 db 'h_st02',0 ; DATA XREF: dseg:12D2o dseg:143Ao +aH_st02b db 'h_st02b',0 ; DATA XREF: dseg:12D6o dseg:143Eo +aH_st03 db 'h_st03',0 ; DATA XREF: dseg:12DAo dseg:1442o +aH_st03b db 'h_st03b',0 ; DATA XREF: dseg:12DEo dseg:1446o +aH_st04 db 'h_st04',0 ; DATA XREF: dseg:12E2o dseg:1452o +aH_st04b db 'h_st04b',0 ; DATA XREF: dseg:12E6o dseg:1456o +aH_st05 db 'h_st05',0 ; DATA XREF: dseg:12EAo dseg:145Ao +aH_st05b db 'h_st05b',0 ; DATA XREF: dseg:12EEo dseg:145Eo +aH_end db 'h_end',0 ; DATA XREF: dseg:12F2o +aH_staff db 'h_staff',0 ; DATA XREF: dseg:12F6o dseg:1476o +aH_ng00 db 'h_ng00',0 ; DATA XREF: dseg:12FAo +aH_ng01 db 'h_ng01',0 ; DATA XREF: dseg:12FEo +aH_ng02 db 'h_ng02',0 ; DATA XREF: dseg:1302o +aY_op db 'y_op',0 ; DATA XREF: dseg:1336o +aY_select db 'y_select',0 ; DATA XREF: dseg:133Ao +aY_00mm db 'y_00mm',0 ; DATA XREF: dseg:133Eo +aY_01mm db 'y_01mm',0 ; DATA XREF: dseg:1342o +aY_02mm db 'y_02mm',0 ; DATA XREF: dseg:1346o +aY_03mm db 'y_03mm',0 ; DATA XREF: dseg:134Ao +aY_04mm db 'y_04mm',0 ; DATA XREF: dseg:134Eo +aY_05mm db 'y_05mm',0 ; DATA XREF: dseg:1352o +aY_06mm db 'y_06mm',0 ; DATA XREF: dseg:1356o +aY_dec db 'y_dec',0 ; DATA XREF: dseg:135Ao +aY_07mm db 'y_07mm',0 ; DATA XREF: dseg:135Eo +aY_08mm db 'y_08mm',0 ; DATA XREF: dseg:1362o +aY_demo1 db 'y_demo1',0 ; DATA XREF: dseg:1366o +aY_demo2 db 'y_demo2',0 ; DATA XREF: dseg:136Ao +aY_demo3 db 'y_demo3',0 ; DATA XREF: dseg:136Eo +aY_demo4 db 'y_demo4',0 ; DATA XREF: dseg:1372o +aY_demo5 db 'y_demo5',0 ; DATA XREF: dseg:1376o +aY_ed db 'y_ed',0 ; DATA XREF: dseg:137Ao +aY_score db 'y_score',0 ; DATA XREF: dseg:137Eo +aY_win db 'y_win',0 ; DATA XREF: dseg:1382o +aY_over db 'y_over',0 ; DATA XREF: dseg:1386o +aY_ng00 db 'y_ng00',0 ; DATA XREF: dseg:138Ao +aY_ng01 db 'y_ng01',0 ; DATA XREF: dseg:138Eo +aY_ng02 db 'y_ng02',0 ; DATA XREF: dseg:1392o +aG_op db 'g_op',0 ; DATA XREF: dseg:13AEo +aG_st00 db 'g_st00',0 ; DATA XREF: dseg:13B2o +aG_st10 db 'g_st10',0 ; DATA XREF: dseg:13B6o +aG_st00b db 'g_st00b',0 ; DATA XREF: dseg:13BAo +aG_st01 db 'g_st01',0 ; DATA XREF: dseg:13BEo +aG_st01b db 'g_st01b',0 ; DATA XREF: dseg:13C2o +aG_st02 db 'g_st02',0 ; DATA XREF: dseg:13C6o +aG_st02b db 'g_st02b',0 ; DATA XREF: dseg:13CAo +aG_st03 db 'g_st03',0 ; DATA XREF: dseg:13CEo +aG_st03c db 'g_st03c',0 ; DATA XREF: dseg:13D2o dseg:144Ao +aG_st03b db 'g_st03b',0 ; DATA XREF: dseg:13D6o +aG_st04 db 'g_st04',0 ; DATA XREF: dseg:13DAo +aG_st04b db 'g_st04b',0 ; DATA XREF: dseg:13DEo +aG_st05 db 'g_st05',0 ; DATA XREF: dseg:13E2o +aG_st05b db 'g_st05b',0 ; DATA XREF: dseg:13E6o +aG_st06 db 'g_st06',0 ; DATA XREF: dseg:13EAo dseg:1462o +aG_st06b db 'g_st06b',0 ; DATA XREF: dseg:13EEo dseg:1466o +aG_st06c db 'g_st06c',0 ; DATA XREF: dseg:13F2o +aG_end1 db 'g_end1',0 ; DATA XREF: dseg:13F6o +aG_end2 db 'g_end2',0 ; DATA XREF: dseg:13FAo +aG_staff db 'g_staff',0 ; DATA XREF: dseg:13FEo +aG_name db 'g_name',0 ; DATA XREF: dseg:1402o dseg:147Eo +aG_ng00 db 'g_ng00',0 ; DATA XREF: dseg:1406o +aG_ng01 db 'g_ng01',0 ; DATA XREF: dseg:140Ao +aG_ng02 db 'g_ng02',0 ; DATA XREF: dseg:140Eo +aG_ng03 db 'g_ng03',0 ; DATA XREF: dseg:1412o +aG_ng04 db 'g_ng04',0 ; DATA XREF: dseg:1416o +aG_ng05 db 'g_ng05',0 ; DATA XREF: dseg:141Ao +aSt03d db 'st03d',0 ; DATA XREF: dseg:144Eo +aEd00 db 'ed00',0 ; DATA XREF: dseg:146Ao +aEd01 db 'ed01',0 ; DATA XREF: dseg:146Eo +aEd02 db 'ed02',0 ; DATA XREF: dseg:1472o +aExed db 'exed',0 ; DATA XREF: dseg:147Ao +a_music0_txt db '_MUSIC0.TXT',0 +aMusic_pi db 'music.pi',0 ; DATA XREF: sub_C490+5Co +aMusic_dat db 'music.dat',0 ; DATA XREF: sub_C490+A9o +unk_117EB db 89h ; ‰ ; DATA XREF: sub_C490+306o + db 0F6h ; ö + db 0E3h ; ã + db 59h ; Y + db 92h ; ’ + db 6Bh ; k + db 31h ; 1 + db 2Eh ; . + db 64h ; d + db 61h ; a + db 74h ; t + db 0 + db 0 +aGensou_scr db 'GENSOU.SCR',0 ; DATA XREF: sub_C8E2+7Eo sub_C9BE+4o ... +aName db 'name',0 ; DATA XREF: sub_CC5C+Co +aHi01_pi db 'hi01.pi',0 ; DATA XREF: sub_CC5C+3Bo +aOp1_pi_1 db 'op1.pi',0 ; DATA XREF: sub_CC5C+DAo +aOp_1 db 'op',0 ; DATA XREF: sub_CC5C+124o +aScnum_bft db 'scnum.bft',0 ; DATA XREF: sub_CD94+8Bo +aHi_m_bft db 'hi_m.bft',0 ; DATA XREF: sub_CD94+94o + align 2 +aSlb1_pi db 'slb1.pi',0 ; DATA XREF: sub_D095+21o +aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0 + align 2 +word_11856 dw 0 ; DATA XREF: _atexit+5r + ; _atexit:loc_3B95r ... +off_11858 dd sub_3DA8 ; DATA XREF: sub_3DAD+29r _setvbuf+C0w ... +off_1185C dd sub_3DA8 ; DATA XREF: sub_3DAD+43r +off_11860 dd sub_3DA8 ; DATA XREF: sub_3DAD+47r + db 0 + db 0 +word_11866 dw 209h ; DATA XREF: seg000:43C1w seg000:43CBr +byte_11868 db 0 ; DATA XREF: seg000:43B2r + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 84h ; „ + db 28h ; ( + db 0 + db 0 +word_1187A dw 20Ah ; DATA XREF: seg000:43FAw seg000:4404r +byte_1187C db 1 ; DATA XREF: seg000:43EBr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 98h ; ˜ + db 28h ; ( + db 0 + db 0 + db 2 + db 2 +byte_11890 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 0ACh ; ¬ + db 28h ; ( + 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 0C0h ; À + db 28h ; ( + 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 0D4h ; Ô + db 28h ; ( + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_119F4 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_11A1E dw 0 ; DATA XREF: __IOERROR:loc_3FD9w + ; __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_11A7A db 0 ; DATA XREF: seg000:41A8o + db 0 + db 0 + db 0 +word_11A7E dw 0 ; DATA XREF: seg000:40B0r +word_11A80 dw 4075h ; DATA XREF: set_new_handler(void (*)(void))+Cr + ; set_new_handler(void (*)(void))+1Fw ... +seg_11A82 dw seg seg000 ; DATA XREF: set_new_handler(void (*)(void))+8r + ; set_new_handler(void (*)(void))+1Bw ... +aOutOfMemory db 'Out of memory',0 +word_11A92 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_11BA8 dw 0 ; DATA XREF: __ExceptInit+28w +word_11BAA 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_11CBE dw 0 ; DATA XREF: seg000:4780w seg000:4793w ... +word_11CC0 dw 0 ; DATA XREF: sub_4C26+22r sub_4C4C+3Bw +byte_11CC2 db 0 ; DATA XREF: seg000:4F7Br seg000:4F93w +byte_11CC3 db 0 ; DATA XREF: seg000:4F16r seg000:4F29w +word_11CC4 dw 0 ; DATA XREF: seg000:4E83r seg000:4EB9w +word_11CC6 dw 0 ; DATA XREF: seg000:4E7Fr + ; seg000:loc_4EB3w + db 0 + db 0 + db 0 + db 0 +word_11CCC dw 0 ; DATA XREF: seg000:4D9Dr seg000:4DD3w ... +word_11CCE dw 0 ; DATA XREF: seg000:4D99r + ; seg000:loc_4DCDw ... + db 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_11CE8 dd 0 ; DATA XREF: seg000:50F7w sub_510B+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_11CFC dw 0 ; DATA XREF: _setvbuf:loc_5BDCr + ; _setvbuf+4Bw +word_11CFE dw 0 ; DATA XREF: _setvbuf:loc_5BC6r + ; _setvbuf+35w +word_11D00 dw 30h ; DATA XREF: __IOERROR+25r +aNotype db '',0 +aBccxh1 db '**BCCxh1',0 +dword_11D14 dd 0 ; DATA XREF: _getenv+21r seg000:9C46w ... +word_11D18 dw 1 ; DATA XREF: seg003:0A49r seg003:0A52w +word_11D1A dw 0 ; DATA XREF: seg003:0A66r seg003:0A6Fw +word_11D1C dw 1 ; DATA XREF: seg003:0A83r seg003:0A8Cw +word_11D1E dw 3Fh ; DATA XREF: sub_EBD4+13r seg003:0AA0r ... +word_11D20 dw 40h ; DATA XREF: sub_EBD4+19r seg003:0ABDr ... +word_11D22 dw 3Fh ; DATA XREF: seg003:073Fr seg003:07A7r ... +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_11D7E db 0 ; DATA XREF: sub_A002+2r sub_A002+9w ... +byte_11D7F db 0 ; DATA XREF: sub_A002+Er +aPath db 'PATH',0 + db '/\',0 + db 0 + db 2Eh ; . + db 42h ; B + db 41h ; A + db 54h ; T + db 0 + db 2Eh ; . + db 43h ; C + db 4Fh ; O + db 4Dh ; M + db 0 + db 2Eh ; . + db 45h ; E + db 58h ; X + db 45h ; E + db 0 + db 2Eh ; . + db 42h ; B + db 41h ; A + db 54h ; T + db 0 + db 43h ; C + db 4Fh ; O + db 4Dh ; M + db 53h ; S + db 50h ; P + db 45h ; E + db 43h ; C + db 0 + db 2Fh ; / + db 63h ; c + db 0 + db 1 + db 20h + dd @string@contains$xqnxc ; string::contains(char *) + db 0 + db 2 + db 83h ; ƒ + db 43h ; C + db 0 + db 0 + db 0 + db 10h + db 6Fh ; o + db 47h ; G + db 0 + db 0 + db 0 + db 0Fh + db 0C2h ;  + db 50h ; P + db 0 + db 0 + db 0 + db 10h + db 30h ; 0 + db 9Ch ; œ + db 0 + db 0 + db 1 + db 20h + dd loc_4223 +dword_11DCC dd 0 ; DATA XREF: sub_A39C+5r + ; sub_A39C:loc_A3CFr ... +byte_11DD0 db 0 ; DATA XREF: sub_A968+40r sub_A9D6+FEw ... + align 2 +word_11DD2 dw 0 ; DATA XREF: sub_A968+Ar sub_A968+55r ... +byte_11DD4 db 0 ; DATA XREF: sub_A9D6+10w sub_A9D6+50w ... +byte_11DD5 db 0 ; DATA XREF: sub_ABCF+Bw sub_ABCF+4Bw ... +word_11DD6 dw 0 ; DATA XREF: seg000:2C0Er +word_11DD8 dw 0 ; DATA XREF: seg000:2BEBr + align 4 +word_11DDC dw 0 ; DATA XREF: seg000:2BDDr +word_11DDE dw 0 ; DATA XREF: seg000:2C12r +word_11DE0 dw 0 ; DATA XREF: seg000:2BF2r + align 4 +word_11DE4 dw 0 ; DATA XREF: seg000:2BE4r + db 0 + db 0 + db 0 + db 0 +dword_11DEA dd 0 ; DATA XREF: sub_8CC+17r sub_9A4+2Er ... +word_11DEE dw 0 ; DATA XREF: sub_878+32w sub_878+46w ... +word_11DF0 dw 0 ; DATA XREF: sub_878+35w sub_878+49w ... +word_11DF2 dw 0 ; DATA XREF: sub_878+29w sub_8CC+9r ... +word_11DF4 dw 0 ; DATA XREF: sub_878+26w sub_8CC+Cr ... +word_11DF6 dw 0 ; DATA XREF: sub_878+2Cw sub_948+2Dw ... +word_11DF8 dw 0 ; DATA XREF: sub_878+2Fw + ; sub_8CC:loc_8FDw ... +word_11DFA dw 0 ; DATA XREF: sub_DF8E+5w + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_11E2E dw 0 ; DATA XREF: sub_2162+1Ew seg000:21E6w ... +word_11E30 dw 0 ; DATA XREF: sub_2162+21w seg000:21EAw +word_11E32 dw 0 ; DATA XREF: sub_2162+37w sub_2210+2Br +word_11E34 dw 0 ; DATA XREF: sub_2162+3Aw sub_2210+27r +word_11E36 dw 0 ; DATA XREF: seg000:21E0w +word_11E38 dw 0 ; DATA XREF: sub_22D4+Fw sub_2336+18r ... +word_11E3A dw 0 ; DATA XREF: sub_209E+20r sub_22D4+12w ... +word_11E3C dw 0 ; DATA XREF: sub_22D4+15w sub_2336+24r ... +word_11E3E dw 0 ; DATA XREF: sub_2088+7w sub_209E+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 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_12640 dw 0 ; DATA XREF: seg000:2750w seg000:27DFr + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + 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_12742 db 0 ; DATA XREF: sub_D322+2w sub_D350+1Ew + align 2 +word_12744 dw 0 ; DATA XREF: sub_2F92+21w sub_2FD6+Fr +word_12746 dw 0 ; DATA XREF: sub_2F92+1Dw sub_2FD6+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 + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +dword_1281A dd ? ; DATA XREF: sub_D894+D0w sub_D96E+15r ... +unk_1281E db ? ; ; DATA XREF: sub_DBBE+51o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +word_1282C dw ? ; DATA XREF: sub_DD10+6w sub_DD97+28r +word_1282E dw ? ; DATA XREF: sub_DD10+22w sub_DD97+2Cr ... +word_12830 dw ? ; DATA XREF: sub_DD10+1Ew sub_DD10+3Br ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_12A72 dw ? ; DATA XREF: sub_A4CF:loc_A4FBr + ; sub_A9D6:loc_AA2Br ... +byte_12A74 db ? ; DATA XREF: sub_DF96+E6w + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_12E76 db ? ; DATA XREF: sub_E238+29w sub_E238+46w + align 2 +unk_12E78 db ? ; ; DATA XREF: seg000:3905o + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_12EF8 dw ? ; DATA XREF: sub_37B8+61w sub_3858+29r ... +word_12EFA dw ? ; DATA XREF: sub_37B8+67w seg000:38C0r ... +word_12EFC dw ? ; DATA XREF: sub_37B8+2Fw sub_37B8+40r ... +word_12EFE dw ? ; DATA XREF: sub_E2D8:loc_E30Fw + ; sub_E2D8:loc_E323r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_12F30 dw ? ; DATA XREF: sub_B077+Er + ; sub_B077:loc_B0CDr ... +word_12F32 dw ? ; DATA XREF: sub_B14A:loc_B1A8r + ; sub_B234+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 ? ; +word_12FE0 dw ? ; DATA XREF: sub_1354+10Bw + ; sub_1354+15Dr ... +word_12FE2 dw ? ; DATA XREF: sub_1354+11Bw +dword_12FE4 dd ? ; DATA XREF: sub_1354+150w + ; sub_1354+191r ... +word_12FE8 dw ? ; DATA XREF: sub_1354+12Dw + ; sub_1354:loc_17DEr +word_12FEA dw ? ; DATA XREF: sub_1354+130w + ; sub_1354+159w ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_130EC db ? ; DATA XREF: sub_1354+8Cw + ; sub_1354+16Dw + align 2 +word_130EE dw ? ; DATA XREF: sub_1354+21w + ; sub_1354+4A0r ... +word_130F0 dw ? ; DATA XREF: sub_1354+34w + ; sub_1354+1B1r ... +byte_130F2 db ? ; DATA XREF: sub_1354+25w + ; sub_1354+1A3r ... +byte_130F3 db ? ; DATA XREF: sub_1354+2Aw + ; sub_1354+1A7r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_13DCC db ? ; ; DATA XREF: sub_C09D+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_13E94 dw ? ; DATA XREF: sub_C490+13w sub_C490+89r ... +byte_13E96 db ? ; DATA XREF: sub_C3F9+3r sub_C3F9+27r ... + align 2 +word_13E98 dw ? ; DATA XREF: sub_BFB7+Cw sub_BFB7+1Dr ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +unk_13EAA db ? ; ; DATA XREF: sub_C2CF+35o sub_C32D+Fo + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_1403A dw ? ; DATA XREF: sub_BE79+Er sub_C490+7w ... +word_1403C dw ? ; DATA XREF: sub_BE79+91r sub_C490+Dw ... +word_1403E dw ? ; DATA XREF: sub_BF4D:loc_BF6Br + ; sub_C490+22w ... +byte_14040 db ? ; DATA XREF: sub_C7D5+1Fr sub_C7D5+32r ... +byte_14041 db ? ; DATA XREF: sub_C7D5+11r sub_C87E+2Dw ... +word_14042 dw ? ; DATA XREF: sub_C7D5+4Er sub_C87E+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 ? ; +byte_1409E db ? ; DATA XREF: sub_C8E2:loc_C8EFw + ; sub_CD94+28r + align 2 +byte_140A0 db ? ; DATA XREF: sub_C7D5+72r sub_C7D5+85r +byte_140A1 db ? ; DATA XREF: sub_C7D5+64r +byte_140A2 db ? ; DATA XREF: sub_C7D5+A1r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_14101 db ? ; DATA XREF: sub_C9BE+1Fr sub_CBDC+56r ... + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; +byte_14116 db ? ; DATA XREF: sub_A5F6:loc_A653r + ; sub_A968:loc_A998r ... + align 2 +word_14118 dw ? ; DATA XREF: sub_CEFF+6r sub_CEFF+62r ... +byte_1411A db ? ; DATA XREF: sub_CEFF+E9r + ; sub_CEFF+162r ... + db ? ; + db ? ; + db ? ; + db ? ; +byte_1411F db ? ; DATA XREF: sub_A4CF+33r +byte_14120 db ? ; DATA XREF: sub_A4CF+3Ar +byte_14121 db ? ; DATA XREF: sub_A4CF+41r +byte_14122 db ? ; DATA XREF: sub_A4CF+48r + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + db ? ; + 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_141A8 dw ? ; DATA XREF: seg000:4F23w +word_141AA dw ? ; DATA XREF: seg000:4F1Dw + dd 0 +word_141B0 dw ? ; DATA XREF: seg000:4EC3r seg000:4F90w ... +word_141B2 dw ? ; DATA XREF: seg000:4EBFr seg000:4F8Cw ... +dword_141B4 dd ? ; DATA XREF: sub_8069+ACw sub_8069+C2r ... +dword_141B8 dd ? ; DATA XREF: __ExceptionHandler+2BEw + ; __ExceptionHandler+2D1r ... + dd 0 +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